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;