2024-03-24 00:06:55 +08:00
|
|
|
|
package com.atguigu.utils;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import com.atguigu.spzx.model.entity.system.SysMenu;
|
2024-03-25 09:46:15 +08:00
|
|
|
|
import com.atguigu.spzx.model.vo.system.SysMenuVo;
|
|
|
|
|
import org.springframework.util.CollectionUtils;
|
2024-03-24 00:06:55 +08:00
|
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
2024-03-25 09:46:15 +08:00
|
|
|
|
import java.util.LinkedList;
|
2024-03-24 00:06:55 +08:00
|
|
|
|
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;
|
|
|
|
|
}
|
2024-03-25 09:46:15 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 将List<SysMenu>对象转换成List<SysMenuVo>对象
|
|
|
|
|
*
|
|
|
|
|
* @param menus 全部菜单列表
|
|
|
|
|
* @return 系统菜单响应结果实体类列表
|
|
|
|
|
*/
|
|
|
|
|
public static List<SysMenuVo> buildMenus(List<SysMenu> menus) {
|
|
|
|
|
LinkedList<SysMenuVo> sysMenuVos = new LinkedList<>();
|
2024-03-27 09:43:54 +08:00
|
|
|
|
|
2024-03-25 09:46:15 +08:00
|
|
|
|
menus.forEach(menu -> {
|
|
|
|
|
SysMenuVo menuVo = new SysMenuVo();
|
|
|
|
|
menuVo.setTitle(menu.getTitle());
|
|
|
|
|
menuVo.setName(menu.getComponent());
|
2024-03-27 09:43:54 +08:00
|
|
|
|
|
2024-03-25 09:46:15 +08:00
|
|
|
|
List<SysMenu> children = menu.getChildren();
|
|
|
|
|
if (!CollectionUtils.isEmpty(children)) {
|
|
|
|
|
menuVo.setChildren(buildMenus(children));
|
|
|
|
|
}
|
|
|
|
|
sysMenuVos.add(menuVo);
|
|
|
|
|
});
|
|
|
|
|
return sysMenuVos;
|
|
|
|
|
}
|
2024-03-24 00:06:55 +08:00
|
|
|
|
}
|