From f45445073f8cfc8c518662fe9932b27cdf54967f Mon Sep 17 00:00:00 2001 From: RuoYi <yzz_ivy@163.com> Date: 星期五, 28 八月 2020 10:08:02 +0800 Subject: [PATCH] 优化递归子节点 --- src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java | 23 +++++++++++------------ src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java | 8 +------- 2 files changed, 12 insertions(+), 19 deletions(-) diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java index 4e0ef4a..6acea9e 100644 --- a/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/service/impl/SysDeptServiceImpl.java @@ -267,13 +267,7 @@ { if (hasChild(list, tChild)) { - // 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣 - Iterator<SysDept> it = childList.iterator(); - while (it.hasNext()) - { - SysDept n = (SysDept) it.next(); - recursionFn(list, n); - } + recursionFn(list, tChild); } } } diff --git a/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java b/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java index e5dda00..fb1c830 100644 --- a/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java +++ b/src/main/java/com/ruoyi/project/system/service/impl/SysMenuServiceImpl.java @@ -178,14 +178,19 @@ public List<SysMenu> buildMenuTree(List<SysMenu> menus) { List<SysMenu> returnList = new ArrayList<SysMenu>(); + List<Long> tempList = new ArrayList<Long>(); + for (SysMenu dept : menus) + { + tempList.add(dept.getMenuId()); + } for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();) { - SysMenu t = (SysMenu) iterator.next(); - // 鏍规嵁浼犲叆鐨勬煇涓埗鑺傜偣ID,閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 - if (t.getParentId() == 0) + SysMenu menu = (SysMenu) iterator.next(); + // 濡傛灉鏄《绾ц妭鐐�, 閬嶅巻璇ョ埗鑺傜偣鐨勬墍鏈夊瓙鑺傜偣 + if (!tempList.contains(menu.getParentId())) { - recursionFn(menus, t); - returnList.add(t); + recursionFn(menus, menu); + returnList.add(menu); } } if (returnList.isEmpty()) @@ -406,13 +411,7 @@ { if (hasChild(list, tChild)) { - // 鍒ゆ柇鏄惁鏈夊瓙鑺傜偣 - Iterator<SysMenu> it = childList.iterator(); - while (it.hasNext()) - { - SysMenu n = (SysMenu) it.next(); - recursionFn(list, n); - } + recursionFn(list, tChild); } } } -- Gitblit v1.9.3