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

This commit is contained in:
luofu 2023-11-13 20:42:51 +08:00
commit 1f7685fc7b
8 changed files with 149 additions and 0 deletions

View File

@ -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<List<MessageGroupNodeBriefResponse>> listNodeBriefInfo(MessageGroupNodeListRequest request) {
List<MessageGroupNodeBriefResponse> groupTreeNodes = messageGroupNodeService
.listLeafNodes(request.getTerminalType(), request.getGroupCategory()).stream()
.map(e -> new MessageGroupNodeBriefResponse(e.getNodeName(), e.getNodeCode()))
.collect(Collectors.toList());
return CommonResponse.success(groupTreeNodes);
}
}

View File

@ -91,4 +91,13 @@ public interface MessageGroupNodeService {
* @return 对应的分类树的根节点编码列表
*/
List<String> listGroupTreeRootNodeCodes(MessageGroupCategoryEnum category, AppTerminalTypeEnum appTerminalType);
/**
* 获取对应的应用终端配置的分类结点信息
*
* @param appTerminalType 应用终端类型
* @param category 模板分类结点的类型
* @return 分类结点列表
*/
List<GroupTreeNodeDTO> listLeafNodes(AppTerminalTypeEnum appTerminalType, MessageGroupCategoryEnum category);
}

View File

@ -160,6 +160,19 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService {
.collect(Collectors.toList());
}
@Override
public List<GroupTreeNodeDTO> listLeafNodes(AppTerminalTypeEnum appTerminalType, MessageGroupCategoryEnum category) {
AssertUtil.notNull(category, "category can not be null");
List<Long> 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());

View File

@ -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<GroupTreeNodeDTO, String>, Se
.children(children)
.build();
}
public List<GroupTreeNodeDTO> getLeafNodes() {
if (CollectionUtils.isEmpty(this.nodeChildren)) {
return Collections.emptyList();
}
List<GroupTreeNodeDTO> leafNodes = Lists.newArrayList();
LinkedList<GroupTreeNodeDTO> 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);
}
}

View File

@ -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<MessageGroupTreeNodeResponse>> list(@RequestBody MessageGroupQueryRequest request);
/**
* 查询通知/待办的分类信息
*
* @param request 分页查询相关参数
*/
@PostMapping(value = "/message/group/node/brief/list", produces = {MediaType.APPLICATION_JSON_VALUE})
CommonResponse<List<MessageGroupNodeBriefResponse>> listNodeBriefInfo(@RequestBody
MessageGroupNodeListRequest request);
}

View File

@ -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<List<MessageGroupNodeBriefResponse>> 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.");
}
}

View File

@ -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);
}
}

View File

@ -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);
}
}