47 lines
1.3 KiB
Java
47 lines
1.3 KiB
Java
|
package com.atguigu.utils;
|
|||
|
|
|||
|
|
|||
|
import com.atguigu.spzx.model.entity.system.SysMenu;
|
|||
|
|
|||
|
import java.util.ArrayList;
|
|||
|
import java.util.List;
|
|||
|
|
|||
|
|
|||
|
public class MenuHelper {
|
|||
|
/**
|
|||
|
* 构建树型结构
|
|||
|
*
|
|||
|
* @param sysMenuList 系统菜单列表
|
|||
|
* @return 菜单结构列表
|
|||
|
*/
|
|||
|
public static List<SysMenu> buildTree(List<SysMenu> sysMenuList) {
|
|||
|
ArrayList<SysMenu> 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<SysMenu> 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;
|
|||
|
}
|
|||
|
}
|