|
@@ -1,17 +1,12 @@
|
|
|
package com.boman.system.service.impl;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.Arrays;
|
|
|
-import java.util.HashSet;
|
|
|
-import java.util.Iterator;
|
|
|
-import java.util.LinkedList;
|
|
|
-import java.util.List;
|
|
|
-import java.util.Set;
|
|
|
+import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
import com.boman.common.core.utils.obj.ObjectUtils;
|
|
|
import com.boman.common.core.web.domain.AjaxResult;
|
|
|
import com.boman.system.api.domain.SysMenu;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import com.boman.common.core.constant.UserConstants;
|
|
@@ -123,6 +118,40 @@ public class SysMenuServiceImpl implements ISysMenuService
|
|
|
return getChildPerms(menus, 0);
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 根据用户ID查询菜单树信息
|
|
|
+ *
|
|
|
+ * @param menuId menuId
|
|
|
+ * @return 菜单列表
|
|
|
+ */
|
|
|
+ @Override
|
|
|
+ public List<SysMenu> allLeafNodeById(Long menuId) {
|
|
|
+ List<SysMenu> tempList = Lists.newArrayListWithCapacity(16);
|
|
|
+ SysMenu menu = selectMenuById(menuId);
|
|
|
+ List<SysMenu> menus = menuMapper.selectMenuList(new SysMenu());
|
|
|
+ List<SysMenu> sysMenus = recursionList(menus, menu, tempList);
|
|
|
+ return ObjectUtils.filter(sysMenus, menu1 -> SysMenu.BUTTON.equals(menu1.getMenuType()));
|
|
|
+ }
|
|
|
+
|
|
|
+ private List<SysMenu> recursionList(List<SysMenu> menus, SysMenu menu, List<SysMenu> tempList) {
|
|
|
+ int child = 0;
|
|
|
+ // 得到子节点列表
|
|
|
+ List<SysMenu> childList = getChildList(menus, menu);
|
|
|
+ for (SysMenu tChild : childList) {
|
|
|
+ if (hasChild(menus, tChild)) {
|
|
|
+ recursionList(menus, tChild, tempList);
|
|
|
+ } else {
|
|
|
+ child++;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (child == childList.size() && childList.size() != 0) {
|
|
|
+ tempList.addAll(childList);
|
|
|
+ }
|
|
|
+
|
|
|
+ return tempList;
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 根据角色ID查询菜单树信息
|
|
|
*
|
|
@@ -521,6 +550,6 @@ public class SysMenuServiceImpl implements ISysMenuService
|
|
|
*/
|
|
|
private boolean hasChild(List<SysMenu> list, SysMenu t)
|
|
|
{
|
|
|
- return getChildList(list, t).size() > 0 ? true : false;
|
|
|
+ return getChildList(list, t).size() > 0;
|
|
|
}
|
|
|
}
|