From b9579245144ea9974fa6bab5a9b279fe264a5c27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=87=91=E6=B5=B7=E6=B4=8B?= Date: Wed, 15 Nov 2023 15:12:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=91=E9=80=81=E4=BB=A3?= =?UTF-8?q?=E5=8A=9E=E6=8E=A5=E5=8F=A3=E5=92=8C=E6=96=B0=E5=A2=9E=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E4=B8=9A=E5=8A=A1=E7=BC=96=E7=A0=81=E5=92=8C=E6=A8=A1?= =?UTF-8?q?=E7=89=88=E7=BC=96=E7=A0=81=E5=AE=8C=E6=88=90=E5=BE=85=E5=8A=9E?= =?UTF-8?q?=20=E5=92=8C=20=E5=8F=96=E6=B6=88=E5=BE=85=E5=8A=9E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PendingMessageNewController.java | 14 +++++++- .../service/PendingMessageNewService.java | 20 ++++++++++- .../impl/PendingMessageNewServiceImpl.java | 34 +++++++++++++++++-- .../pending/client/PendingMessageClient.java | 22 +++++++++++- .../PendingMessageClientFallback.java | 16 ++++++++- .../request/CompleteMessageRequest.java | 32 +++++++++++++++++ .../response/PushPendingMessageDTO.java | 31 +++++++++++++++++ 7 files changed, 163 insertions(+), 6 deletions(-) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/CompleteMessageRequest.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PushPendingMessageDTO.java diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java index b1cb56bc..f2ede6ab 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/PendingMessageNewController.java @@ -7,6 +7,7 @@ import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam; import cn.axzo.msg.center.message.service.PendingMessageNewService; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.PendingMessageClient; +import cn.axzo.msg.center.service.pending.request.CompleteMessageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessageCountUncompletedRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; @@ -15,6 +16,7 @@ import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.service.pending.response.PendingMessageStatisticResponse; import cn.azxo.framework.common.model.CommonResponse; +import cn.axzo.msg.center.service.pending.response.PushPendingMessageDTO; import cn.azxo.framework.common.model.Page; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.RestController; @@ -73,7 +75,7 @@ public class PendingMessageNewController implements PendingMessageClient { } @Override - public CommonResponse push(PendingMessagePushRequest request) { + public CommonResponse> push(PendingMessagePushRequest request) { return CommonResponse.success(pendingMessageNewService.push(PendingMessagePushParam.from(request))); } @@ -86,4 +88,14 @@ public class PendingMessageNewController implements PendingMessageClient { public CommonResponse revoke(String requestNo) { return CommonResponse.success(pendingMessageNewService.revoke(requestNo)); } + + @Override + public CommonResponse completeByTemplateCodeBizCode(CompleteMessageRequest param) { + return CommonResponse.success(pendingMessageNewService.completeByTemplateCodeBizCode(param)); + } + + @Override + public CommonResponse revokeByTemplateCodeBizCode(CompleteMessageRequest param) { + return CommonResponse.success(pendingMessageNewService.revokeByTemplateCodeBizCode(param)); + } } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java index b45e0b6a..56897ad8 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/PendingMessageNewService.java @@ -2,9 +2,11 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; import cn.axzo.msg.center.message.domain.dto.PendingMessageStatisticDTO; +import cn.axzo.msg.center.service.pending.response.PushPendingMessageDTO; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; +import cn.axzo.msg.center.service.pending.request.CompleteMessageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessageQueryRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; @@ -69,7 +71,7 @@ public interface PendingMessageNewService { * @param param 代办核心参数 * @return 代办唯一标识 */ - String push(PendingMessagePushParam param); + List push(PendingMessagePushParam param); /** * 完成代办 @@ -86,4 +88,20 @@ public interface PendingMessageNewService { * @return 成功返回 {@code true} 失败返回 {@code false} */ Boolean revoke(String requestNo); + + /** + * 通过业务编码和模版编码完成代办 + * + * @param param + * @return 成功返回 {@code true} 失败返回 {@code false} + */ + Boolean completeByTemplateCodeBizCode(CompleteMessageRequest param); + + /** + * 通过业务编码和模版编码撤销代办 + * + * @param param + * @return 成功返回 {@code true} 失败返回 {@code false} + */ + Boolean revokeByTemplateCodeBizCode(CompleteMessageRequest param); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java index 5219794e..e1eff269 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/PendingMessageNewServiceImpl.java @@ -13,6 +13,8 @@ import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO; import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO; import cn.axzo.msg.center.message.domain.dto.PendingMessageDTO; import cn.axzo.msg.center.message.domain.dto.PendingMessageStatisticDTO; +import cn.axzo.msg.center.service.pending.request.CompleteMessageRequest; +import cn.axzo.msg.center.service.pending.response.PushPendingMessageDTO; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeStatisticParam; import cn.axzo.msg.center.message.domain.param.PendingMessagePushParam; import cn.axzo.msg.center.message.service.MessageGroupNodeService; @@ -160,7 +162,7 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { } @Override - public String push(PendingMessagePushParam param) { + public List push(PendingMessagePushParam param) { MessageTemplateDTO msgTemplate = messageTemplateNewService .queryByTemplateCode(param.getTemplateCode()) .orElseThrow(() -> new ServiceException("not found message template.")); @@ -178,7 +180,11 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { List record = convert(param, msgTemplate, requestNo, workspace); pendingMessageRecordDao.saveBatch(record); // TODO 消息推送 @luofu - return requestNo; + return record.stream().map(e -> PushPendingMessageDTO.builder() + .executorId(e.getExecutorId()) + .executorPersonId(e.getExecutorPersonId()) + .requestNo(e.getRequestNo()) + .build()).collect(Collectors.toList()); } @Override @@ -211,6 +217,30 @@ public class PendingMessageNewServiceImpl implements PendingMessageNewService { .update(); } + @Override + public Boolean completeByTemplateCodeBizCode(CompleteMessageRequest param) { + log.info("the [{}] record is completeByTemplateCodeBizCode retract.", param); + return pendingMessageRecordDao.lambdaUpdate() + .set(PendingMessageRecord::getState, PendingMessageStateEnum.COMPLETED) + .eq(PendingMessageRecord::getTemplateCode, param.getTemplateCode()) + .eq(PendingMessageRecord::getBizCode, param.getBizCode()) + .eq(PendingMessageRecord::getState, PendingMessageStateEnum.HAS_BEEN_SENT) + .eq(PendingMessageRecord::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .update(); + } + + @Override + public Boolean revokeByTemplateCodeBizCode(CompleteMessageRequest param) { + log.info("the [{}] record is revokeByTemplateCodeBizCode retract.", param); + return pendingMessageRecordDao.lambdaUpdate() + .set(PendingMessageRecord::getState, PendingMessageStateEnum.RETRACT) + .eq(PendingMessageRecord::getTemplateCode, param.getTemplateCode()) + .eq(PendingMessageRecord::getBizCode, param.getBizCode()) + .eq(PendingMessageRecord::getState, PendingMessageStateEnum.HAS_BEEN_SENT) + .eq(PendingMessageRecord::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .update(); + } + private PendingMessageDTO convert(PendingMessageRecord pendingMessageRecord, List messageTemplates) { PendingMessageDTO pendingMessage = PendingMessageDTO.from(pendingMessageRecord); // 对应模板的路由策略 diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java index d762987e..203f77d4 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/PendingMessageClient.java @@ -2,6 +2,7 @@ package cn.axzo.msg.center.service.pending.client; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.fallback.PendingMessageClientFallback; +import cn.axzo.msg.center.service.pending.request.CompleteMessageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessageCountUncompletedRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; @@ -9,6 +10,7 @@ import cn.axzo.msg.center.service.pending.request.PendingMessageQueryRequest; import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.service.pending.response.PendingMessageStatisticResponse; +import cn.axzo.msg.center.service.pending.response.PushPendingMessageDTO; import cn.azxo.framework.common.model.CommonResponse; import cn.azxo.framework.common.model.Page; import org.springframework.cloud.openfeign.FeignClient; @@ -89,7 +91,7 @@ public interface PendingMessageClient { * @return 代办唯一标识 */ @PostMapping(value = "/pending-message/push", produces = {MediaType.APPLICATION_JSON_VALUE}) - CommonResponse push(@RequestBody @Valid PendingMessagePushRequest request); + CommonResponse> push(@RequestBody @Valid PendingMessagePushRequest request); /** * 完成代办 @@ -108,4 +110,22 @@ public interface PendingMessageClient { */ @PostMapping(value = "/pending-message/revoke", produces = {MediaType.APPLICATION_JSON_VALUE}) CommonResponse revoke(@RequestParam("requestNo") String requestNo); + + /** + * 通过模版编号和业务编号完成代办 + * + * @param param + * @return + */ + @PostMapping(value = "/pending-message/completeByTemplateCodeBizCode", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse completeByTemplateCodeBizCode(@RequestBody @Valid CompleteMessageRequest param); + + /** + * 通过模版编号和业务编号撤销代办 + * + * @param param + * @return 成功返回 {@code true} 失败返回 {@code false} + */ + @PostMapping(value = "/pending-message/revokeByTemplateCodeBizCode", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse revokeByTemplateCodeBizCode(@RequestBody @Valid CompleteMessageRequest param); } \ No newline at end of file diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java index 28536f19..30f4caf7 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/client/fallback/PendingMessageClientFallback.java @@ -2,6 +2,7 @@ package cn.axzo.msg.center.service.pending.client.fallback; import cn.axzo.msg.center.service.enums.TerminalTypeEnum; import cn.axzo.msg.center.service.pending.client.PendingMessageClient; +import cn.axzo.msg.center.service.pending.request.CompleteMessageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessageCountUncompletedRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePageRequest; import cn.axzo.msg.center.service.pending.request.PendingMessagePushRequest; @@ -9,6 +10,7 @@ import cn.axzo.msg.center.service.pending.request.PendingMessageQueryRequest; import cn.axzo.msg.center.service.pending.request.PendingMessageStatisticRequest; import cn.axzo.msg.center.service.pending.response.PendingMessageResponse; import cn.axzo.msg.center.service.pending.response.PendingMessageStatisticResponse; +import cn.axzo.msg.center.service.pending.response.PushPendingMessageDTO; import cn.azxo.framework.common.model.CommonResponse; import cn.azxo.framework.common.model.Page; import lombok.extern.slf4j.Slf4j; @@ -59,7 +61,7 @@ public class PendingMessageClientFallback implements PendingMessageClient { } @Override - public CommonResponse push(PendingMessagePushRequest request) { + public CommonResponse> push(PendingMessagePushRequest request) { log.error("fall back while push pending message. request:{}", request); return CommonResponse.error("fall back while push pending message"); } @@ -75,4 +77,16 @@ public class PendingMessageClientFallback implements PendingMessageClient { log.error("fall back while revoking pending message. msgIdentityCode:[{}]", msgIdentityCode); return CommonResponse.error("fall back while revoking pending message"); } + + @Override + public CommonResponse completeByTemplateCodeBizCode(CompleteMessageRequest param) { + log.error("fall back while completing pending message by biz code. request:[{}]", param); + return CommonResponse.error("fall back while completing pending message by biz code"); + } + + @Override + public CommonResponse revokeByTemplateCodeBizCode(CompleteMessageRequest param) { + log.error("fall back while revoking pending message by biz code. msgIdentityCode:[{}]", param); + return CommonResponse.error("fall back while revoking pending message by biz code"); + } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/CompleteMessageRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/CompleteMessageRequest.java new file mode 100644 index 00000000..211b99d2 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/request/CompleteMessageRequest.java @@ -0,0 +1,32 @@ +package cn.axzo.msg.center.service.pending.request; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotNull; +import java.io.Serializable; + +/** + * @author haiyangjin + * @date 2023/11/15 + */ +@Data +@Builder +@AllArgsConstructor +@NoArgsConstructor +public class CompleteMessageRequest implements Serializable { + /** + * 关联业务主键 + */ + @NotNull(message = "bizCode is required") + private String bizCode; + + /** + * 模版code + */ + @NotNull(message = "templateCode is required") + private String templateCode; + +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PushPendingMessageDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PushPendingMessageDTO.java new file mode 100644 index 00000000..400bd239 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/pending/response/PushPendingMessageDTO.java @@ -0,0 +1,31 @@ +package cn.axzo.msg.center.service.pending.response; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +/** + * @author haiyangjin + * @date 2023/11/15 + */ +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class PushPendingMessageDTO { + /** + * 请求批次号 + */ + private String requestNo; + + /** + * 执行者ID + */ + private Long executorId; + + /** + * 执行者的自然人ID + */ + private Long executorPersonId; +}