Merge branch 'feature/REQ-1507' of axzsource.com:universal/infrastructure/backend/msg-center-plat into dev
This commit is contained in:
commit
edada4a119
@ -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);
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@ -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);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user