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

This commit is contained in:
luofu 2023-11-16 17:16:49 +08:00
commit edada4a119
3 changed files with 50 additions and 5 deletions

View File

@ -15,6 +15,7 @@ import cn.azxo.framework.common.model.CommonResponse;
import com.google.common.collect.Maps;
import lombok.RequiredArgsConstructor;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.RestController;
import java.util.LinkedList;
@ -55,10 +56,20 @@ public class MessageGroupController implements MessageGroupClient {
@Override
public CommonResponse<List<MessageGroupTreeNodeResponse>> list(MessageGroupQueryRequest request) {
List<MessageGroupTreeNodeResponse> groupTreeNodes = messageGroupNodeService
.listGroupTree(request.getCategory(), request.getNodeName()).stream()
.map(GroupTreeNodeDTO::toMessageGroupTreeNodeResponse)
.collect(Collectors.toList());
List<GroupTreeNodeDTO> trees = messageGroupNodeService
.listGroupTree(request.getCategory(), request.getNodeName());
List<MessageGroupTreeNodeResponse> groupTreeNodes;
if (StringUtils.isNotBlank(request.getNodeName())) {
// 根据分类结点名称搜索时需要剪枝
groupTreeNodes = trees.stream()
.map(this::convertCutTree)
.filter(e -> CollectionUtils.isNotEmpty(e.getChildren()))
.collect(Collectors.toList());
} else {
groupTreeNodes = trees.stream()
.map(GroupTreeNodeDTO::toMessageGroupTreeNodeResponse)
.collect(Collectors.toList());
}
return CommonResponse.success(groupTreeNodes);
}

View File

@ -15,6 +15,7 @@ import cn.axzo.msg.center.message.service.MessageGroupTreeNodeCacheService;
import cn.axzo.msg.center.service.dto.GroupTreeNodeDTO;
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum;
import cn.axzo.msg.center.service.enums.MessageGroupNodeCategoryEnum;
import cn.axzo.msg.center.utils.TreeHelperUtil;
import cn.axzo.msg.center.utils.UUIDUtil;
import lombok.RequiredArgsConstructor;
@ -144,7 +145,7 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService {
.filter(e -> Objects.isNull(category)
|| category.getMsgGroupNodeCategories().contains(e.getCategory()))
// 结点名称过滤条件
.filter(e -> StringUtils.isBlank(nodeName) || e.getNodeName().equals(nodeName))
.filter(e -> filterNodeName(e, category, nodeName))
.collect(Collectors.toList());
}
@ -206,4 +207,18 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService {
.count();
AssertUtil.isTrue(cnt == 0, "删除失败!删除前请先转移消息模版!");
}
private boolean filterNodeName(GroupTreeNodeDTO node, MessageGroupCategoryEnum category, String nodeName) {
if (StringUtils.isBlank(nodeName)) {
return true;
}
if (MessageGroupCategoryEnum.NOTIFICATION.equals(category)) {
return node.contains(MessageGroupNodeCategoryEnum.GENERAL_MESSAGE_CATEGORY, nodeName);
}
if (MessageGroupCategoryEnum.PENDING.equals(category)) {
return node.contains(MessageGroupNodeCategoryEnum.PENDING_MESSAGE_CATEGORY, nodeName);
}
return node.contains(MessageGroupNodeCategoryEnum.GENERAL_MESSAGE_CATEGORY, nodeName)
|| node.contains(MessageGroupNodeCategoryEnum.PENDING_MESSAGE_CATEGORY, nodeName);
}
}

View File

@ -83,6 +83,25 @@ public class GroupTreeNodeDTO implements IBaseTree<GroupTreeNodeDTO, String>, Se
child.setParentNode(this);
}
public boolean contains(MessageGroupNodeCategoryEnum category, String nodeName) {
if (Objects.isNull(category)) {
return false;
}
if (Objects.equals(this.category, category)) {
return Objects.equals(this.nodeName, nodeName);
}
LinkedList<GroupTreeNodeDTO> stack = new LinkedList<>();
stack.push(this);
while (!stack.isEmpty()) {
GroupTreeNodeDTO node = stack.pop();
if (Objects.equals(node.category, category) && Objects.equals(node.nodeName, nodeName)) {
return true;
}
stack.addAll(node.getNodeChildren());
}
return false;
}
@Override
public String getParentNodeCode() {
return Optional.ofNullable(parentNode).map(GroupTreeNodeDTO::getNodeCode).orElse(null);