Merge branch 'feature/REQ-1465' of axzsource.com:universal/infrastructure/backend/msg-center-plat into dev

This commit is contained in:
luofu 2023-10-17 14:07:02 +08:00
commit 4c0077e74f
5 changed files with 85 additions and 10 deletions

View File

@ -41,8 +41,7 @@ public class MessageTemplateController implements MessageTemplateClient {
@Override
public CommonResponse<MessageTemplateDetailResponse> detail(String templateCode) {
// TODO:[cold_blade] [P0] query template
return null;
return CommonResponse.success(messageTemplateNewService.detail(templateCode));
}
@Override

View File

@ -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<MessageTemplateRouter> toMessageTemplateRouters() {
return this.terminals.stream()
.map(this::convert)

View File

@ -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);
/**
* 通过模板编码查询模板信息
*

View File

@ -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<String> groupNodePaths = messageTemplateGroupService.listMessageTemplateGroupPaths(
Lists.newArrayList(templateCode)).getOrDefault(templateCode, Collections.emptyList());
List<RawMessageRouterDTO> routers = messageTemplateRouterService.queryByTemplateCode(templateCode);
return convert(baseTemplate, groupNodePaths, routers);
}
@Override
public Optional<MessageTemplateDTO> 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<RawMessageRouterDTO> routers = param.getRouters().stream()
.map(e -> RawMessageRouterDTO.from(e, templateCode))
.collect(Collectors.toList());
messageTemplateRouterService.batchInsert(routers);
}
private MessageTemplatePageResponse convert(MessageBaseTemplate record, Map<String, List<String>> groupNodePaths,
Map<String, String> 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<RawMessageRouterDTO> routers = param.getRouters().stream()
.map(e -> RawMessageRouterDTO.from(e, templateCode))
private MessageTemplateDetailResponse convert(MessageBaseTemplate record, List<String> groupNodePaths,
List<RawMessageRouterDTO> routers) {
// 将path解析中解析出分类结点路径叶结点的编码
List<String> groupNodeCodes = groupNodePaths.stream()
.map(GroupTreeNodePathDTO::parseLeafNodeCode)
.collect(Collectors.toList());
messageTemplateRouterService.batchInsert(routers);
// 转化为页面相关的数据模型
List<MessageRouterButtonDTO> 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();
}
}

View File

@ -41,7 +41,6 @@ public class MessageTemplateDetailResponse implements Serializable {
/**
* 消息分类树的叶结点的结点编码列表
*/
@NotEmpty(message = "leafGroupNodes is required")
private List<String> leafGroupNodes;
/**
* 推送终端配置
@ -69,6 +68,14 @@ public class MessageTemplateDetailResponse implements Serializable {
* 路由策略列表
*/
private List<MessageRouterButtonDTO> routers;
/**
* 模板创建时间戳
*/
private Long createTimestamp;
/**
* 模板更新时间戳
*/
private Long updateTimestamp;
@Override
public String toString() {