diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/permission/PermissionPointTreeNode.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/permission/PermissionPointTreeNode.java index 16bdf184..5bc11adc 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/permission/PermissionPointTreeNode.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/permission/PermissionPointTreeNode.java @@ -1,10 +1,13 @@ package cn.axzo.tyr.client.model.permission; import cn.axzo.basics.common.model.IBaseTree; +import cn.axzo.framework.domain.ServiceException; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.fastjson.annotation.JSONField; import com.fasterxml.jackson.annotation.JsonIgnore; import lombok.Data; +import java.util.ArrayList; import java.util.List; /** @@ -76,4 +79,30 @@ public class PermissionPointTreeNode implements IBaseTree nodeChildren) { this.children = nodeChildren; } + /** + * 将树型结构平铺展示。会将当前节点也添加到children中 + */ + public void flatChildren() { + if (CollectionUtil.isNotEmpty(children)) { + this.children = getNode(new ArrayList<>(),children, 10); + } + } + + private List getNode(List rootList,List list,Integer maxDepth) { + if (maxDepth < 1) { + throw new ServiceException("超过最大递归深度,可能发生死循环"); + } + if (CollectionUtil.isEmpty(list)) { + return rootList; + } + list.stream().forEach(e -> { + getNode(rootList, e.getChildren(), maxDepth - 1); + e.setChildren(null); + } ); + + rootList.addAll(list); + + + return rootList; + } } diff --git a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleVO.java b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleVO.java index fd657e65..ac4a41f9 100644 --- a/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleVO.java +++ b/tyr-api/src/main/java/cn/axzo/tyr/client/model/vo/SaasRoleVO.java @@ -82,6 +82,7 @@ public class SaasRoleVO { // 通用权限 if (CollectionUtil.isEmpty(permissionGroupVO.getScopes())) { permissionPoint.addAll(permissionGroupVO.getFeature()); + continue; } List scopes = permissionGroupVO.getScopes();