diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java index 789b0af5..8bccabcb 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageTemplateController.java @@ -41,8 +41,7 @@ public class MessageTemplateController implements MessageTemplateClient { @Override public CommonResponse detail(String templateCode) { - // TODO:[cold_blade] [P0] query template - return null; + return CommonResponse.success(messageTemplateNewService.detail(templateCode)); } @Override diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java index d37ccedb..16bf0eae 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/dto/RawMessageRouterDTO.java @@ -82,6 +82,15 @@ public class RawMessageRouterDTO implements Serializable { .build(); } + public MessageRouterButtonDTO toMessageRouterButton() { + return MessageRouterButtonDTO.builder() + .desc(this.desc) + .category(this.category) + .terminals(this.terminals) + .style(this.style) + .build(); + } + public List toMessageTemplateRouters() { return this.terminals.stream() .map(this::convert) diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java index 71029e7b..cfac04f4 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageTemplateNewService.java @@ -3,6 +3,7 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO; import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam; import cn.axzo.msg.center.service.template.request.MessageTemplatePageRequest; +import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse; import cn.axzo.msg.center.service.template.response.MessageTemplatePageResponse; import cn.azxo.framework.common.model.Page; @@ -25,6 +26,14 @@ public interface MessageTemplateNewService { */ String createTemplate(MessageTemplateCreateParam param); + /** + * 通过模板便阿门查询模板详情 + * + * @param templateCode 模板编码 + * @return 模板详情信息 + */ + MessageTemplateDetailResponse detail(String templateCode); + /** * 通过模板编码查询模板信息 * diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java index e6a1d08f..015851a8 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageTemplateNewServiceImpl.java @@ -2,10 +2,12 @@ package cn.axzo.msg.center.message.service.impl; import cn.axzo.basics.common.util.AssertUtil; import cn.axzo.msg.center.common.enums.ServiceErrorCodeEnum; +import cn.axzo.msg.center.common.enums.TableIsDeleteEnum; import cn.axzo.msg.center.common.redis.RedisUtil; import cn.axzo.msg.center.common.utils.PageHelperUtil; import cn.axzo.msg.center.dal.MessageBaseTemplateDao; import cn.axzo.msg.center.domain.entity.MessageBaseTemplate; +import cn.axzo.msg.center.message.domain.dto.GroupTreeNodePathDTO; import cn.axzo.msg.center.message.domain.dto.MessageTemplateDTO; import cn.axzo.msg.center.message.domain.dto.RawMessageRouterDTO; import cn.axzo.msg.center.message.domain.param.MessageTemplateCreateParam; @@ -13,11 +15,15 @@ import cn.axzo.msg.center.message.service.MessageGroupNodeService; import cn.axzo.msg.center.message.service.MessageTemplateGroupService; import cn.axzo.msg.center.message.service.MessageTemplateNewService; import cn.axzo.msg.center.message.service.MessageTemplateRouterService; +import cn.axzo.msg.center.service.dto.MessageRouterButtonDTO; +import cn.axzo.msg.center.service.enums.PushTerminalEnum; import cn.axzo.msg.center.service.template.request.MessageTemplatePageRequest; +import cn.axzo.msg.center.service.template.response.MessageTemplateDetailResponse; import cn.axzo.msg.center.service.template.response.MessageTemplatePageResponse; import cn.axzo.msg.center.utils.JSONObjectUtil; import cn.axzo.msg.center.utils.UUIDUtil; import cn.azxo.framework.common.model.Page; +import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.metadata.IPage; import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; @@ -69,6 +75,26 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService return templateCode; } + @Override + public MessageTemplateDetailResponse detail(String templateCode) { + if (StringUtils.isBlank(templateCode)) { + return null; + } + MessageBaseTemplate baseTemplate = messageBaseTemplateDao.lambdaQuery() + .eq(MessageBaseTemplate::getCode, templateCode) + .eq(MessageBaseTemplate::getIsDelete, TableIsDeleteEnum.NORMAL.value) + .one(); + if (Objects.isNull(baseTemplate)) { + log.info("there is not any template match the templateCode:[{}]", templateCode); + return null; + } + // 获取模板关联分类的path列表 + List groupNodePaths = messageTemplateGroupService.listMessageTemplateGroupPaths( + Lists.newArrayList(templateCode)).getOrDefault(templateCode, Collections.emptyList()); + List routers = messageTemplateRouterService.queryByTemplateCode(templateCode); + return convert(baseTemplate, groupNodePaths, routers); + } + @Override public Optional queryByTemplateCode(String msgTemplateCode) { if (StringUtils.isBlank(msgTemplateCode)) { @@ -202,6 +228,16 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService return template; } + private void saveTemplateRouters(MessageTemplateCreateParam param, String templateCode) { + if (CollectionUtils.isEmpty(param.getRouters())) { + return; + } + List routers = param.getRouters().stream() + .map(e -> RawMessageRouterDTO.from(e, templateCode)) + .collect(Collectors.toList()); + messageTemplateRouterService.batchInsert(routers); + } + private MessageTemplatePageResponse convert(MessageBaseTemplate record, Map> groupNodePaths, Map codeNameMap) { MessageTemplatePageResponse response = new MessageTemplatePageResponse(); @@ -219,13 +255,28 @@ public class MessageTemplateNewServiceImpl implements MessageTemplateNewService return response; } - private void saveTemplateRouters(MessageTemplateCreateParam param, String templateCode) { - if (CollectionUtils.isEmpty(param.getRouters())) { - return; - } - List routers = param.getRouters().stream() - .map(e -> RawMessageRouterDTO.from(e, templateCode)) + private MessageTemplateDetailResponse convert(MessageBaseTemplate record, List groupNodePaths, + List routers) { + // 将path解析中解析出分类结点(路径叶结点)的编码 + List groupNodeCodes = groupNodePaths.stream() + .map(GroupTreeNodePathDTO::parseLeafNodeCode) .collect(Collectors.toList()); - messageTemplateRouterService.batchInsert(routers); + // 转化为页面相关的数据模型 + List routerButtons = routers.stream() + .map(RawMessageRouterDTO::toMessageRouterButton) + .collect(Collectors.toList()); + return MessageTemplateDetailResponse.builder() + .templateName(record.getName()) + .category(record.getMsgCategory()) + .leafGroupNodes(groupNodeCodes) + .pushTerminals(JSON.parseArray(record.getPushTerminal(), PushTerminalEnum.class)) + .msgTitle(record.getTitle()) + .msgContent(record.getContent()) + .msgCardInfo(record.getCardContent()) + .msgIcon(record.getIcon()) + .routers(routerButtons) + .createTimestamp(record.getCreateAt().getTime()) + .updateTimestamp(record.getUpdateAt().getTime()) + .build(); } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/response/MessageTemplateDetailResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/response/MessageTemplateDetailResponse.java index 67e29201..9299d1f3 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/response/MessageTemplateDetailResponse.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/template/response/MessageTemplateDetailResponse.java @@ -41,7 +41,6 @@ public class MessageTemplateDetailResponse implements Serializable { /** * 消息分类树的叶结点的结点编码列表 */ - @NotEmpty(message = "leafGroupNodes is required") private List leafGroupNodes; /** * 推送终端配置 @@ -69,6 +68,14 @@ public class MessageTemplateDetailResponse implements Serializable { * 路由策略列表 */ private List routers; + /** + * 模板创建时间戳 + */ + private Long createTimestamp; + /** + * 模板更新时间戳 + */ + private Long updateTimestamp; @Override public String toString() {