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

74 lines
2.1 KiB
Java
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<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;
}
/**
* 将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;
}
}