|
|
@ -16,7 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
import org.springframework.stereotype.Service; |
|
|
|
|
|
|
|
import java.util.*; |
|
|
|
import java.util.function.Function; |
|
|
|
import java.util.stream.Collectors; |
|
|
|
import java.util.stream.Stream; |
|
|
|
|
|
|
|
/** |
|
|
|
* 菜单 业务层处理 |
|
|
@ -92,7 +94,7 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
* @return 菜单列表 |
|
|
|
*/ |
|
|
|
public List<SysMenu> selectMenuTreeByUserId(String userId) { |
|
|
|
List<SysMenu> menus = null; |
|
|
|
List<SysMenu> menus; |
|
|
|
if ("1".equals(userId)) { |
|
|
|
menus = menuMapper.selectMenuTreeAll(); |
|
|
|
} else { |
|
|
@ -109,13 +111,31 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
menus = menuMapper.selectMenuTreeByUserId(userId); |
|
|
|
} |
|
|
|
if (menus != null) { |
|
|
|
menus.addAll(menuList); |
|
|
|
return getChildPerms(menus, "0"); |
|
|
|
return getChildPerms(unionMenu(menus, menuList), "0"); |
|
|
|
} else { |
|
|
|
return Collections.emptyList(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
//菜单取并集
|
|
|
|
private List<SysMenu> unionMenu(List<SysMenu> menuList, List<SysMenu> menus) { |
|
|
|
return Stream.concat(menuList.stream(), menus.stream()) |
|
|
|
.collect(Collectors.toMap(SysMenu::getId, Function.identity(), (o1, o2) -> { |
|
|
|
if (o1.getIsMain()) { |
|
|
|
return o1; |
|
|
|
} |
|
|
|
if (o2.getIsMain()) { |
|
|
|
return o2; |
|
|
|
} |
|
|
|
return o1; |
|
|
|
})) |
|
|
|
.values() |
|
|
|
.stream() |
|
|
|
.filter(item -> item.getStatus().equals("0")) |
|
|
|
.collect(Collectors.toList()); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 根据角色ID查询菜单树信息 |
|
|
|
* |
|
|
@ -133,7 +153,7 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
* @return 路由列表 |
|
|
|
*/ |
|
|
|
public List<RouterVo> buildMenus(List<SysMenu> menus) { |
|
|
|
List<RouterVo> routers = new LinkedList<RouterVo>(); |
|
|
|
List<RouterVo> routers = new LinkedList<>(); |
|
|
|
for (SysMenu menu : menus) { |
|
|
|
RouterVo router = new RouterVo(); |
|
|
|
router.setHidden("1".equals(menu.getVisible())); |
|
|
@ -142,12 +162,12 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
router.setComponent(getComponent(menu)); |
|
|
|
router.setMeta(new MetaVo(menu.getMenuName(), menu.getIcon())); |
|
|
|
List<SysMenu> cMenus = menu.getChildren(); |
|
|
|
if (!cMenus.isEmpty() && cMenus.size() > 0 && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { |
|
|
|
if (!cMenus.isEmpty() && UserConstants.TYPE_DIR.equals(menu.getMenuType())) { |
|
|
|
router.setAlwaysShow(true); |
|
|
|
router.setRedirect("noRedirect"); |
|
|
|
router.setChildren(buildMenus(cMenus)); |
|
|
|
} else if (isMeunFrame(menu)) { |
|
|
|
List<RouterVo> childrenList = new ArrayList<RouterVo>(); |
|
|
|
List<RouterVo> childrenList = new ArrayList<>(); |
|
|
|
RouterVo children = new RouterVo(); |
|
|
|
children.setPath(menu.getPath()); |
|
|
|
children.setComponent(menu.getComponent()); |
|
|
@ -168,13 +188,12 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
* @return 树结构列表 |
|
|
|
*/ |
|
|
|
public List<SysMenu> buildMenuTree(List<SysMenu> menus) { |
|
|
|
List<SysMenu> returnList = new ArrayList<SysMenu>(); |
|
|
|
List<String> tempList = new ArrayList<String>(); |
|
|
|
List<SysMenu> returnList = new ArrayList<>(); |
|
|
|
List<String> tempList = new ArrayList<>(); |
|
|
|
for (SysMenu dept : menus) { |
|
|
|
tempList.add(dept.getId()); |
|
|
|
} |
|
|
|
for (Iterator<SysMenu> iterator = menus.iterator(); iterator.hasNext(); ) { |
|
|
|
SysMenu menu = (SysMenu) iterator.next(); |
|
|
|
for (SysMenu menu : menus) { |
|
|
|
// 如果是顶级节点, 遍历该父节点的所有子节点
|
|
|
|
if (!tempList.contains(menu.getParentId())) { |
|
|
|
recursionFn(menus, menu); |
|
|
@ -216,7 +235,7 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
*/ |
|
|
|
public boolean hasChildByMenuId(String menuId) { |
|
|
|
int result = menuMapper.hasChildByMenuId(menuId); |
|
|
|
return result > 0 ? true : false; |
|
|
|
return result > 0; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -227,7 +246,7 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
*/ |
|
|
|
public boolean checkMenuExistRole(String menuId) { |
|
|
|
int result = roleMenuMapper.checkMenuExistRole(menuId); |
|
|
|
return result > 0 ? true : false; |
|
|
|
return result > 0; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
@ -346,9 +365,8 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
* @return String |
|
|
|
*/ |
|
|
|
public List<SysMenu> getChildPerms(List<SysMenu> list, String parentId) { |
|
|
|
List<SysMenu> returnList = new ArrayList<SysMenu>(); |
|
|
|
for (Iterator<SysMenu> iterator = list.iterator(); iterator.hasNext(); ) { |
|
|
|
SysMenu t = (SysMenu) iterator.next(); |
|
|
|
List<SysMenu> returnList = new ArrayList<>(); |
|
|
|
for (SysMenu t : list) { |
|
|
|
// 一、根据传入的某个父节点ID,遍历该父节点的所有子节点
|
|
|
|
if (t.getParentId().equals(parentId)) { |
|
|
|
recursionFn(list, t); |
|
|
@ -379,10 +397,10 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
* 得到子节点列表 |
|
|
|
*/ |
|
|
|
private List<SysMenu> getChildList(List<SysMenu> list, SysMenu t) { |
|
|
|
List<SysMenu> tlist = new ArrayList<SysMenu>(); |
|
|
|
List<SysMenu> tlist = new ArrayList<>(); |
|
|
|
Iterator<SysMenu> it = list.iterator(); |
|
|
|
while (it.hasNext()) { |
|
|
|
SysMenu n = (SysMenu) it.next(); |
|
|
|
SysMenu n = it.next(); |
|
|
|
if (n.getParentId().equals(t.getId())) { |
|
|
|
tlist.add(n); |
|
|
|
} |
|
|
@ -394,7 +412,7 @@ public class SysMenuService extends BaseService<SysMenuMapper, SysMenu> { |
|
|
|
* 判断是否有子节点 |
|
|
|
*/ |
|
|
|
private boolean hasChild(List<SysMenu> list, SysMenu t) { |
|
|
|
return getChildList(list, t).size() > 0 ? true : false; |
|
|
|
return !getChildList(list, t).isEmpty(); |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|