@Override
public List<AdminMenu> menuSelect() {
// 获取所有菜单项
List<AdminMenu> allMenus = this.list();
// 把数据组合成树形结构
List<AdminMenu> result = allMenus.stream()
// 查找第一级菜单(假设顶级菜单的pid为0)
.filter(menu -> menu.getPid() == 0)
// 查找子菜单并放到第一级菜单中
.map(menu -> {
menu.setMenuList(getChildren(menu, allMenus));
return menu;
})
// 把处理结果收集成一个 List 集合
.collect(Collectors.toList());
return result;
}
/**
* 递归获取子菜单
* @param root 当前菜单
* @param all 总的数据
* @return 子菜单
*/
private List<AdminMenu> getChildren(AdminMenu root, List<AdminMenu> all) {
List<AdminMenu> children = all.stream()
// 根据父菜单ID查找当前菜单的子菜单
.filter(menu -> Objects.equals(menu.getPid(), root.getMid()))
// 递归查找子菜单的子菜单
.map((menu) -> {
menu.setMenuList(getChildren(menu, all));
return menu;
})
// 根据排序字段排序(假设有一个sort字段用于排序)
// 把处理结果收集成一个 List 集合
.collect(Collectors.toList());
return children;
}
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek-R1本地部署如何选择适合你的版本?看这里
· 开源的 DeepSeek-R1「GitHub 热点速览」
· 传国玉玺易主,ai.com竟然跳转到国产AI
· 揭秘 Sdcb Chats 如何解析 DeepSeek-R1 思维链
· 自己如何在本地电脑从零搭建DeepSeek!手把手教学,快来看看! (建议收藏)