// 查询角色下菜单
public List<RespMenu> queryRoleMenu(ReqRole req) {
// 获取某个角色菜单
List<RespMenu> menuList = powerRoleMapper.selectRoleMenu(req);
// 获取全部菜单
//List<RespMenu> menuList = powerRoleMapper.selectAllMenu(req);
// 最终结果存放集合
List<RespMenu> finalList = new ArrayList<>();
//先找到所有的一级菜单
for (RespMenu menu : menuList) {
//一级菜单父级菜单Id为空或null
if(StringUtils.isBlank(menu.getParentId())){
finalList.add(menu);
}
}
// 为一级菜单设置子菜单,getChild是递归调用的
for (RespMenu menu : finalList) {
menu.setChildren(getChild(menu.getMenuNum(),menuList));
}
return finalList;
}
// 获取子菜单
private List<RespMenu> getChild(String menuNum,List<RespMenu> menuList){
//子菜单集合
List<RespMenu> childList = new ArrayList<>();
if (null != menuList && !menuList.isEmpty()) {
for (RespMenu menu : menuList) {
// 遍历所有节点,将父菜单id与传过来的id比较
if (!StringUtils.isBlank(menu.getParentId())) {
if (menu.getParentId().equals(menuNum)) {
childList.add(menu);
}
}
}
// 如果有子菜单还有子菜单,把子菜单的子菜单再循环一遍
for (RespMenu menu : childList) {
menu.setChildren(getChild(menu.getMenuNum(), menuList));
}
}
return childList;
}
使用递归实现三级,多级目录
最新推荐文章于 2022-10-12 09:49:08 发布