From 957b5678d979940854db1fe7eb9c4ee834e07a32 Mon Sep 17 00:00:00 2001 From: 3y Date: Mon, 21 Aug 2023 21:42:36 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E8=B4=A3=E4=BB=BB=E9=93=BE=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=A8=A1=E5=BC=8F=20=E4=BC=98=E5=8C=96=20Task?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=99=A8=E7=9A=84=E6=B5=81=E7=A8=8B=E9=80=BB?= =?UTF-8?q?=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java3y/austin/common/domain/TaskInfo.java | 3 +- .../austin/common/enums/AnchorState.java | 2 + .../common}/pipeline/BusinessProcess.java | 2 +- .../common}/pipeline/ProcessContext.java | 2 +- .../common}/pipeline/ProcessController.java | 11 +-- .../common/pipeline}/ProcessException.java | 3 +- .../austin/common}/pipeline/ProcessModel.java | 2 +- .../common}/pipeline/ProcessTemplate.java | 2 +- .../DeduplicationAction.java} | 27 ++++++-- .../DiscardAction.java} | 30 ++++---- .../handler/action/SendMessageAction.java | 40 +++++++++++ .../ShieldAction.java} | 46 ++++++------- .../AlipayMiniProgramAccountService.java | 18 ----- .../AlipayMiniProgramAccountServiceImpl.java | 69 ------------------- .../handler/config/TaskPipelineConfig.java | 66 ++++++++++++++++++ .../impl/AlipayMiniProgramAccountHandler.java | 39 ++++++++++- .../java3y/austin/handler/pending/Task.java | 69 ++++--------------- .../austin/handler/shield/ShieldService.java | 19 ----- .../action/recall/RecallAssembleAction.java | 4 +- .../impl/action/recall/RecallMqAction.java | 4 +- .../action/send/SendAfterCheckAction.java | 4 +- .../impl/action/send/SendAssembleAction.java | 4 +- .../api/impl/action/send/SendMqAction.java | 4 +- .../impl/action/send/SendPreCheckAction.java | 4 +- .../api/impl/config/PipelineConfig.java | 8 +-- .../api/impl/domain/RecallTaskModel.java | 2 +- .../api/impl/domain/SendTaskModel.java | 2 +- .../api/impl/service/RecallServiceImpl.java | 18 +++-- .../api/impl/service/SendServiceImpl.java | 6 +- .../api/impl/service/SendServiceImplTest.java | 6 +- 30 files changed, 255 insertions(+), 261 deletions(-) rename {austin-support/src/main/java/com/java3y/austin/support => austin-common/src/main/java/com/java3y/austin/common}/pipeline/BusinessProcess.java (83%) rename {austin-support/src/main/java/com/java3y/austin/support => austin-common/src/main/java/com/java3y/austin/common}/pipeline/ProcessContext.java (94%) rename {austin-support/src/main/java/com/java3y/austin/support => austin-common/src/main/java/com/java3y/austin/common}/pipeline/ProcessController.java (88%) rename {austin-support/src/main/java/com/java3y/austin/support/exception => austin-common/src/main/java/com/java3y/austin/common/pipeline}/ProcessException.java (89%) rename {austin-support/src/main/java/com/java3y/austin/support => austin-common/src/main/java/com/java3y/austin/common}/pipeline/ProcessModel.java (69%) rename {austin-support/src/main/java/com/java3y/austin/support => austin-common/src/main/java/com/java3y/austin/common}/pipeline/ProcessTemplate.java (89%) rename austin-handler/src/main/java/com/java3y/austin/handler/{deduplication/DeduplicationRuleService.java => action/DeduplicationAction.java} (63%) rename austin-handler/src/main/java/com/java3y/austin/handler/{discard/DiscardMessageService.java => action/DiscardAction.java} (70%) create mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/action/SendMessageAction.java rename austin-handler/src/main/java/com/java3y/austin/handler/{shield/impl/ShieldServiceImpl.java => action/ShieldAction.java} (69%) delete mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/alipay/AlipayMiniProgramAccountService.java delete mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java create mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/config/TaskPipelineConfig.java delete mode 100644 austin-handler/src/main/java/com/java3y/austin/handler/shield/ShieldService.java diff --git a/austin-common/src/main/java/com/java3y/austin/common/domain/TaskInfo.java b/austin-common/src/main/java/com/java3y/austin/common/domain/TaskInfo.java index 1bac397..1f14e50 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/domain/TaskInfo.java +++ b/austin-common/src/main/java/com/java3y/austin/common/domain/TaskInfo.java @@ -1,6 +1,7 @@ package com.java3y.austin.common.domain; import com.java3y.austin.common.dto.model.ContentModel; +import com.java3y.austin.common.pipeline.ProcessModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -18,7 +19,7 @@ import java.util.Set; @Builder @AllArgsConstructor @NoArgsConstructor -public class TaskInfo implements Serializable { +public class TaskInfo implements Serializable, ProcessModel { /** * 业务消息发送Id, 用于链路追踪, 若不存在, 则使用 messageId diff --git a/austin-common/src/main/java/com/java3y/austin/common/enums/AnchorState.java b/austin-common/src/main/java/com/java3y/austin/common/enums/AnchorState.java index 092532d..3b72ee6 100644 --- a/austin-common/src/main/java/com/java3y/austin/common/enums/AnchorState.java +++ b/austin-common/src/main/java/com/java3y/austin/common/enums/AnchorState.java @@ -7,6 +7,8 @@ import lombok.ToString; /** * 打点信息枚举 + *

+ * com.java3y.austin.web.utils.AnchorStateUtils#getDescriptionByState * * @author 3y */ diff --git a/austin-support/src/main/java/com/java3y/austin/support/pipeline/BusinessProcess.java b/austin-common/src/main/java/com/java3y/austin/common/pipeline/BusinessProcess.java similarity index 83% rename from austin-support/src/main/java/com/java3y/austin/support/pipeline/BusinessProcess.java rename to austin-common/src/main/java/com/java3y/austin/common/pipeline/BusinessProcess.java index 6552dec..71546c6 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/pipeline/BusinessProcess.java +++ b/austin-common/src/main/java/com/java3y/austin/common/pipeline/BusinessProcess.java @@ -1,4 +1,4 @@ -package com.java3y.austin.support.pipeline; +package com.java3y.austin.common.pipeline; /** * 业务执行器 diff --git a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessContext.java b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessContext.java similarity index 94% rename from austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessContext.java rename to austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessContext.java index 8c43f2f..e9f4965 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessContext.java +++ b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessContext.java @@ -1,4 +1,4 @@ -package com.java3y.austin.support.pipeline; +package com.java3y.austin.common.pipeline; import com.java3y.austin.common.vo.BasicResultVO; import lombok.AllArgsConstructor; diff --git a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessController.java b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessController.java similarity index 88% rename from austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessController.java rename to austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessController.java index acb4bd1..32c9ba6 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessController.java +++ b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessController.java @@ -1,13 +1,9 @@ -package com.java3y.austin.support.pipeline; +package com.java3y.austin.common.pipeline; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; import com.java3y.austin.common.enums.RespStatusEnum; import com.java3y.austin.common.vo.BasicResultVO; -import com.java3y.austin.support.exception.ProcessException; import lombok.Data; -import lombok.extern.slf4j.Slf4j; import java.util.List; import java.util.Map; @@ -18,7 +14,6 @@ import java.util.Objects; * * @author 3y */ -@Slf4j @Data public class ProcessController { @@ -75,7 +70,7 @@ public class ProcessController { // 业务代码 String businessCode = context.getCode(); - if (StrUtil.isBlank(businessCode)) { + if (Objects.isNull(businessCode)) { context.setResponse(BasicResultVO.fail(RespStatusEnum.BUSINESS_CODE_IS_NULL)); throw new ProcessException(context); } @@ -89,7 +84,7 @@ public class ProcessController { // 执行模板列表 List processList = processTemplate.getProcessList(); - if (CollUtil.isEmpty(processList)) { + if (Objects.isNull(processList) || processList.size() == 0) { context.setResponse(BasicResultVO.fail(RespStatusEnum.PROCESS_LIST_IS_NULL)); throw new ProcessException(context); } diff --git a/austin-support/src/main/java/com/java3y/austin/support/exception/ProcessException.java b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessException.java similarity index 89% rename from austin-support/src/main/java/com/java3y/austin/support/exception/ProcessException.java rename to austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessException.java index 3d56d47..22c1913 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/exception/ProcessException.java +++ b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessException.java @@ -1,7 +1,6 @@ -package com.java3y.austin.support.exception; +package com.java3y.austin.common.pipeline; import com.java3y.austin.common.enums.RespStatusEnum; -import com.java3y.austin.support.pipeline.ProcessContext; import java.util.Objects; diff --git a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessModel.java b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessModel.java similarity index 69% rename from austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessModel.java rename to austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessModel.java index dc8bede..f77f2e3 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessModel.java +++ b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessModel.java @@ -1,4 +1,4 @@ -package com.java3y.austin.support.pipeline; +package com.java3y.austin.common.pipeline; /** diff --git a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessTemplate.java b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessTemplate.java similarity index 89% rename from austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessTemplate.java rename to austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessTemplate.java index 3e1a99e..bae221d 100644 --- a/austin-support/src/main/java/com/java3y/austin/support/pipeline/ProcessTemplate.java +++ b/austin-common/src/main/java/com/java3y/austin/common/pipeline/ProcessTemplate.java @@ -1,4 +1,4 @@ -package com.java3y.austin.support.pipeline; +package com.java3y.austin.common.pipeline; import java.util.List; diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/DeduplicationRuleService.java b/austin-handler/src/main/java/com/java3y/austin/handler/action/DeduplicationAction.java similarity index 63% rename from austin-handler/src/main/java/com/java3y/austin/handler/deduplication/DeduplicationRuleService.java rename to austin-handler/src/main/java/com/java3y/austin/handler/action/DeduplicationAction.java index b26a59f..c50af34 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/deduplication/DeduplicationRuleService.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/action/DeduplicationAction.java @@ -1,9 +1,14 @@ -package com.java3y.austin.handler.deduplication; +package com.java3y.austin.handler.action; +import cn.hutool.core.collection.CollUtil; import com.java3y.austin.common.constant.CommonConstant; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.enums.DeduplicationType; import com.java3y.austin.common.enums.EnumUtil; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; +import com.java3y.austin.handler.deduplication.DeduplicationHolder; +import com.java3y.austin.handler.deduplication.DeduplicationParam; import com.java3y.austin.support.service.ConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -11,13 +16,16 @@ import org.springframework.stereotype.Service; import java.util.List; import java.util.Objects; + /** - * @author 3y. - * @date 2021/12/12 * 去重服务 + * 1. 根据相同内容N分钟去重(SlideWindowLimitService) + * 2. 相同的渠道一天内频次去重(SimpleLimitService) + * + * @author 3y */ @Service -public class DeduplicationRuleService { +public class DeduplicationAction implements BusinessProcess { public static final String DEDUPLICATION_RULE_KEY = "deduplicationRule"; @@ -27,7 +35,10 @@ public class DeduplicationRuleService { @Autowired private DeduplicationHolder deduplicationHolder; - public void duplication(TaskInfo taskInfo) { + @Override + public void process(ProcessContext context) { + TaskInfo taskInfo = context.getProcessModel(); + // 配置样例:{"deduplication_10":{"num":1,"time":300},"deduplication_20":{"num":5}} String deduplicationConfig = config.getProperty(DEDUPLICATION_RULE_KEY, CommonConstant.EMPTY_JSON_OBJECT); @@ -39,7 +50,9 @@ public class DeduplicationRuleService { deduplicationHolder.selectService(deduplicationType).deduplication(deduplicationParam); } } - } - + if (CollUtil.isEmpty(taskInfo.getReceiver())) { + context.setNeedBreak(true); + } + } } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/discard/DiscardMessageService.java b/austin-handler/src/main/java/com/java3y/austin/handler/action/DiscardAction.java similarity index 70% rename from austin-handler/src/main/java/com/java3y/austin/handler/discard/DiscardMessageService.java rename to austin-handler/src/main/java/com/java3y/austin/handler/action/DiscardAction.java index ec2dbbe..7e54f47 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/discard/DiscardMessageService.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/action/DiscardAction.java @@ -1,4 +1,4 @@ -package com.java3y.austin.handler.discard; +package com.java3y.austin.handler.action; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; @@ -6,42 +6,38 @@ import com.java3y.austin.common.constant.CommonConstant; import com.java3y.austin.common.domain.AnchorInfo; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.enums.AnchorState; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; import com.java3y.austin.support.service.ConfigService; import com.java3y.austin.support.utils.LogUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; + /** - * 丢弃模板消息 + * 丢弃消息 + * 一般将需要丢弃的模板id写在分布式配置中心 * - * @author 3y. + * @author 3y */ @Service -public class DiscardMessageService { +public class DiscardAction implements BusinessProcess { private static final String DISCARD_MESSAGE_KEY = "discardMsgIds"; @Autowired private ConfigService config; - @Autowired private LogUtils logUtils; - - /** - * 丢弃消息,配置在apollo - * - * @param taskInfo - * @return - */ - public boolean isDiscard(TaskInfo taskInfo) { + @Override + public void process(ProcessContext context) { + TaskInfo taskInfo = context.getProcessModel(); // 配置示例: ["1","2"] JSONArray array = JSON.parseArray(config.getProperty(DISCARD_MESSAGE_KEY, CommonConstant.EMPTY_VALUE_JSON_ARRAY)); - if (array.contains(String.valueOf(taskInfo.getMessageTemplateId()))) { logUtils.print(AnchorInfo.builder().bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()).ids(taskInfo.getReceiver()).state(AnchorState.DISCARD.getCode()).build()); - return true; + context.setNeedBreak(true); } - return false; - } + } } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/action/SendMessageAction.java b/austin-handler/src/main/java/com/java3y/austin/handler/action/SendMessageAction.java new file mode 100644 index 0000000..3f68d92 --- /dev/null +++ b/austin-handler/src/main/java/com/java3y/austin/handler/action/SendMessageAction.java @@ -0,0 +1,40 @@ +package com.java3y.austin.handler.action; + +import cn.hutool.core.util.ObjectUtil; +import com.google.common.collect.Sets; +import com.java3y.austin.common.domain.TaskInfo; +import com.java3y.austin.common.enums.ChannelType; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; +import com.java3y.austin.handler.handler.HandlerHolder; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + + +/** + * 发送消息,路由到对应的渠道下发消息 + * + * @author 3y + */ +@Service +public class SendMessageAction implements BusinessProcess { + @Autowired + private HandlerHolder handlerHolder; + + @Override + public void process(ProcessContext context) { + TaskInfo taskInfo = context.getProcessModel(); + + // 微信小程序&服务号只支持单人推送,为了后续逻辑统一处理,于是在这做了单发处理 + if (ChannelType.MINI_PROGRAM.getCode().equals(taskInfo.getSendChannel()) + || ChannelType.OFFICIAL_ACCOUNT.getCode().equals(taskInfo.getSendChannel())) { + for (String receiver : taskInfo.getReceiver()) { + TaskInfo taskClone = ObjectUtil.cloneByStream(taskInfo); + taskClone.setReceiver(Sets.newHashSet(receiver)); + handlerHolder.route(taskInfo.getSendChannel()).doHandler(taskClone); + } + return; + } + handlerHolder.route(taskInfo.getSendChannel()).doHandler(taskInfo); + } +} diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/shield/impl/ShieldServiceImpl.java b/austin-handler/src/main/java/com/java3y/austin/handler/action/ShieldAction.java similarity index 69% rename from austin-handler/src/main/java/com/java3y/austin/handler/shield/impl/ShieldServiceImpl.java rename to austin-handler/src/main/java/com/java3y/austin/handler/action/ShieldAction.java index a44bfaf..9230243 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/shield/impl/ShieldServiceImpl.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/action/ShieldAction.java @@ -1,4 +1,4 @@ -package com.java3y.austin.handler.shield.impl; +package com.java3y.austin.handler.action; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializerFeature; @@ -6,45 +6,51 @@ import com.java3y.austin.common.domain.AnchorInfo; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.enums.AnchorState; import com.java3y.austin.common.enums.ShieldType; -import com.java3y.austin.handler.shield.ShieldService; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; import com.java3y.austin.support.utils.LogUtils; import com.java3y.austin.support.utils.RedisUtils; -import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.LocalDateTime; -import java.util.HashSet; + /** - * 屏蔽服务 + * 屏蔽消息 + * 1. 当接收到该消息是夜间,直接屏蔽(不发送) + * 2. 当接收到该消息是夜间,次日9点发送 + * example:当消息下发至austin平台时,已经是凌晨1点,业务希望此类消息在次日的早上9点推送 + * (配合 分布式任务定时任务框架搞掂) * * @author 3y */ @Service -@Slf4j -public class ShieldServiceImpl implements ShieldService { +public class ShieldAction implements BusinessProcess { private static final String NIGHT_SHIELD_BUT_NEXT_DAY_SEND_KEY = "night_shield_send"; - private static final long SECONDS_OF_A_DAY = 86400L; + + /** + * 默认早上8点之前是凌晨 + */ + private static final int NIGHT = 8; + @Autowired private RedisUtils redisUtils; @Autowired private LogUtils logUtils; + @Override - public void shield(TaskInfo taskInfo) { + public void process(ProcessContext context) { + TaskInfo taskInfo = context.getProcessModel(); if (ShieldType.NIGHT_NO_SHIELD.getCode().equals(taskInfo.getShieldType())) { return; } - /** - * example:当消息下发至austin平台时,已经是凌晨1点,业务希望此类消息在次日的早上9点推送 - * (配合 分布式任务定时任务框架搞掂) - */ - if (isNight()) { + if (LocalDateTime.now().getHour() < NIGHT) { if (ShieldType.NIGHT_SHIELD.getCode().equals(taskInfo.getShieldType())) { logUtils.print(AnchorInfo.builder().state(AnchorState.NIGHT_SHIELD.getCode()) .bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()).ids(taskInfo.getReceiver()).build()); @@ -55,18 +61,8 @@ public class ShieldServiceImpl implements ShieldService { SECONDS_OF_A_DAY); logUtils.print(AnchorInfo.builder().state(AnchorState.NIGHT_SHIELD_NEXT_SEND.getCode()).bizId(taskInfo.getBizId()).messageId(taskInfo.getMessageId()).businessId(taskInfo.getBusinessId()).ids(taskInfo.getReceiver()).build()); } - taskInfo.setReceiver(new HashSet<>()); + context.setNeedBreak(true); } - } - - /** - * 小时 < 8 默认就认为是凌晨(夜晚) - * - * @return - */ - private boolean isNight() { - return LocalDateTime.now().getHour() < 8; } - } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/alipay/AlipayMiniProgramAccountService.java b/austin-handler/src/main/java/com/java3y/austin/handler/alipay/AlipayMiniProgramAccountService.java deleted file mode 100644 index 6b5c957..0000000 --- a/austin-handler/src/main/java/com/java3y/austin/handler/alipay/AlipayMiniProgramAccountService.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.java3y.austin.handler.alipay; - -import com.alipay.api.AlipayApiException; -import com.java3y.austin.handler.domain.alipay.AlipayMiniProgramParam; - -/** - * @author jwq - * 支付宝小程序发送订阅消息接口 - */ -public interface AlipayMiniProgramAccountService { - /** - * 发送订阅消息 - * - * @param miniProgramParam 订阅消息参数 - * @throws AlipayApiException alipay异常 - */ - void send(AlipayMiniProgramParam miniProgramParam) throws AlipayApiException; -} diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java b/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java deleted file mode 100644 index 3bca3fc..0000000 --- a/austin-handler/src/main/java/com/java3y/austin/handler/alipay/impl/AlipayMiniProgramAccountServiceImpl.java +++ /dev/null @@ -1,69 +0,0 @@ -package com.java3y.austin.handler.alipay.impl; - -import com.alipay.api.AlipayApiException; -import com.alipay.api.AlipayClient; -import com.alipay.api.domain.AlipayOpenAppMiniTemplatemessageSendModel; -import com.alipay.api.request.AlipayOpenAppMiniTemplatemessageSendRequest; -import com.java3y.austin.common.dto.account.AlipayMiniProgramAccount; -import com.java3y.austin.handler.alipay.AlipayMiniProgramAccountService; -import com.java3y.austin.handler.config.AlipayClientSingleton; -import com.java3y.austin.handler.domain.alipay.AlipayMiniProgramParam; -import com.java3y.austin.support.utils.AccountUtils; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -/** - * @author jwq - * 支付宝小程序发送订阅消息实现 - */ -@Service -@Slf4j -public class AlipayMiniProgramAccountServiceImpl implements AlipayMiniProgramAccountService { - - @Autowired - private AccountUtils accountUtils; - - /** - * 发送订阅消息 - * - * @param miniProgramParam 订阅消息参数 - * @throws AlipayApiException alipay异常 - */ - @Override - public void send(AlipayMiniProgramParam miniProgramParam) throws AlipayApiException { - AlipayMiniProgramAccount miniProgramAccount = accountUtils.getAccountById(miniProgramParam.getSendAccount(), AlipayMiniProgramAccount.class); - - AlipayClient client = AlipayClientSingleton.getSingleton(miniProgramAccount); - List request = assembleReq(miniProgramParam, miniProgramAccount); - for (AlipayOpenAppMiniTemplatemessageSendRequest req : request) { - client.execute(req); - } - } - - /** - * 组装模板消息的参数 - */ - private List assembleReq(AlipayMiniProgramParam alipayMiniProgramParam, AlipayMiniProgramAccount alipayMiniProgramAccount) { - Set receiver = alipayMiniProgramParam.getToUserId(); - List requestList = new ArrayList<>(receiver.size()); - - for (String toUserId : receiver) { - AlipayOpenAppMiniTemplatemessageSendRequest request = new AlipayOpenAppMiniTemplatemessageSendRequest(); - AlipayOpenAppMiniTemplatemessageSendModel model = new AlipayOpenAppMiniTemplatemessageSendModel(); - model.setToUserId(toUserId); - model.setUserTemplateId(alipayMiniProgramAccount.getUserTemplateId()); - model.setPage(alipayMiniProgramAccount.getPage()); - model.setData(alipayMiniProgramParam.getData().toString()); - request.setBizModel(model); - requestList.add(request); - } - return requestList; - } - - -} diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/config/TaskPipelineConfig.java b/austin-handler/src/main/java/com/java3y/austin/handler/config/TaskPipelineConfig.java new file mode 100644 index 0000000..4d22cf4 --- /dev/null +++ b/austin-handler/src/main/java/com/java3y/austin/handler/config/TaskPipelineConfig.java @@ -0,0 +1,66 @@ +package com.java3y.austin.handler.config; + + +import com.java3y.austin.common.pipeline.ProcessController; +import com.java3y.austin.common.pipeline.ProcessTemplate; +import com.java3y.austin.handler.action.DeduplicationAction; +import com.java3y.austin.handler.action.DiscardAction; +import com.java3y.austin.handler.action.SendMessageAction; +import com.java3y.austin.handler.action.ShieldAction; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.Arrays; +import java.util.HashMap; +import java.util.Map; + +/** + * handler层的pipeline配置类 + * + * @author 3y + */ +@Configuration +public class TaskPipelineConfig { + public static final String PIPELINE_HANDLER_CODE = "handler"; + @Autowired + private DiscardAction discardAction; + @Autowired + private ShieldAction shieldAction; + @Autowired + private DeduplicationAction deduplicationAction; + @Autowired + private SendMessageAction sendMessageAction; + + + /** + * 消息从MQ消费的流程 + * 0.丢弃消息 + * 1.屏蔽消息 + * 2.通用去重功能 + * 3.发送消息 + * + * @return + */ + @Bean("taskTemplate") + public ProcessTemplate taskTemplate() { + ProcessTemplate processTemplate = new ProcessTemplate(); + processTemplate.setProcessList(Arrays.asList(discardAction, shieldAction, deduplicationAction, sendMessageAction)); + return processTemplate; + } + + /** + * pipeline流程控制器 + * 后续扩展则加BusinessCode和ProcessTemplate + * + * @return + */ + @Bean("handlerProcessController") + public ProcessController processController() { + ProcessController processController = new ProcessController(); + Map templateConfig = new HashMap<>(4); + templateConfig.put(PIPELINE_HANDLER_CODE, taskTemplate()); + processController.setTemplateConfig(templateConfig); + return processController; + } +} diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/AlipayMiniProgramAccountHandler.java b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/AlipayMiniProgramAccountHandler.java index fd8a89e..af58b25 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/AlipayMiniProgramAccountHandler.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/handler/impl/AlipayMiniProgramAccountHandler.java @@ -1,19 +1,28 @@ package com.java3y.austin.handler.handler.impl; import com.alibaba.fastjson.JSON; +import com.alipay.api.AlipayClient; +import com.alipay.api.domain.AlipayOpenAppMiniTemplatemessageSendModel; +import com.alipay.api.request.AlipayOpenAppMiniTemplatemessageSendRequest; import com.google.common.base.Throwables; import com.java3y.austin.common.domain.RecallTaskInfo; import com.java3y.austin.common.domain.TaskInfo; +import com.java3y.austin.common.dto.account.AlipayMiniProgramAccount; import com.java3y.austin.common.dto.model.AlipayMiniProgramContentModel; import com.java3y.austin.common.enums.ChannelType; -import com.java3y.austin.handler.alipay.AlipayMiniProgramAccountService; +import com.java3y.austin.handler.config.AlipayClientSingleton; import com.java3y.austin.handler.domain.alipay.AlipayMiniProgramParam; import com.java3y.austin.handler.handler.BaseHandler; import com.java3y.austin.handler.handler.Handler; +import com.java3y.austin.support.utils.AccountUtils; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + /** * @author jwq * 支付宝小程序发送订阅消息 @@ -23,7 +32,7 @@ import org.springframework.stereotype.Component; public class AlipayMiniProgramAccountHandler extends BaseHandler implements Handler { @Autowired - private AlipayMiniProgramAccountService alipayMiniProgramAccountService; + private AccountUtils accountUtils; public AlipayMiniProgramAccountHandler() { channelCode = ChannelType.ALIPAY_MINI_PROGRAM.getCode(); @@ -33,7 +42,12 @@ public class AlipayMiniProgramAccountHandler extends BaseHandler implements Hand public boolean handler(TaskInfo taskInfo) { AlipayMiniProgramParam miniProgramParam = buildMiniProgramParam(taskInfo); try { - alipayMiniProgramAccountService.send(miniProgramParam); + AlipayMiniProgramAccount miniProgramAccount = accountUtils.getAccountById(miniProgramParam.getSendAccount(), AlipayMiniProgramAccount.class); + AlipayClient client = AlipayClientSingleton.getSingleton(miniProgramAccount); + List request = assembleReq(miniProgramParam, miniProgramAccount); + for (AlipayOpenAppMiniTemplatemessageSendRequest req : request) { + client.execute(req); + } } catch (Exception e) { log.error("AlipayMiniProgramAccountHandler#handler fail:{},params:{}", Throwables.getStackTraceAsString(e), JSON.toJSONString(taskInfo)); @@ -60,6 +74,25 @@ public class AlipayMiniProgramAccountHandler extends BaseHandler implements Hand return param; } + /** + * 组装模板消息的参数 + */ + private List assembleReq(AlipayMiniProgramParam alipayMiniProgramParam, AlipayMiniProgramAccount alipayMiniProgramAccount) { + Set receiver = alipayMiniProgramParam.getToUserId(); + List requestList = new ArrayList<>(receiver.size()); + + for (String toUserId : receiver) { + AlipayOpenAppMiniTemplatemessageSendRequest request = new AlipayOpenAppMiniTemplatemessageSendRequest(); + AlipayOpenAppMiniTemplatemessageSendModel model = new AlipayOpenAppMiniTemplatemessageSendModel(); + model.setToUserId(toUserId); + model.setUserTemplateId(alipayMiniProgramAccount.getUserTemplateId()); + model.setPage(alipayMiniProgramAccount.getPage()); + model.setData(alipayMiniProgramParam.getData().toString()); + request.setBizModel(model); + requestList.add(request); + } + return requestList; + } @Override public void recall(RecallTaskInfo recallTaskInfo) { diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/pending/Task.java b/austin-handler/src/main/java/com/java3y/austin/handler/pending/Task.java index ddf2c0f..4723828 100644 --- a/austin-handler/src/main/java/com/java3y/austin/handler/pending/Task.java +++ b/austin-handler/src/main/java/com/java3y/austin/handler/pending/Task.java @@ -1,29 +1,23 @@ package com.java3y.austin.handler.pending; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.ObjectUtil; -import com.google.common.collect.Sets; import com.java3y.austin.common.domain.TaskInfo; -import com.java3y.austin.common.enums.ChannelType; -import com.java3y.austin.handler.deduplication.DeduplicationRuleService; -import com.java3y.austin.handler.discard.DiscardMessageService; -import com.java3y.austin.handler.handler.HandlerHolder; -import com.java3y.austin.handler.shield.ShieldService; +import com.java3y.austin.common.pipeline.ProcessContext; +import com.java3y.austin.common.pipeline.ProcessController; +import com.java3y.austin.common.pipeline.ProcessModel; +import com.java3y.austin.common.vo.BasicResultVO; +import com.java3y.austin.handler.config.TaskPipelineConfig; import lombok.Data; import lombok.experimental.Accessors; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.config.ConfigurableBeanFactory; import org.springframework.context.annotation.Scope; import org.springframework.stereotype.Component; /** * Task 执行器 - * 0.丢弃消息 - * 2.屏蔽消息 - * 2.通用去重功能 - * 3.发送消息 * * @author 3y */ @@ -33,52 +27,17 @@ import org.springframework.stereotype.Component; @Component @Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE) public class Task implements Runnable { - - @Autowired - private HandlerHolder handlerHolder; - - @Autowired - private DeduplicationRuleService deduplicationRuleService; - - @Autowired - private DiscardMessageService discardMessageService; - - @Autowired - private ShieldService shieldService; - private TaskInfo taskInfo; - + @Autowired + @Qualifier("handlerProcessController") + private ProcessController processController; @Override public void run() { - - // 0. 丢弃消息 - if (discardMessageService.isDiscard(taskInfo)) { - return; - } - // 1. 屏蔽消息 - shieldService.shield(taskInfo); - - // 2.平台通用去重 - if (CollUtil.isNotEmpty(taskInfo.getReceiver())) { - deduplicationRuleService.duplication(taskInfo); - } - - // 3. 真正发送消息 - if (CollUtil.isNotEmpty(taskInfo.getReceiver())) { - - // 3.1 微信小程序&服务号只支持单人推送,为了后续逻辑统一处理,于是在这做了打散 - if (ChannelType.MINI_PROGRAM.getCode().equals(taskInfo.getSendChannel()) - || ChannelType.OFFICIAL_ACCOUNT.getCode().equals(taskInfo.getSendChannel())) { - for (String receiver : taskInfo.getReceiver()) { - TaskInfo taskClone = ObjectUtil.cloneByStream(this.taskInfo); - taskClone.setReceiver(Sets.newHashSet(receiver)); - handlerHolder.route(taskInfo.getSendChannel()).doHandler(taskClone); - } - return; - } - handlerHolder.route(taskInfo.getSendChannel()).doHandler(taskInfo); - } - + ProcessContext context = ProcessContext.builder() + .processModel(taskInfo).code(TaskPipelineConfig.PIPELINE_HANDLER_CODE) + .needBreak(false).response(BasicResultVO.success()) + .build(); + processController.process(context); } } diff --git a/austin-handler/src/main/java/com/java3y/austin/handler/shield/ShieldService.java b/austin-handler/src/main/java/com/java3y/austin/handler/shield/ShieldService.java deleted file mode 100644 index c1ef99e..0000000 --- a/austin-handler/src/main/java/com/java3y/austin/handler/shield/ShieldService.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.java3y.austin.handler.shield; - -import com.java3y.austin.common.domain.TaskInfo; - -/** - * 屏蔽服务 - * - * @author 3y - */ -public interface ShieldService { - - - /** - * 屏蔽消息 - * - * @param taskInfo - */ - void shield(TaskInfo taskInfo); -} diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/recall/RecallAssembleAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/recall/RecallAssembleAction.java index ebde13a..717eb0c 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/recall/RecallAssembleAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/recall/RecallAssembleAction.java @@ -4,12 +4,12 @@ import com.google.common.base.Throwables; import com.java3y.austin.common.constant.CommonConstant; import com.java3y.austin.common.domain.RecallTaskInfo; import com.java3y.austin.common.enums.RespStatusEnum; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; import com.java3y.austin.common.vo.BasicResultVO; import com.java3y.austin.service.api.impl.domain.RecallTaskModel; import com.java3y.austin.support.dao.MessageTemplateDao; import com.java3y.austin.support.domain.MessageTemplate; -import com.java3y.austin.support.pipeline.BusinessProcess; -import com.java3y.austin.support.pipeline.ProcessContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/recall/RecallMqAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/recall/RecallMqAction.java index c6b3275..1afbdb0 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/recall/RecallMqAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/recall/RecallMqAction.java @@ -5,11 +5,11 @@ import com.alibaba.fastjson.serializer.SerializerFeature; import com.google.common.base.Throwables; import com.java3y.austin.common.domain.RecallTaskInfo; import com.java3y.austin.common.enums.RespStatusEnum; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; import com.java3y.austin.common.vo.BasicResultVO; import com.java3y.austin.service.api.impl.domain.RecallTaskModel; import com.java3y.austin.support.mq.SendMqService; -import com.java3y.austin.support.pipeline.BusinessProcess; -import com.java3y.austin.support.pipeline.ProcessContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAfterCheckAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAfterCheckAction.java index 306ecfa..c9774c4 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAfterCheckAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAfterCheckAction.java @@ -7,10 +7,10 @@ import com.alibaba.fastjson.JSON; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.enums.IdType; import com.java3y.austin.common.enums.RespStatusEnum; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; import com.java3y.austin.common.vo.BasicResultVO; import com.java3y.austin.service.api.impl.domain.SendTaskModel; -import com.java3y.austin.support.pipeline.BusinessProcess; -import com.java3y.austin.support.pipeline.ProcessContext; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAssembleAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAssembleAction.java index aad478c..4de2e8a 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAssembleAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendAssembleAction.java @@ -11,13 +11,13 @@ import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.dto.model.ContentModel; import com.java3y.austin.common.enums.ChannelType; import com.java3y.austin.common.enums.RespStatusEnum; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; import com.java3y.austin.common.vo.BasicResultVO; import com.java3y.austin.service.api.domain.MessageParam; import com.java3y.austin.service.api.impl.domain.SendTaskModel; import com.java3y.austin.support.dao.MessageTemplateDao; import com.java3y.austin.support.domain.MessageTemplate; -import com.java3y.austin.support.pipeline.BusinessProcess; -import com.java3y.austin.support.pipeline.ProcessContext; import com.java3y.austin.support.utils.ContentHolderUtil; import com.java3y.austin.support.utils.TaskInfoUtils; import lombok.extern.slf4j.Slf4j; diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendMqAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendMqAction.java index 6287f3e..0fee9da 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendMqAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendMqAction.java @@ -7,11 +7,11 @@ import com.google.common.base.Throwables; import com.java3y.austin.common.domain.SimpleTaskInfo; import com.java3y.austin.common.domain.TaskInfo; import com.java3y.austin.common.enums.RespStatusEnum; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; import com.java3y.austin.common.vo.BasicResultVO; import com.java3y.austin.service.api.impl.domain.SendTaskModel; import com.java3y.austin.support.mq.SendMqService; -import com.java3y.austin.support.pipeline.BusinessProcess; -import com.java3y.austin.support.pipeline.ProcessContext; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendPreCheckAction.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendPreCheckAction.java index 75968d6..4566e62 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendPreCheckAction.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/action/send/SendPreCheckAction.java @@ -4,11 +4,11 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.java3y.austin.common.constant.AustinConstant; import com.java3y.austin.common.enums.RespStatusEnum; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessContext; import com.java3y.austin.common.vo.BasicResultVO; import com.java3y.austin.service.api.domain.MessageParam; import com.java3y.austin.service.api.impl.domain.SendTaskModel; -import com.java3y.austin.support.pipeline.BusinessProcess; -import com.java3y.austin.support.pipeline.ProcessContext; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/config/PipelineConfig.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/config/PipelineConfig.java index 0fd184c..acb5149 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/config/PipelineConfig.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/config/PipelineConfig.java @@ -1,6 +1,8 @@ package com.java3y.austin.service.api.impl.config; +import com.java3y.austin.common.pipeline.ProcessController; +import com.java3y.austin.common.pipeline.ProcessTemplate; import com.java3y.austin.service.api.enums.BusinessCode; import com.java3y.austin.service.api.impl.action.recall.RecallAssembleAction; import com.java3y.austin.service.api.impl.action.recall.RecallMqAction; @@ -8,8 +10,6 @@ import com.java3y.austin.service.api.impl.action.send.SendAfterCheckAction; import com.java3y.austin.service.api.impl.action.send.SendAssembleAction; import com.java3y.austin.service.api.impl.action.send.SendMqAction; import com.java3y.austin.service.api.impl.action.send.SendPreCheckAction; -import com.java3y.austin.support.pipeline.ProcessController; -import com.java3y.austin.support.pipeline.ProcessTemplate; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -78,8 +78,8 @@ public class PipelineConfig { * * @return */ - @Bean - public ProcessController processController() { + @Bean("apiProcessController") + public ProcessController apiProcessController() { ProcessController processController = new ProcessController(); Map templateConfig = new HashMap<>(4); templateConfig.put(BusinessCode.COMMON_SEND.getCode(), commonSendTemplate()); diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/domain/RecallTaskModel.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/domain/RecallTaskModel.java index 00c7d36..8ef8aaa 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/domain/RecallTaskModel.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/domain/RecallTaskModel.java @@ -1,7 +1,7 @@ package com.java3y.austin.service.api.impl.domain; import com.java3y.austin.common.domain.RecallTaskInfo; -import com.java3y.austin.support.pipeline.ProcessModel; +import com.java3y.austin.common.pipeline.ProcessModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/domain/SendTaskModel.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/domain/SendTaskModel.java index 0a938a4..d5cc81e 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/domain/SendTaskModel.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/domain/SendTaskModel.java @@ -1,8 +1,8 @@ package com.java3y.austin.service.api.impl.domain; import com.java3y.austin.common.domain.TaskInfo; +import com.java3y.austin.common.pipeline.ProcessModel; import com.java3y.austin.service.api.domain.MessageParam; -import com.java3y.austin.support.pipeline.ProcessModel; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/RecallServiceImpl.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/RecallServiceImpl.java index a1c3a8b..7a09d5f 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/RecallServiceImpl.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/RecallServiceImpl.java @@ -1,15 +1,16 @@ package com.java3y.austin.service.api.impl.service; import com.java3y.austin.common.enums.RespStatusEnum; +import com.java3y.austin.common.pipeline.ProcessContext; +import com.java3y.austin.common.pipeline.ProcessController; import com.java3y.austin.common.vo.BasicResultVO; import com.java3y.austin.service.api.domain.SendRequest; import com.java3y.austin.service.api.domain.SendResponse; import com.java3y.austin.service.api.impl.domain.RecallTaskModel; import com.java3y.austin.service.api.service.RecallService; -import com.java3y.austin.support.pipeline.ProcessContext; -import com.java3y.austin.support.pipeline.ProcessController; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; @@ -20,22 +21,19 @@ import org.springframework.stereotype.Service; */ @Service public class RecallServiceImpl implements RecallService { - @Autowired + @Qualifier("apiProcessController") private ProcessController processController; @Override public SendResponse recall(SendRequest sendRequest) { + if (ObjectUtils.isEmpty(sendRequest)) { return new SendResponse(RespStatusEnum.CLIENT_BAD_PARAMETERS.getCode(), RespStatusEnum.CLIENT_BAD_PARAMETERS.getMsg(), null); } - RecallTaskModel recallTaskModel = RecallTaskModel.builder().messageTemplateId(sendRequest.getMessageTemplateId()) - .recallMessageId(sendRequest.getRecallMessageIds()).build(); - ProcessContext context = ProcessContext.builder() - .code(sendRequest.getCode()) - .processModel(recallTaskModel) - .needBreak(false) - .response(BasicResultVO.success()).build(); + RecallTaskModel recallTaskModel = RecallTaskModel.builder().messageTemplateId(sendRequest.getMessageTemplateId()).recallMessageId(sendRequest.getRecallMessageIds()).build(); + ProcessContext context = ProcessContext.builder().code(sendRequest.getCode()).processModel(recallTaskModel).needBreak(false).response(BasicResultVO.success()).build(); + ProcessContext process = processController.process(context); return new SendResponse(process.getResponse().getStatus(), process.getResponse().getMsg(), null); } diff --git a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/SendServiceImpl.java b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/SendServiceImpl.java index f217baa..c34925a 100644 --- a/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/SendServiceImpl.java +++ b/austin-service-api-impl/src/main/java/com/java3y/austin/service/api/impl/service/SendServiceImpl.java @@ -3,16 +3,17 @@ package com.java3y.austin.service.api.impl.service; import cn.monitor4all.logRecord.annotation.OperationLog; import com.java3y.austin.common.domain.SimpleTaskInfo; import com.java3y.austin.common.enums.RespStatusEnum; +import com.java3y.austin.common.pipeline.ProcessContext; +import com.java3y.austin.common.pipeline.ProcessController; import com.java3y.austin.common.vo.BasicResultVO; import com.java3y.austin.service.api.domain.BatchSendRequest; import com.java3y.austin.service.api.domain.SendRequest; import com.java3y.austin.service.api.domain.SendResponse; import com.java3y.austin.service.api.impl.domain.SendTaskModel; import com.java3y.austin.service.api.service.SendService; -import com.java3y.austin.support.pipeline.ProcessContext; -import com.java3y.austin.support.pipeline.ProcessController; import org.apache.commons.lang3.ObjectUtils; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.stereotype.Service; import java.util.Collections; @@ -27,6 +28,7 @@ import java.util.List; public class SendServiceImpl implements SendService { @Autowired + @Qualifier("apiProcessController") private ProcessController processController; @Override diff --git a/austin-service-api-impl/src/test/java/com/java3y/austin/service/api/impl/service/SendServiceImplTest.java b/austin-service-api-impl/src/test/java/com/java3y/austin/service/api/impl/service/SendServiceImplTest.java index c7d2ad4..24598ce 100644 --- a/austin-service-api-impl/src/test/java/com/java3y/austin/service/api/impl/service/SendServiceImplTest.java +++ b/austin-service-api-impl/src/test/java/com/java3y/austin/service/api/impl/service/SendServiceImplTest.java @@ -1,8 +1,8 @@ package com.java3y.austin.service.api.impl.service; -import com.java3y.austin.support.pipeline.BusinessProcess; -import com.java3y.austin.support.pipeline.ProcessController; -import com.java3y.austin.support.pipeline.ProcessTemplate; +import com.java3y.austin.common.pipeline.BusinessProcess; +import com.java3y.austin.common.pipeline.ProcessController; +import com.java3y.austin.common.pipeline.ProcessTemplate; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks;