Commit 068c3e6f0deb4a179a2535119df5f6fc0a6ad226

Authored by RuoYi
1 parent dd664008

优化递归子节点

ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
... ... @@ -267,13 +267,7 @@ public class SysDeptServiceImpl implements ISysDeptService
267 267 {
268 268 if (hasChild(list, tChild))
269 269 {
270   - // 判断是否有子节点
271   - Iterator<SysDept> it = childList.iterator();
272   - while (it.hasNext())
273   - {
274   - SysDept n = (SysDept) it.next();
275   - recursionFn(list, n);
276   - }
  270 + recursionFn(list, tChild);
277 271 }
278 272 }
279 273 }
... ...
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
... ... @@ -178,14 +178,19 @@ public class SysMenuServiceImpl implements ISysMenuService
178 178 public List<SysMenu> buildMenuTree(List<SysMenu> menus)
179 179 {
180 180 List<SysMenu> returnList = new ArrayList<SysMenu>();
  181 + List<Long> tempList = new ArrayList<Long>();
  182 + for (SysMenu dept : menus)
  183 + {
  184 + tempList.add(dept.getMenuId());
  185 + }
181 186 for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext();)
182 187 {
183   - SysMenu t = (SysMenu) iterator.next();
184   - // 根据传入的某个父节点ID,遍历该父节点的所有子节点
185   - if (t.getParentId() == 0)
  188 + SysMenu menu = (SysMenu) iterator.next();
  189 + // 如果是顶级节点, 遍历该父节点的所有子节点
  190 + if (!tempList.contains(menu.getParentId()))
186 191 {
187   - recursionFn(menus, t);
188   - returnList.add(t);
  192 + recursionFn(menus, menu);
  193 + returnList.add(menu);
189 194 }
190 195 }
191 196 if (returnList.isEmpty())
... ... @@ -406,13 +411,7 @@ public class SysMenuServiceImpl implements ISysMenuService
406 411 {
407 412 if (hasChild(list, tChild))
408 413 {
409   - // 判断是否有子节点
410   - Iterator<SysMenu> it = childList.iterator();
411   - while (it.hasNext())
412   - {
413   - SysMenu n = (SysMenu) it.next();
414   - recursionFn(list, n);
415   - }
  414 + recursionFn(list, tChild);
416 415 }
417 416 }
418 417 }
... ...