菜单管理优化
parent
656daa9501
commit
0d955b0425
|
@ -70,60 +70,41 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
|
||||||
menu.getParams().put("userId", userId);
|
menu.getParams().put("userId", userId);
|
||||||
menuList = menuMapper.selectMenuListByUserId(menu);
|
menuList = menuMapper.selectMenuListByUserId(menu);
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* 去重,并获取查询到的菜单parentId 集合
|
|
||||||
*/
|
|
||||||
List<SysMenu> list = list(menuList);
|
List<SysMenu> list = list(menuList);
|
||||||
List<Long> collect = menuList.stream().distinct()
|
List<Long> collect = menuList.stream().distinct()
|
||||||
.map(SysMenu::getParentId)
|
.map(SysMenu::getParentId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
System.out.println(collect);
|
System.out.println(collect);
|
||||||
/*
|
|
||||||
*如果没有parentID 集合就返回 菜单表
|
|
||||||
*/
|
|
||||||
// if (collect.size()==0){
|
|
||||||
// return menuList;
|
|
||||||
// }
|
|
||||||
/**
|
|
||||||
* 根据parentID 集合获取 所有父类菜单
|
|
||||||
*/
|
|
||||||
List<SysMenu> sysMenus=menuMapper.selectMenuByparentList(collect);
|
List<SysMenu> sysMenus=menuMapper.selectMenuByparentList(collect);
|
||||||
List<SysMenu> finalMenuList = menuList;
|
List<SysMenu> finalMenuList = menuList;
|
||||||
/**
|
|
||||||
*把所有查到的 父类放入 菜单列表中
|
|
||||||
*/
|
|
||||||
sysMenus.forEach(sysMenu -> {
|
sysMenus.forEach(sysMenu -> {
|
||||||
finalMenuList.add(sysMenu);
|
finalMenuList.add(sysMenu);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
//菜单列表 去重 防止重复 并在获取所有的parentID 获取更高一级的菜单
|
||||||
* 菜单列表 去重 防止重复 并在获取所有的parentID 获取更高一级的菜单
|
List<Long> ids = finalMenuList.stream().distinct()
|
||||||
*/
|
|
||||||
List<Long> collect2 = finalMenuList.stream().distinct()
|
|
||||||
.map(SysMenu::getParentId)
|
.map(SysMenu::getParentId)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
/**
|
//再次根据 parentID 查询 菜单 防止遗漏
|
||||||
* 再次根据 parentID 查询 菜单 防止遗漏
|
List<SysMenu> menus = menuMapper.selectMenuByparentList(ids);
|
||||||
*/
|
menus.forEach(sysMenu -> {
|
||||||
List<SysMenu> sysMenus1 = menuMapper.selectMenuByparentList(collect2);
|
|
||||||
sysMenus1.forEach(sysMenu -> {
|
|
||||||
finalMenuList.add(sysMenu);
|
finalMenuList.add(sysMenu);
|
||||||
});
|
});
|
||||||
/**
|
//去重 防止重复 , 并转为菜单列表
|
||||||
* 去重 防止重复 , 并转为菜单列表
|
List<SysMenu> sysMenuList = finalMenuList
|
||||||
*/
|
|
||||||
List<SysMenu> collect1 = finalMenuList
|
|
||||||
.stream()
|
.stream()
|
||||||
.distinct()
|
.distinct()
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
sysMenuList.addAll(list);
|
||||||
|
List<SysMenu> collect3 = sysMenuList.stream().distinct().collect(Collectors.toList());
|
||||||
collect1.addAll(list);
|
|
||||||
List<SysMenu> collect3 = collect1.stream().distinct().collect(Collectors.toList());
|
|
||||||
return collect3;
|
return collect3;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 递归查询
|
||||||
|
* @param menuList
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
public List<SysMenu> list(List<SysMenu> menuList){
|
public List<SysMenu> list(List<SysMenu> menuList){
|
||||||
List<Long> collect = menuList.stream().distinct()
|
List<Long> collect = menuList.stream().distinct()
|
||||||
.map(SysMenu::getMenuId).collect(Collectors.toList());
|
.map(SysMenu::getMenuId).collect(Collectors.toList());
|
||||||
|
|
Loading…
Reference in New Issue