From 456a34ac205485e5f2ab4aaaab6a6f9f25f44c64 Mon Sep 17 00:00:00 2001 From: luofu Date: Tue, 31 Oct 2023 15:00:54 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-1465):=20=E4=BC=98=E5=8C=96=E6=96=B0?= =?UTF-8?q?=E8=80=81=E6=A8=A1=E6=9D=BF=E6=98=A0=E5=B0=84=E5=88=9D=E5=A7=8B?= =?UTF-8?q?=E5=8C=96=E7=9A=84=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1465?goToView=1 修改: 1、优化新老模板映射初始化的逻辑 影响: 无 --- .../controller/MessageTemplateController.java | 3 +- .../param/RelationTemplateMapInitParam.java | 6 ++-- .../vo/RelationTemplateMapInitRequest.java | 35 ++++++++++++++++++- .../impl/RelationTemplateMapServiceImpl.java | 23 +++++++++--- 4 files changed, 57 insertions(+), 10 deletions(-) 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 c24681cd..6f283c40 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 @@ -1,6 +1,5 @@ package cn.axzo.msg.center.message.controller; -import cn.axzo.core.utils.converter.BeanConverter; import cn.axzo.msg.center.message.domain.param.MessageTemplateSaveOrUpdateParam; import cn.axzo.msg.center.message.domain.param.RelationTemplateMapInitParam; import cn.axzo.msg.center.message.domain.vo.RelationTemplateMapInitRequest; @@ -74,7 +73,7 @@ public class MessageTemplateController implements MessageTemplateClient { @PostMapping(value = "/message/template/relation/init", produces = {MediaType.APPLICATION_JSON_VALUE}) public CommonResponse initRelationTemplateMap(@RequestBody @Valid RelationTemplateMapInitRequest request) { - RelationTemplateMapInitParam param = BeanConverter.convert(request, RelationTemplateMapInitParam.class); + RelationTemplateMapInitParam param = request.toInitParam(); relationTemplateMapService.init(param); return CommonResponse.success(); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/RelationTemplateMapInitParam.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/RelationTemplateMapInitParam.java index cb1bca6a..369a50d0 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/RelationTemplateMapInitParam.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/param/RelationTemplateMapInitParam.java @@ -1,5 +1,6 @@ package cn.axzo.msg.center.message.domain.param; +import cn.axzo.msg.center.service.enums.PushTerminalEnum; import com.alibaba.fastjson.JSON; import lombok.AllArgsConstructor; import lombok.Builder; @@ -7,7 +8,8 @@ import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; -import java.util.Collection; +import java.util.List; +import java.util.Map; /** * @author cold_blade @@ -21,7 +23,7 @@ import java.util.Collection; @AllArgsConstructor public class RelationTemplateMapInitParam { - private Collection relationIds; + private Map> relationPushTerminalMap; private String groupNodeCode; @Override diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/vo/RelationTemplateMapInitRequest.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/vo/RelationTemplateMapInitRequest.java index f8a49139..b3dffcce 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/vo/RelationTemplateMapInitRequest.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/domain/vo/RelationTemplateMapInitRequest.java @@ -1,14 +1,22 @@ package cn.axzo.msg.center.message.domain.vo; +import cn.axzo.msg.center.message.domain.param.RelationTemplateMapInitParam; +import cn.axzo.msg.center.service.enums.PushTerminalEnum; import com.alibaba.fastjson.JSON; import lombok.AllArgsConstructor; import lombok.Builder; +import lombok.Data; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.apache.commons.collections.CollectionUtils; import javax.validation.constraints.NotBlank; import java.util.Collection; +import java.util.Collections; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; /** * @author cold_blade @@ -22,12 +30,37 @@ import java.util.Collection; @AllArgsConstructor public class RelationTemplateMapInitRequest { - private Collection relationIds; + private Collection entries; @NotBlank(message = "groupNodeCode is required") private String groupNodeCode; + public RelationTemplateMapInitParam toInitParam() { + Map> map = Collections.emptyMap(); + if (CollectionUtils.isNotEmpty(entries)) { + map = entries.stream() + .collect(Collectors.toMap(MapEntry::getKey, MapEntry::getValue)); + } + return RelationTemplateMapInitParam.builder() + .groupNodeCode(groupNodeCode) + .relationPushTerminalMap(map) + .build(); + } + @Override public String toString() { return JSON.toJSONString(this); } + + @Data + static class MapEntry { + + /** + * key + */ + private Long key; + /** + * value + */ + private List value; + } } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/RelationTemplateMapServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/RelationTemplateMapServiceImpl.java index 381a60ec..91bce7b6 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/RelationTemplateMapServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/RelationTemplateMapServiceImpl.java @@ -1,5 +1,6 @@ package cn.axzo.msg.center.message.service.impl; +import cn.axzo.framework.core.util.MapUtil; import cn.axzo.msg.center.common.enums.TableIsDeleteEnum; import cn.axzo.msg.center.dal.MessageBaseTemplateDao; import cn.axzo.msg.center.dal.RelationTemplateMapDao; @@ -102,12 +103,16 @@ public class RelationTemplateMapServiceImpl implements RelationTemplateMapServic @Transactional(rollbackFor = Exception.class) public void init(RelationTemplateMapInitParam param) { List allRelations = messageRelationService.getAllRelations(); - if (CollectionUtils.isNotEmpty(param.getRelationIds())) { + if (MapUtil.isNotEmpty(param.getRelationPushTerminalMap())) { // 指定了需要创建并关联的relationId allRelations = allRelations.stream() - .filter(e -> param.getRelationIds().contains(e.getId())) + .filter(e -> param.getRelationPushTerminalMap().containsKey(e.getId())) .collect(Collectors.toList()); } + if (CollectionUtils.isEmpty(allRelations)) { + log.info("not found any valid relation id."); + return; + } // relationId与templateId的map Map relationIdTemplateIdMap = allRelations.stream() .collect(Collectors.toMap(MessageRelation::getId, MessageRelation::getTemplateId)); @@ -117,6 +122,10 @@ public class RelationTemplateMapServiceImpl implements RelationTemplateMapServic relationIdTemplateIdMap = relationIdTemplateIdMap.entrySet().stream() .filter(e -> !mappedRelationIds.contains(e.getKey())) .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + if (MapUtil.isEmpty(relationIdTemplateIdMap)) { + log.info("{} has been mapped.", param.getRelationPushTerminalMap().keySet()); + return; + } // 获取生效中的模板 Map messageTemplates = messageTemplateService.getAllTemplates().stream() .collect(Collectors.toMap(MessageTemplate::getId, Function.identity())); @@ -130,7 +139,8 @@ public class RelationTemplateMapServiceImpl implements RelationTemplateMapServic .collect(Collectors.groupingBy(MessageRouter::getRelationId)); // 转化为新模板的数据模型wrapper List wrappers = relationIdTemplateIdMap.entrySet().stream() - .map(e -> convert(e.getKey(), messageTemplates.get(e.getValue()), messageRouters.get(e.getKey()))) + .map(e -> convert(e.getKey(), messageTemplates.get(e.getValue()), messageRouters.get(e.getKey()), + param.getRelationPushTerminalMap())) .collect(Collectors.toList()); // 批量插入 messageBaseTemplateDao.saveBatch(wrappers.stream() @@ -149,9 +159,12 @@ public class RelationTemplateMapServiceImpl implements RelationTemplateMapServic mapRelationAndTemplate(relationIdTemplateCodeMap); } - private CreateNewTemplateAndMapWrapper convert(Long relationId, MessageTemplate template, - List routers) { + private CreateNewTemplateAndMapWrapper convert(Long relationId, MessageTemplate template, List routers, + Map> relationPushTerminalMap) { MessageBaseTemplate baseTemplate = convert(template); + if (MapUtil.isNotEmpty(relationPushTerminalMap) && relationPushTerminalMap.containsKey(relationId)) { + baseTemplate.setPushTerminal(JSONObjectUtil.toJSONString(relationPushTerminalMap.get(relationId))); + } CreateNewTemplateAndMapWrapper wrapper = CreateNewTemplateAndMapWrapper.builder() .baseTemplate(baseTemplate) .relationId(relationId)