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