package com.atguigu.auth.utils; import com.atguigu.model.system.SysMenu; import java.util.ArrayList; import java.util.List; /** * ClassName: MenuHelper * Package: com.atguigu.auth.utils * * @author yovinchen * @Create 2023/6/9 23:31 */ public class MenuHelper { /** * 使用递归方法建菜单 * * @param sysMenuList * @return */ public static List buildTree(List sysMenuList) { // 存放最终数据 List trees = new ArrayList<>(); // 把所有的菜单数据进行遍历 for (SysMenu sysMenu : sysMenuList) { // 递归入口 parentId = 0 if (sysMenu.getParentId().longValue() == 0) { trees.add(getChildren(sysMenu, sysMenuList)); } } return trees; } /** * 递归查找子节点 * * @param sysMenu * @param sysMenuList * @return */ public static SysMenu getChildren(SysMenu sysMenu, List sysMenuList) { sysMenu.setChildren(new ArrayList()); // 遍历所有的菜单数据,判断id和parent_id的对应关系 for (SysMenu menu : sysMenuList) { if (sysMenu.getId().longValue() == menu.getParentId().longValue()) { if (sysMenu.getChildren() == null) { sysMenu.setChildren(new ArrayList<>()); } sysMenu.getChildren().add(getChildren(menu, sysMenuList)); } } return sysMenu; } }