Parcourir la source

优化递归子节点

RuoYi il y a 4 ans
Parent
commit
068c3e6f0d

+ 1 - 7
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java

@@ -267,13 +267,7 @@ public class SysDeptServiceImpl implements ISysDeptService
         {
         {
             if (hasChild(list, tChild))
             if (hasChild(list, tChild))
             {
             {
-                // 判断是否有子节点
-                Iterator<SysDept> it = childList.iterator();
-                while (it.hasNext())
-                {
-                    SysDept n = (SysDept) it.next();
-                    recursionFn(list, n);
-                }
+                recursionFn(list, tChild);
             }
             }
         }
         }
     }
     }

+ 11 - 12
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java

@@ -178,14 +178,19 @@ public class SysMenuServiceImpl implements ISysMenuService
     public List<SysMenu> buildMenuTree(List<SysMenu> menus)
     public List<SysMenu> buildMenuTree(List<SysMenu> menus)
     {
     {
         List<SysMenu> returnList = new ArrayList<SysMenu>();
         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();)
         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())
         if (returnList.isEmpty())
@@ -406,13 +411,7 @@ public class SysMenuServiceImpl implements ISysMenuService
         {
         {
             if (hasChild(list, tChild))
             if (hasChild(list, tChild))
             {
             {
-                // 判断是否有子节点
-                Iterator<SysMenu> it = childList.iterator();
-                while (it.hasNext())
-                {
-                    SysMenu n = (SysMenu) it.next();
-                    recursionFn(list, n);
-                }
+                recursionFn(list, tChild);
             }
             }
         }
         }
     }
     }