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 com.google.common.collect.Maps;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.commons.collections.CollectionUtils;
|
import org.apache.commons.collections.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import java.util.LinkedList;
|
import java.util.LinkedList;
|
||||||
@ -55,10 +56,20 @@ public class MessageGroupController implements MessageGroupClient {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public CommonResponse<List<MessageGroupTreeNodeResponse>> list(MessageGroupQueryRequest request) {
|
public CommonResponse<List<MessageGroupTreeNodeResponse>> list(MessageGroupQueryRequest request) {
|
||||||
List<MessageGroupTreeNodeResponse> groupTreeNodes = messageGroupNodeService
|
List<GroupTreeNodeDTO> trees = messageGroupNodeService
|
||||||
.listGroupTree(request.getCategory(), request.getNodeName()).stream()
|
.listGroupTree(request.getCategory(), request.getNodeName());
|
||||||
.map(GroupTreeNodeDTO::toMessageGroupTreeNodeResponse)
|
List<MessageGroupTreeNodeResponse> groupTreeNodes;
|
||||||
.collect(Collectors.toList());
|
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);
|
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.dto.GroupTreeNodeDTO;
|
||||||
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
|
import cn.axzo.msg.center.service.enums.AppTerminalTypeEnum;
|
||||||
import cn.axzo.msg.center.service.enums.MessageGroupCategoryEnum;
|
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.TreeHelperUtil;
|
||||||
import cn.axzo.msg.center.utils.UUIDUtil;
|
import cn.axzo.msg.center.utils.UUIDUtil;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -144,7 +145,7 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService {
|
|||||||
.filter(e -> Objects.isNull(category)
|
.filter(e -> Objects.isNull(category)
|
||||||
|| category.getMsgGroupNodeCategories().contains(e.getCategory()))
|
|| category.getMsgGroupNodeCategories().contains(e.getCategory()))
|
||||||
// 结点名称过滤条件
|
// 结点名称过滤条件
|
||||||
.filter(e -> StringUtils.isBlank(nodeName) || e.getNodeName().equals(nodeName))
|
.filter(e -> filterNodeName(e, category, nodeName))
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -206,4 +207,18 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService {
|
|||||||
.count();
|
.count();
|
||||||
AssertUtil.isTrue(cnt == 0, "删除失败!删除前请先转移消息模版!");
|
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);
|
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
|
@Override
|
||||||
public String getParentNodeCode() {
|
public String getParentNodeCode() {
|
||||||
return Optional.ofNullable(parentNode).map(GroupTreeNodeDTO::getNodeCode).orElse(null);
|
return Optional.ofNullable(parentNode).map(GroupTreeNodeDTO::getNodeCode).orElse(null);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user