diff --git a/bweb/src/main/java/com/bweb/controller/SecMenuController.java b/bweb/src/main/java/com/bweb/controller/SecMenuController.java index e2a2ef2..bec13a5 100644 --- a/bweb/src/main/java/com/bweb/controller/SecMenuController.java +++ b/bweb/src/main/java/com/bweb/controller/SecMenuController.java @@ -19,8 +19,6 @@ import com.hfkj.sysenum.SecMenuTypeEnum; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; -import org.apache.http.HttpResponse; -import org.apache.http.util.EntityUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; @@ -77,7 +75,6 @@ public class SecMenuController { if (parentMenu == null) { throw ErrorHelp.genException(SysCode.System, ErrorCode.REQ_PARAMS_ERROR, ""); } - secMenu.setMenuFullUrl(secMenu.getMenuFullUrl()+"/"+secMenu.getMenuUrl()); } secMenu.setMenuType(body.getMenuType()); @@ -177,10 +174,39 @@ public class SecMenuController { try { // 查询角色菜单权限 - List roleMenuList = secRoleMenuRelService.getRelListByRole(roleId); + Map roleMenu = secMenuService.queryRoleMenu(roleId, SecMenuTypeEnum.type1).stream() + .collect(Collectors.toMap(SecMenu::getId, Function.identity())); - return ResponseMsgUtil.success(roleMenuList.stream().map(SecRoleMenuRel::getMenuId).collect(Collectors.toList()) - .stream().map(Object::toString).collect(Collectors.toList())); + // 系统菜单叶节点 + List menuLeafList = new ArrayList<>(); + + // 角色菜单叶节点 + List roleLeafList = new ArrayList<>(); + + // 获取全部菜单 + List menuList = secMenuService.getAllList(); + + // 获取最顶层菜单 + List topLevelMenuList = menuList.stream() + .filter(o -> o.getMenuPSid() == null) + .sorted(Comparator.comparing(SecMenu::getMenuSort)) + .collect(Collectors.toList()); + // 递归获取系统菜单叶子节点 + for (SecMenu topLevelMenu : topLevelMenuList) { + if (topLevelMenu.getMenuType().equals(SecMenuTypeEnum.type1.getCode())) { + recursionMenu(menuList, topLevelMenu.getId(), menuLeafList); + } + } + + // 筛选角色菜单叶节点 + for (String leaf : menuLeafList) { + SecMenu menu = roleMenu.get(Long.parseLong(leaf)); + if (menu != null) { + roleLeafList.add(""+menu.getId()); + } + } + + return ResponseMsgUtil.success(roleLeafList); } catch (Exception e) { log.error("error!",e); @@ -221,11 +247,11 @@ public class SecMenuController { for (SecMenu topLevelMenu : topLevelMenuList) { if (topLevelMenu.getMenuType().equals(SecMenuTypeEnum.type1.getCode())) { - map = new HashMap<>(); + map = new LinkedHashMap<>(); map.put("key", ""+topLevelMenu.getId()); map.put("title", topLevelMenu.getMenuName()); // 获取下级菜单 - map.put("children", recursionMenu(menuList, topLevelMenu.getId())); + map.put("children", recursionMenu(menuList, topLevelMenu.getId(), new ArrayList<>())); mapList.add(map); } } @@ -244,7 +270,7 @@ public class SecMenuController { * @param parentMenuId 父级菜单id * @return */ - public List> recursionMenu(List dataSource, Long parentMenuId) { + public List> recursionMenu(List dataSource, Long parentMenuId, List leaf) { List> mapList = new ArrayList<>(); Map map; @@ -254,12 +280,13 @@ public class SecMenuController { .collect(Collectors.toList()); for (SecMenu menu : collect) { if (menu.getMenuType().equals(SecMenuTypeEnum.type1.getCode())) { - map = new HashMap<>(); + map = new LinkedHashMap<>(); map.put("key", ""+menu.getId()); map.put("title", menu.getMenuName()); // 获取下级菜单 - List> recursioned = recursionMenu(dataSource, menu.getId()); + List> recursioned = recursionMenu(dataSource, menu.getId(), leaf); if (recursioned.isEmpty()) { + leaf.add(""+menu.getId()); map.put("isLeaf", true); } else { map.put("children", recursioned); @@ -270,4 +297,5 @@ public class SecMenuController { return mapList; } + }