REQ-3581: 避免形成无限循环

This commit is contained in:
yanglin 2025-02-28 09:09:19 +08:00
parent 8e099c4502
commit 04a43f8820
6 changed files with 49 additions and 16 deletions

View File

@ -1,11 +1,11 @@
package cn.axzo.nanopart.ess.api.enums; package cn.axzo.nanopart.ess.api.enums;
import java.util.Arrays;
import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.Event;
import lombok.Getter; import lombok.Getter;
import java.util.Arrays;
/** /**
* @Author zr * @Author zr
* @Date 2024/3/19 18:01 * @Date 2024/3/19 18:01
@ -15,7 +15,6 @@ import java.util.Arrays;
public enum MQEvent { public enum MQEvent {
ESS_CONTRACT_STATE_CHANGE("nanopart", "ess-contract-state-change", "腾讯电子签合同状态变化"), ESS_CONTRACT_STATE_CHANGE("nanopart", "ess-contract-state-change", "腾讯电子签合同状态变化"),
ESS_CONTRACT_DOWNLOAD_PDF("nanopart", "ess-contract-download-pdf", "腾讯电子签合同下载PDF"),
; ;
private final String model; private final String model;

View File

@ -183,6 +183,10 @@ public class EssService {
public void saveContractSnapshot(SaveContractSnapshotRequest request) { public void saveContractSnapshot(SaveContractSnapshotRequest request) {
essLogDao.logRequest("saveContractSnapshot", request.getEssContractId(), request); essLogDao.logRequest("saveContractSnapshot", request.getEssContractId(), request);
EssContract contract = essContractDao.getOrThrow(request.getEssContractId()); EssContract contract = essContractDao.getOrThrow(request.getEssContractId());
if (contract.isSavedOnOss() && !request.isRetryDownload()) {
log.info("合同已保存快照, contract={}", contract);
return;
}
contract.getOrCreateExt().setSaveContractSnapshotArbitrarily(true); contract.getOrCreateExt().setSaveContractSnapshotArbitrarily(true);
essContractDao.updateExt(contract); essContractDao.updateExt(contract);
maybeScheduleDownloadContractPDF(contract, request.isRetryDownload()); maybeScheduleDownloadContractPDF(contract, request.isRetryDownload());

View File

@ -1,21 +1,20 @@
package cn.axzo.nanopart.ess.server.ess.mq; package cn.axzo.nanopart.ess.server.ess.mq;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import com.alibaba.fastjson.JSON;
import cn.axzo.framework.rocketmq.Event; import cn.axzo.framework.rocketmq.Event;
import cn.axzo.framework.rocketmq.EventConsumer; import cn.axzo.framework.rocketmq.EventConsumer;
import cn.axzo.framework.rocketmq.EventHandler; import cn.axzo.framework.rocketmq.EventHandler;
import cn.axzo.nanopart.ess.api.enums.MQEvent;
import cn.axzo.nanopart.ess.api.mq.EssContractDownloadPDFEvent; import cn.axzo.nanopart.ess.api.mq.EssContractDownloadPDFEvent;
import cn.axzo.nanopart.ess.server.dao.EssContractDao; import cn.axzo.nanopart.ess.server.dao.EssContractDao;
import cn.axzo.nanopart.ess.server.entity.EssContract; import cn.axzo.nanopart.ess.server.entity.EssContract;
import cn.axzo.nanopart.ess.server.ess.EssService; import cn.axzo.nanopart.ess.server.ess.EssService;
import com.alibaba.fastjson.JSON;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component;
import java.util.Collections;
/** /**
* *
@ -45,8 +44,7 @@ public class DownloadContractHandler implements EventHandler, InitializingBean {
@Override @Override
public void afterPropertiesSet() { public void afterPropertiesSet() {
eventConsumer.registerHandlers(Collections.singletonList(MQEvent.ESS_CONTRACT_DOWNLOAD_PDF.getEventCode()), eventConsumer.registerHandler(InternalMQEvent.ESS_CONTRACT_DOWNLOAD_PDF.getEventCode(), this);
this);
} }
} }

View File

@ -47,7 +47,7 @@ public class EssBroadcaster {
message.setRetryDownload(retryDownload); message.setRetryDownload(retryDownload);
// @formatter:off // @formatter:off
eventProducer.send(Event.builder() eventProducer.send(Event.builder()
.eventCode(MQEvent.ESS_CONTRACT_DOWNLOAD_PDF.getEventCode()) .eventCode(InternalMQEvent.ESS_CONTRACT_DOWNLOAD_PDF.getEventCode())
.shardingKey(contract.getEssContractId()) .shardingKey(contract.getEssContractId())
.targetId(contract.getEssContractId()) .targetId(contract.getEssContractId())
.targetType("ess-contract") .targetType("ess-contract")

View File

@ -0,0 +1,35 @@
package cn.axzo.nanopart.ess.server.ess.mq;
import java.util.Arrays;
import cn.axzo.framework.rocketmq.Event;
import lombok.Getter;
/**
* @Author zr
* @Date 2024/3/19 18:01
* @Description
**/
@Getter
public enum InternalMQEvent {
ESS_CONTRACT_DOWNLOAD_PDF("nanopart", "ess-contract-download-pdf", "腾讯电子签合同下载PDF"),
;
private final String model;
private final String tag;
private final String desc;
private final Event.EventCode eventCode;
InternalMQEvent(String model, String tag, String desc) {
this.eventCode = Event.EventCode.builder().module(model).name(tag).build();
this.model = model;
this.tag = tag;
this.desc = desc;
}
public static InternalMQEvent getByName(String name) {
return Arrays.stream(InternalMQEvent.values()).filter(item -> item.name().equals(name)).findFirst().orElse(null);
}
}

View File

@ -1,8 +1,6 @@
package cn.axzo.nanopart.ess.server.ess.mq; package cn.axzo.nanopart.ess.server.ess.mq;
import java.util.Collections;
import org.springframework.beans.factory.InitializingBean; import org.springframework.beans.factory.InitializingBean;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
@ -76,7 +74,6 @@ public class PersonResignHandler implements EventHandler, InitializingBean {
@Override @Override
public void afterPropertiesSet() { public void afterPropertiesSet() {
eventConsumer.registerHandlers(Collections.singletonList(Event.EventCode.from("org-user:org-user-movement")), eventConsumer.registerHandler(Event.EventCode.from("org-user:org-user-movement"), this);
this);
} }
} }