package com.atguigu.utils; import com.atguigu.spzx.model.entity.system.SysMenu; import com.atguigu.spzx.model.vo.system.SysMenuVo; import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.LinkedList; import java.util.List; public class MenuHelper { /** * 构建树型结构 * * @param sysMenuList 系统菜单列表 * @return 菜单结构列表 */ public static List buildTree(List sysMenuList) { ArrayList tress = new ArrayList<>(); // 把菜单数据进行遍历 sysMenuList.forEach(sysMenu -> { if (sysMenu.getParentId() == 0) tress.add(getChildren(sysMenu, sysMenuList)); }); return tress; } /** * 构建递归循环 * * @param sysMenu 当前菜单对象 * @param sysMenuList 全部菜单列表 * @return 菜单 */ private static SysMenu getChildren(SysMenu sysMenu, List sysMenuList) { // 遍历所有菜单数据,判断id和parentID对应关系 sysMenu.setChildren(new ArrayList<>()); sysMenuList.forEach(menu -> { if (menu.getChildren() == null) menu.setChildren(new ArrayList<>()); if (sysMenu.getId().equals(menu.getParentId())) { sysMenu.getChildren().add(getChildren(menu, sysMenuList)); } }); return sysMenu; } /** * 将List对象转换成List对象 * * @param menus 全部菜单列表 * @return 系统菜单响应结果实体类列表 */ public static List buildMenus(List menus) { LinkedList sysMenuVos = new LinkedList<>(); menus.forEach(menu -> { SysMenuVo menuVo = new SysMenuVo(); menuVo.setTitle(menu.getTitle()); menuVo.setName(menu.getComponent()); List children = menu.getChildren(); if (!CollectionUtils.isEmpty(children)) { menuVo.setChildren(buildMenus(children)); } sysMenuVos.add(menuVo); }); return sysMenuVos; } }