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 ebdc4c92..58a9d7ca 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 @@ -79,8 +79,9 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService { @Override public void addGroupNode(MessageGroupNodeSaveOrUpdateParam param) { - GroupTreeNodeDTO parent = messageGroupTreeNodeCacheService.queryNode(param.getParentNodeCode()) - .orElseThrow(() -> new ServiceException("parentNodeCode is invalid")); + GroupTreeNodeDTO parent = StringUtils.isBlank(param.getParentNodeCode()) ? null : + messageGroupTreeNodeCacheService.queryNode(param.getParentNodeCode()) + .orElseThrow(() -> new ServiceException("parentNodeCode is invalid")); // 合法性校验 checkCreateRule(parent, param); // 存储 @@ -148,7 +149,9 @@ public class MessageGroupNodeServiceImpl implements MessageGroupNodeService { } private void checkCreateRule(GroupTreeNodeDTO parent, MessageGroupNodeSaveOrUpdateParam param) { - AssertUtil.isTrue(parent.getCategory().getLevel() < param.getCategory().getLevel(), "父节点的类型非法"); + if (Objects.nonNull(parent)) { + AssertUtil.isTrue(parent.getCategory().getLevel() < param.getCategory().getLevel(), "父节点的类型非法"); + } } private void checkDeleteRule(String nodeCode) { 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 e360c55a..21c25890 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 @@ -63,22 +63,23 @@ public class GroupTreeNodeDTO implements IBaseTree, Se private List nodeChildren = Collections.emptyList(); public MessageGroupTreeNodeResponse toMessageGroupTreeNodeResponse() { + List children = Optional.ofNullable(nodeChildren) + .map(v -> v.stream().map(GroupTreeNodeDTO::toMessageGroupTreeNodeResponse).collect(Collectors.toList())) + .orElseGet(Collections::emptyList); return MessageGroupTreeNodeResponse.builder() .category(category) .nodeName(nodeName) .nodeCode(nodeCode) .parentNodeCode(parentNodeCode) - .children(nodeChildren.stream() - .map(GroupTreeNodeDTO::toMessageGroupTreeNodeResponse) - .collect(Collectors.toList())) + .children(children) .build(); } public Optional getChild(String treeNodeCode) { - if (StringUtils.isBlank(treeNodeCode)) { + if (StringUtils.isBlank(treeNodeCode) || Objects.isNull(nodeChildren)) { return Optional.empty(); } - return getNodeChildren().stream() + return nodeChildren.stream() .filter(e -> Objects.equals(e.getNodeCode(), treeNodeCode)) .findFirst(); }