guigu-oa-parent/service-oa/src/main/java/com/atguigu/auth/utils/MenuHelper.java
2023-06-10 10:41:01 +08:00

61 lines
1.5 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.auth.utils;
import com.atguigu.model.system.SysMenu;
import java.util.ArrayList;
import java.util.List;
/**
* ClassName: MenuHelper
* Package: com.atguigu.auth.utils
*
* @author yovinchen
* @Create 2023/6/9 23:31
*/
public class MenuHelper {
/**
* 使用递归方法建菜单
*
* @param sysMenuList
* @return
*/
public static List<SysMenu> buildTree(List<SysMenu> sysMenuList) {
// 存放最终数据
List<SysMenu> trees = new ArrayList<>();
// 把所有的菜单数据进行遍历
for (SysMenu sysMenu : sysMenuList) {
// 递归入口 parentId = 0
if (sysMenu.getParentId().longValue() == 0) {
trees.add(getChildren(sysMenu, sysMenuList));
}
}
return trees;
}
/**
* 递归查找子节点
*
* @param sysMenu
* @param sysMenuList
* @return
*/
public static SysMenu getChildren(SysMenu sysMenu, List<SysMenu> sysMenuList) {
sysMenu.setChildren(new ArrayList<SysMenu>());
// 遍历所有的菜单数据判断id和parent_id的对应关系
for (SysMenu menu : sysMenuList) {
if (sysMenu.getId().longValue() == menu.getParentId().longValue()) {
if (sysMenu.getChildren() == null) {
sysMenu.setChildren(new ArrayList<>());
}
sysMenu.getChildren().add(getChildren(menu, sysMenuList));
}
}
return sysMenu;
}
}