From dbe25458e8982a4c3d448003d69c9cf52b0cb258 Mon Sep 17 00:00:00 2001 From: luofu Date: Mon, 13 Nov 2023 20:42:14 +0800 Subject: [PATCH] =?UTF-8?q?feat(REQ-1507):=20=E6=96=B0=E5=A2=9E=E5=88=86?= =?UTF-8?q?=E7=B1=BB=E5=88=97=E8=A1=A8=E6=9F=A5=E8=AF=A2=E7=9A=84=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 背景: https://jira.axzo.cn/browse/REQ-1507?goToView=1 修改: 1、新增分类列表查询的接口; 影响: 无 --- .../controller/MessageGroupController.java | 11 ++++++ .../service/MessageGroupNodeService.java | 9 +++++ .../impl/MessageGroupNodeServiceImpl.java | 13 +++++++ .../center/service/dto/GroupTreeNodeDTO.java | 25 +++++++++++++ .../group/client/MessageGroupClient.java | 11 ++++++ .../fallback/MessageGroupClientFallback.java | 8 ++++ .../request/MessageGroupNodeListRequest.java | 35 ++++++++++++++++++ .../MessageGroupNodeBriefResponse.java | 37 +++++++++++++++++++ 8 files changed, 149 insertions(+) create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeListRequest.java create mode 100644 msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageGroupNodeBriefResponse.java 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 92d7d7e4..35991d8b 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 @@ -5,8 +5,10 @@ import cn.axzo.msg.center.message.service.MessageGroupNodeService; import cn.axzo.msg.center.service.dto.GroupTreeNodeDTO; 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.MessageGroupNodeListRequest; import cn.axzo.msg.center.service.group.request.MessageGroupNodeUpdateRequest; import cn.axzo.msg.center.service.group.request.MessageGroupQueryRequest; +import cn.axzo.msg.center.service.group.response.MessageGroupNodeBriefResponse; import cn.axzo.msg.center.service.group.response.MessageGroupTreeNodeResponse; import cn.azxo.framework.common.model.CommonResponse; import lombok.RequiredArgsConstructor; @@ -54,4 +56,13 @@ public class MessageGroupController implements MessageGroupClient { .collect(Collectors.toList()); return CommonResponse.success(groupTreeNodes); } + + @Override + public CommonResponse> listNodeBriefInfo(MessageGroupNodeListRequest request) { + List groupTreeNodes = messageGroupNodeService + .listLeafNodes(request.getTerminalType(), request.getGroupCategory()).stream() + .map(e -> new MessageGroupNodeBriefResponse(e.getNodeName(), e.getNodeCode())) + .collect(Collectors.toList()); + return CommonResponse.success(groupTreeNodes); + } } 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 353980a9..1b23b3e4 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 @@ -91,4 +91,13 @@ public interface MessageGroupNodeService { * @return 对应的分类树的根节点编码列表 */ List listGroupTreeRootNodeCodes(MessageGroupCategoryEnum category, AppTerminalTypeEnum appTerminalType); + + /** + * 获取对应的应用终端配置的分类结点信息 + * + * @param appTerminalType 应用终端类型 + * @param category 模板分类结点的类型 + * @return 分类结点列表 + */ + List listLeafNodes(AppTerminalTypeEnum appTerminalType, 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 9e802cd9..30ca74e2 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 @@ -160,6 +160,19 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService { .collect(Collectors.toList()); } + @Override + public List listLeafNodes(AppTerminalTypeEnum appTerminalType, MessageGroupCategoryEnum category) { + AssertUtil.notNull(category, "category can not be null"); + List nodeIds = MessageGroupCategoryEnum.PENDING.equals(category) ? + pendingMessageBizConfig.fetchMessageGroupTreeNodeIds(appTerminalType) : Collections.emptyList(); + return messageGroupTreeNodeCacheService.listAllGroupTree().stream() + .filter(e -> category.getMsgGroupNodeCategories().contains(e.getCategory())) + .filter(e -> CollectionUtils.isEmpty(nodeIds) || nodeIds.contains(e.getNodeId())) + .flatMap(e -> e.getLeafNodes().stream()) + .filter(GroupTreeNodeDTO::canMountTemplate) + .collect(Collectors.toList()); + } + private MessageGroupNode convert(MessageGroupNodeSaveOrUpdateParam param) { MessageGroupNode groupNode = new MessageGroupNode(); groupNode.setCode(UUIDUtil.uuidString()); diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupTreeNodeDTO.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupTreeNodeDTO.java index b17cbcb8..b55645e6 100644 --- a/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupTreeNodeDTO.java +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/dto/GroupTreeNodeDTO.java @@ -4,14 +4,17 @@ import cn.axzo.basics.common.model.IBaseTree; import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum; import cn.axzo.msg.center.service.enums.StatusEnum; import cn.axzo.msg.center.service.group.response.MessageGroupTreeNodeResponse; +import com.google.common.collect.Lists; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Getter; import lombok.NoArgsConstructor; import lombok.Setter; +import org.apache.commons.collections.CollectionUtils; import java.io.Serializable; import java.util.Collections; +import java.util.LinkedList; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @@ -85,4 +88,26 @@ public class GroupTreeNodeDTO implements IBaseTree, Se .children(children) .build(); } + + public List getLeafNodes() { + if (CollectionUtils.isEmpty(this.nodeChildren)) { + return Collections.emptyList(); + } + List leafNodes = Lists.newArrayList(); + LinkedList stack = new LinkedList<>(this.nodeChildren); + while (!stack.isEmpty()) { + GroupTreeNodeDTO node = stack.pop(); + if (CollectionUtils.isEmpty(node.getNodeChildren())) { + leafNodes.add(node); + } else { + stack.addAll(node.getNodeChildren()); + } + } + return leafNodes; + } + + public boolean canMountTemplate() { + return MessageGroupNodeCategoryEnum.GENERAL_MESSAGE_CATEGORY.equals(this.category) + || MessageGroupNodeCategoryEnum.PENDING_MESSAGE_CATEGORY.equals(this.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 3f9ad39a..fc7bc0f5 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 @@ -2,8 +2,10 @@ package cn.axzo.msg.center.service.group.client; 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.MessageGroupNodeListRequest; import cn.axzo.msg.center.service.group.request.MessageGroupNodeUpdateRequest; import cn.axzo.msg.center.service.group.request.MessageGroupQueryRequest; +import cn.axzo.msg.center.service.group.response.MessageGroupNodeBriefResponse; import cn.axzo.msg.center.service.group.response.MessageGroupTreeNodeResponse; import cn.azxo.framework.common.model.CommonResponse; import org.springframework.cloud.openfeign.FeignClient; @@ -61,4 +63,13 @@ public interface MessageGroupClient { */ @PostMapping(value = "/message/group/node/list", produces = {MediaType.APPLICATION_JSON_VALUE}) CommonResponse> list(@RequestBody MessageGroupQueryRequest request); + + /** + * 查询通知/待办的分类信息 + * + * @param request 分页查询相关参数 + */ + @PostMapping(value = "/message/group/node/brief/list", produces = {MediaType.APPLICATION_JSON_VALUE}) + CommonResponse> listNodeBriefInfo(@RequestBody + MessageGroupNodeListRequest request); } 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 d94512c5..d89f35bc 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 @@ -2,8 +2,10 @@ package cn.axzo.msg.center.service.group.client.fallback; 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.MessageGroupNodeListRequest; import cn.axzo.msg.center.service.group.request.MessageGroupNodeUpdateRequest; import cn.axzo.msg.center.service.group.request.MessageGroupQueryRequest; +import cn.axzo.msg.center.service.group.response.MessageGroupNodeBriefResponse; import cn.axzo.msg.center.service.group.response.MessageGroupTreeNodeResponse; import cn.azxo.framework.common.model.CommonResponse; import lombok.extern.slf4j.Slf4j; @@ -44,4 +46,10 @@ public class MessageGroupClientFallback implements MessageGroupClient { log.error("fall back while listing message group node. request:{}", request); return CommonResponse.error("fall back while listing message group node"); } + + @Override + public CommonResponse> listNodeBriefInfo(MessageGroupNodeListRequest request) { + log.error("fall back while listing message group node brief info. request:{}", request); + return CommonResponse.error("fall back while listing message group node brief info."); + } } diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeListRequest.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeListRequest.java new file mode 100644 index 00000000..470dff73 --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/request/MessageGroupNodeListRequest.java @@ -0,0 +1,35 @@ +package cn.axzo.msg.center.service.group.request; + +import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum; +import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum; +import com.alibaba.fastjson.JSON; +import lombok.Getter; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @author cold_blade + * @date 2023/11/13 + * @version 1.0 + */ +@Setter +@Getter +public class MessageGroupNodeListRequest implements Serializable { + + private static final long serialVersionUID = 6386337063784961842L; + + /** + * 应用终端类型 + */ + private AppTerminalTypeEnum terminalType; + /** + * 消息模板分类的种类 + */ + private MessageGroupCategoryEnum groupCategory; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +} diff --git a/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageGroupNodeBriefResponse.java b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageGroupNodeBriefResponse.java new file mode 100644 index 00000000..8f0f16dd --- /dev/null +++ b/msg-center-api/src/main/java/cn/axzo/msg/center/service/group/response/MessageGroupNodeBriefResponse.java @@ -0,0 +1,37 @@ +package cn.axzo.msg.center.service.group.response; + +import com.alibaba.fastjson.JSON; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.io.Serializable; + +/** + * @author cold_blade + * @date 2023/11/13 + * @version 1.0 + */ +@Setter +@Getter +@NoArgsConstructor +@AllArgsConstructor +public class MessageGroupNodeBriefResponse implements Serializable { + + private static final long serialVersionUID = -4032240752827379030L; + + /** + * 分类名称 + */ + private String name; + /** + * 分类编码 + */ + private String code; + + @Override + public String toString() { + return JSON.toJSONString(this); + } +}