删除 MenuUtil
parent
b91ab22354
commit
8414fcb010
|
@ -1,61 +0,0 @@
|
|||
package xyz.zhouxy.plusone.system.application.common.util;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import xyz.zhouxy.plusone.domain.IWithOrderNumber;
|
||||
import xyz.zhouxy.plusone.system.application.query.result.MenuViewObject;
|
||||
import xyz.zhouxy.plusone.system.domain.model.menu.Menu.MenuType;
|
||||
|
||||
/**
|
||||
* 菜单工具类
|
||||
*
|
||||
* @author <a href="https://gitee.com/zhouxy108">ZhouXY</a>
|
||||
*/
|
||||
public class MenuUtil {
|
||||
private MenuUtil() {
|
||||
throw new IllegalStateException("Utility class");
|
||||
}
|
||||
|
||||
/**
|
||||
* 构建菜单树
|
||||
*
|
||||
* @param allMenus 菜单列表
|
||||
* @return 菜单树
|
||||
*/
|
||||
public static List<MenuViewObject> buildMenuTree(Collection<MenuViewObject> allMenus) {
|
||||
// 先排序,保证添加到 rootMenus 中的顺序,以及 addChild 添加的子菜单的顺序
|
||||
allMenus = allMenus.stream()
|
||||
.sorted(Comparator.comparing(IWithOrderNumber::getOrderNumber))
|
||||
.toList();
|
||||
|
||||
// 一级菜单
|
||||
List<MenuViewObject> rootMenus = new ArrayList<>();
|
||||
// key: 菜单 id; value: 菜单对象. 方便根据 id 查找相应对象。
|
||||
Map<Long, MenuViewObject> menuListMap = new HashMap<>();
|
||||
|
||||
for (var menu : allMenus) {
|
||||
// 添加 MENU_LIST 到 map 中,方便后面调用对象的方法
|
||||
if (menu.getType() == MenuType.MENU_LIST.ordinal()) {
|
||||
menuListMap.put(menu.getId(), menu);
|
||||
}
|
||||
// 一级菜单
|
||||
if (menu.getParentId() == 0) {
|
||||
rootMenus.add(menu);
|
||||
}
|
||||
}
|
||||
for (var menu : allMenus) {
|
||||
var parent = menuListMap.getOrDefault(menu.getParentId(), null);
|
||||
// 父菜单存在于 map 中,调用父菜单的 addChild 方法将当前菜单添加为父菜单的子菜单。
|
||||
if (parent != null) {
|
||||
parent.addChild(menu);
|
||||
}
|
||||
}
|
||||
|
||||
return rootMenus;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue