diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSender.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSender.java index 405911b1..0688819e 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSender.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/todo/manage/event/TodoPushSender.java @@ -1,14 +1,19 @@ package cn.axzo.msg.center.message.service.todo.manage.event; +import cn.axzo.msg.center.dal.TodoBusinessDao; +import cn.axzo.msg.center.dal.TodoBusinesses; import cn.axzo.msg.center.domain.entity.Todo; +import cn.axzo.msg.center.domain.entity.TodoBusiness; import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO; import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO; import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO.MessageRouteDetailDTO; import cn.axzo.msg.center.message.domain.dto.MessageTemplateRouterDTO.MessageRouterConfigDTO; +import cn.axzo.msg.center.message.service.todo.manage.TodoExt; import cn.axzo.msg.center.message.service.youmeng.YoumengPush; import cn.axzo.msg.center.message.service.youmeng.YoumengPush.PushNavigation; import cn.axzo.msg.center.message.service.youmeng.YoumengTemplateClient; import cn.axzo.msg.center.utils.MessageRouterUtil; +import com.alibaba.fastjson.JSONObject; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.apache.commons.collections.CollectionUtils; @@ -18,7 +23,9 @@ import org.springframework.stereotype.Component; import java.util.ArrayList; import java.util.Collections; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * @author yanglin @@ -30,6 +37,7 @@ class TodoPushSender implements ApplicationListener { private final YoumengTemplateClient youmengTemplateClient; private final MessageRouterUtil messageRouterUtil; + private final TodoBusinessDao todoBusinessDao; @Override public void onApplicationEvent(@NotNull NewTodoEvent event) { @@ -56,8 +64,18 @@ class TodoPushSender implements ApplicationListener { List routerConfigs = detail.getRouterConfigs(); if (CollectionUtils.isEmpty(routerConfigs)) return Collections.emptyList(); + JSONObject routerParam = todo.getRouterParams(); + if (routerParam == null) { + routerParam = new JSONObject(); + } + TodoBusinesses businesses = todoBusinessDao.getBusinesses(todo); + TodoBusiness business = businesses.findBusiness(todo).orElse(null); + Map ctx = new HashMap<>(); + ctx.put("business", business); + ctx.put("todo", todo); + routerParam.put(TodoExt.CTX, ctx); MessageTemplateRouterDTO router = messageRouterUtil.parseAndConcatRouteUrl( - template, template.getMsgTemplateRouter(), todo.getRouterParams()); + template, template.getMsgTemplateRouter(), routerParam); if (router == null) return Collections.emptyList(); ArrayList navigations = new ArrayList<>(); diff --git a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/TodoBusinessDao.java b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/TodoBusinessDao.java index 2fb796d2..a3ad7078 100644 --- a/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/TodoBusinessDao.java +++ b/msg-center-dal/src/main/java/cn/axzo/msg/center/dal/TodoBusinessDao.java @@ -41,6 +41,10 @@ public class TodoBusinessDao extends ServiceImpl todos) { // 获取对应的待办业务 Set businessIds = todos.stream()