diff --git a/ace-dev-base/ace-common/src/main/java/com/github/wxiaoqi/security/common/util/TreeUtil.java b/ace-dev-base/ace-common/src/main/java/com/github/wxiaoqi/security/common/util/TreeUtil.java index aac35b4420007224af31eb368c8e13e77ee471c1..400c04c3b14d090730d06793b7750e41db82b092 100644 --- a/ace-dev-base/ace-common/src/main/java/com/github/wxiaoqi/security/common/util/TreeUtil.java +++ b/ace-dev-base/ace-common/src/main/java/com/github/wxiaoqi/security/common/util/TreeUtil.java @@ -4,6 +4,7 @@ import com.github.wxiaoqi.security.common.vo.TreeNode; import java.util.ArrayList; import java.util.List; +import java.util.stream.Collectors; /** * Created by Ace on 2017/6/12. @@ -37,6 +38,36 @@ public class TreeUtil{ return trees; } + /** + * 两层循环实现建树 + * + * @param + * @param treeNodes + * @param root 根结点list + * @return + */ + public static List bulid(List treeNodes, List root) { + + List trees = new ArrayList(); + + for (T treeNode : treeNodes) { + + if (root.stream().filter(n -> n.equals(treeNode.getParentId())).collect(Collectors.toList()).size() > 0) { + trees.add(treeNode); + } + + for (T it : treeNodes) { + if (it.getParentId() == treeNode.getId()) { + if (treeNode.getChildren() == null) { + treeNode.setChildren(new ArrayList()); + } + treeNode.add(it); + } + } + } + return trees; + } + /** * 使用递归方法建树 * diff --git a/ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/modules/admin/rpc/service/PermissionService.java b/ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/modules/admin/rpc/service/PermissionService.java index bf2409ba5b85c7c7bb74385cb424792727dfaa6d..382dc164bf2e7c1539899e6b93ac22c6b2ab6759 100644 --- a/ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/modules/admin/rpc/service/PermissionService.java +++ b/ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/modules/admin/rpc/service/PermissionService.java @@ -213,9 +213,7 @@ public class PermissionService { } // 配置路由权限 List accessRoutes = new ArrayList<>(); - for (Integer menuId : menuIds) { - accessRoutes.addAll(TreeUtil.bulid(routeTrees, menuId)); - } + accessRoutes.addAll(TreeUtil.bulid(routeTrees, menuIds)); frontUser.setAccessMenus(TreeUtil.bulid(menuTrees, AdminCommonConstant.ROOT)); frontUser.setAccessHeader(header); frontUser.setAccessRoutes(accessRoutes);