spzx/spzx-common/common-service/src/main/java/com/atguigu/utils/MenuHelper.java

72 lines
2.1 KiB
Java
Raw Normal View History

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<>();
menus.forEach(menu -> {
SysMenuVo menuVo = new SysMenuVo();
menuVo.setTitle(menu.getTitle());
menuVo.setName(menu.getComponent());
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
}