diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/config/MessageSystemConfig.java b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/config/MessageSystemConfig.java index 113845a8..507a27c3 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/config/MessageSystemConfig.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/inside/notices/config/MessageSystemConfig.java @@ -24,6 +24,6 @@ public class MessageSystemConfig { */ @Value("${message.common.record.divide-days:-1}") private Integer dataDivideDays; - @Value("${message.common.icon.orgIcon:https://axzo-pro.oss-cn-hangzhou.aliyuncs.com/rs_app/ic_org_icon.png}") + @Value("${message.common.icon.orgIcon:https://axzo-public.oss-cn-chengdu.aliyuncs.com/6253b72fdd8afe30b9f765494ce6a756.png}") private String orgIcon; } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageGroupController.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageGroupController.java index 631c0490..e0933dc4 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageGroupController.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/controller/MessageGroupController.java @@ -4,6 +4,7 @@ import cn.axzo.msg.center.message.domain.param.MessageGroupNodeSaveOrUpdateParam import cn.axzo.msg.center.message.service.MessageGroupNodeService; import cn.axzo.msg.center.service.dto.GroupTreeNodeDTO; import cn.axzo.msg.center.service.enums.MessageCategoryEnum; +import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum; import cn.axzo.msg.center.service.group.client.MessageGroupClient; import cn.axzo.msg.center.service.group.request.MessageGroupNodeAddRequest; import cn.axzo.msg.center.service.group.request.MessageGroupNodeUpdateRequest; @@ -47,7 +48,7 @@ public class MessageGroupController implements MessageGroupClient { } @Override - public CommonResponse> list(MessageCategoryEnum category) { + public CommonResponse> list(MessageGroupCategoryEnum category) { List groupTreeNodes = messageGroupNodeService.listGroupTree(category).stream() .map(GroupTreeNodeDTO::toMessageGroupTreeNodeResponse) .collect(Collectors.toList()); 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/MessageGroupNodeService.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupNodeService.java index 3a328708..e5f8f0ab 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupNodeService.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/MessageGroupNodeService.java @@ -2,7 +2,7 @@ package cn.axzo.msg.center.message.service; import cn.axzo.msg.center.message.domain.param.MessageGroupNodeSaveOrUpdateParam; import cn.axzo.msg.center.service.dto.GroupTreeNodeDTO; -import cn.axzo.msg.center.service.enums.MessageCategoryEnum; +import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum; import java.util.Collection; import java.util.List; @@ -69,5 +69,5 @@ public interface MessageGroupNodeService { * @param category 消息/待办 * @return 分类树列表 */ - List listGroupTree(MessageCategoryEnum category); + List listGroupTree(MessageGroupCategoryEnum category); } diff --git a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupNodeServiceImpl.java b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupNodeServiceImpl.java index 97680abd..da249dee 100644 --- a/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupNodeServiceImpl.java +++ b/inside-notices/src/main/java/cn/axzo/msg/center/message/service/impl/MessageGroupNodeServiceImpl.java @@ -12,7 +12,7 @@ import cn.axzo.msg.center.message.domain.param.MessageGroupNodeSaveOrUpdateParam import cn.axzo.msg.center.message.service.MessageGroupNodeService; import cn.axzo.msg.center.message.service.MessageGroupTreeNodeCacheService; import cn.axzo.msg.center.service.dto.GroupTreeNodeDTO; -import cn.axzo.msg.center.service.enums.MessageCategoryEnum; +import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum; import cn.axzo.msg.center.utils.TreeHelperUtil; import cn.axzo.msg.center.utils.UUIDUtil; import lombok.RequiredArgsConstructor; @@ -124,11 +124,11 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService { } @Override - public List listGroupTree(MessageCategoryEnum category) { + public List listGroupTree(MessageGroupCategoryEnum category) { return messageGroupTreeNodeCacheService.listAllGroupTree().stream() // 查询消息/待办 OR 两者的分类树 .filter(e -> Objects.isNull(category) - || Objects.equals(e.getCategory().getMsgCategory(), category)) + || category.getMsgGroupNodeCategories().contains(e.getCategory())) .collect(Collectors.toList()); } 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) diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageCategoryEnum.java index b879e335..f4b23fdc 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageCategoryEnum.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageCategoryEnum.java @@ -15,8 +15,9 @@ import lombok.Getter; @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum MessageCategoryEnum { - GENERAL_MESSAGE(1, "普通消息"), - PENDING_MESSAGE(2, "待办消息"); + GENERAL_MESSAGE(1, "通知"), + BIZ_PENDING_MESSAGE(2, "业务待办"), + APPROVAL_PENDING_MESSAGE(3, "审批待办"); private final Integer code; private final String message; diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupCategoryEnum.java new file mode 100644 index 00000000..5a1c1e45 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupCategoryEnum.java @@ -0,0 +1,30 @@ +package cn.axzo.msg.center.service.enums; + +import lombok.AccessLevel; +import lombok.AllArgsConstructor; +import lombok.Getter; + +import java.util.Set; + +/** + * @description + * 消息分类的类型枚举 + * @author cold_blade + * @date 2023/11/6 + * @version 1.0 + */ +@Getter +@AllArgsConstructor(access = AccessLevel.PRIVATE) +public enum MessageGroupCategoryEnum { + + /** + * 通知 + */ + NOTIFICATION(MessageGroupNodeCategoryEnum.NOTIFICATION), + /** + * 待办 + */ + PENDING(MessageGroupNodeCategoryEnum.PENDING); + + private final Set msgGroupNodeCategories; +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java index f85abe17..dbaf55c7 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/enums/MessageGroupNodeCategoryEnum.java @@ -1,9 +1,12 @@ package cn.axzo.msg.center.service.enums; +import com.google.common.collect.Sets; import lombok.AccessLevel; import lombok.AllArgsConstructor; import lombok.Getter; +import java.util.Set; + /** * @description * @@ -15,15 +18,20 @@ import lombok.Getter; @AllArgsConstructor(access = AccessLevel.PRIVATE) public enum MessageGroupNodeCategoryEnum { - GENERAL_MESSAGE_CENTER("消息中心", 1, MessageCategoryEnum.GENERAL_MESSAGE), - GENERAL_MESSAGE_MODULE("消息模块", 2, MessageCategoryEnum.GENERAL_MESSAGE), - GENERAL_MESSAGE_CATEGORY("消息分类", 3, MessageCategoryEnum.GENERAL_MESSAGE), - PENDING_MESSAGE_CENTER("待办中心", 1, MessageCategoryEnum.PENDING_MESSAGE), - PENDING_MESSAGE_MODULE("待办模块", 2, MessageCategoryEnum.PENDING_MESSAGE), - PENDING_MESSAGE_CATEGORY("待办分类", 3, MessageCategoryEnum.PENDING_MESSAGE), + GENERAL_MESSAGE_CENTER("消息中心", 1), + GENERAL_MESSAGE_MODULE("消息模块", 2), + GENERAL_MESSAGE_CATEGORY("消息分类", 3), + PENDING_MESSAGE_CENTER("待办中心", 1), + PENDING_MESSAGE_MODULE("待办模块", 2), + PENDING_MESSAGE_CATEGORY("待办分类", 3), ; private final String desc; private final int level; - private final MessageCategoryEnum msgCategory; + + public static final Set NOTIFICATION = + Sets.newHashSet(GENERAL_MESSAGE_CENTER, GENERAL_MESSAGE_MODULE, GENERAL_MESSAGE_CATEGORY); + + public static final Set PENDING = + Sets.newHashSet(PENDING_MESSAGE_CENTER, PENDING_MESSAGE_MODULE, PENDING_MESSAGE_CATEGORY); } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java index 04c8bb65..8f0a90fe 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/MessageGroupClient.java @@ -1,6 +1,6 @@ package cn.axzo.msg.center.service.group.client; -import cn.axzo.msg.center.service.enums.MessageCategoryEnum; +import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum; import cn.axzo.msg.center.service.group.client.fallback.MessageGroupClientFallback; import cn.axzo.msg.center.service.group.request.MessageGroupNodeAddRequest; import cn.axzo.msg.center.service.group.request.MessageGroupNodeUpdateRequest; @@ -61,5 +61,5 @@ public interface MessageGroupClient { */ @PostMapping(value = "/message/group/node/list", produces = {MediaType.APPLICATION_JSON_VALUE}) CommonResponse> list(@RequestParam(value = "category", required = false) - MessageCategoryEnum category); + MessageGroupCategoryEnum category); } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java index b72f583b..8f2b1482 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/client/fallback/MessageGroupClientFallback.java @@ -1,6 +1,6 @@ package cn.axzo.msg.center.service.group.client.fallback; -import cn.axzo.msg.center.service.enums.MessageCategoryEnum; +import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum; import cn.axzo.msg.center.service.group.client.MessageGroupClient; import cn.axzo.msg.center.service.group.request.MessageGroupNodeAddRequest; import cn.axzo.msg.center.service.group.request.MessageGroupNodeUpdateRequest; @@ -40,7 +40,7 @@ public class MessageGroupClientFallback implements MessageGroupClient { } @Override - public CommonResponse> list(MessageCategoryEnum category) { + public CommonResponse> list(MessageGroupCategoryEnum category) { log.error("fall back while listing message group node. category:[{}]", category); return CommonResponse.error("fall back while listing message group node"); } diff --git a/pom.xml b/pom.xml index d7ec1313..5d7a76f3 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,7 @@ 8 8 UTF-8 - 1.0.0-SNAPSHOT + 1.0.1-SNAPSHOT 2.0.0-SNAPSHOT 2.0.0-SNAPSHOT 1.18.22