From 1da190e7f267bcd3501884f3aeaac7476850fec7 Mon Sep 17 00:00:00 2001 From: EricsHu <hrr145632> Date: 星期日, 26 十一月 2023 17:53:03 +0800 Subject: [PATCH] 优化菜单查询 --- src/main/java/com/qxueyou/scc/sys/service/impl/PriviledgeService.java | 59 +++++++++++++++++++++++++++++++++++++++++++++++------------ 1 files changed, 47 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/qxueyou/scc/sys/service/impl/PriviledgeService.java b/src/main/java/com/qxueyou/scc/sys/service/impl/PriviledgeService.java index cb382c1..fa013af 100644 --- a/src/main/java/com/qxueyou/scc/sys/service/impl/PriviledgeService.java +++ b/src/main/java/com/qxueyou/scc/sys/service/impl/PriviledgeService.java @@ -8,6 +8,7 @@ import java.util.List; import java.util.Map; +import com.qxueyou.scc.user.model.UserReRoleUser; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Service; @@ -321,26 +322,60 @@ @Override public Result getMenus(User user) { - String hql = "select DISTINCT m.menuId as index ,m.name as title ,m.url as router , m.hover as hover , " + String hql = "select DISTINCT m.menuId as index ,m.parentMenuId as parentMenuId ,m.level as level ,m.name as title ,m.url as router , m.hover as hover , " + " m.icon as icon ,m.parentMenuId as parentMenuId ,m.menuOrder as menuOrder from SysMenu m , UserReRoleUser u ," + "SysPrivilege s where m.deleteFlag is false and u.deleteFlag is false and s.deleteFlag is false and " - + "u.userId =:userId and u.roleId = s.roleId and s.menuId = m.menuId order by m.menuOrder "; + + "u.userId =:userId and u.roleId = s.roleId and s.menuId = m.menuId order by m.menuOrder "; List<Map<String, Object>> menuLst = findListWithMapByHql(hql, CollectionUtils.newObjectMap("userId", user.getUserId())); System.out.println(menuLst); - for (Map<String, Object> map : menuLst) { - map.put("children", CollectionUtils.newList()); + //鍒濆鍖栦竴绾ц彍鍗� + List<Map<String, Object>> firstLevelMenu =new ArrayList<>(); + for (Map<String, Object> stringObjectMap : menuLst) { + Integer level = Integer.parseInt(stringObjectMap.get("level").toString()); + if (level==0) { + //鑾峰彇涓�绾ц彍鍗� + firstLevelMenu.add(stringObjectMap); + } + } + // 涓存椂鍒楄〃锛岀敤浜庝繚瀛橀渶瑕佺Щ闄ょ殑鍏冪礌鐨勭储寮� + List<Map<String, Object>> elementsToRemove = new ArrayList<>(); + //閬嶅巻瀛愰泦 + for (Map<String, Object> map : firstLevelMenu) { + getChildrenList(map,menuLst,elementsToRemove); + } +// 绉婚櫎涓存椂鍒楄〃涓殑鍏冪礌 + menuLst.removeAll(elementsToRemove); + + String hqlRole = "select min(u.type) from UserRole u , UserReRoleUser r where u.deleteFlag is false and r.deleteFlag is false and r.userId =:userId and u.roleId =r.roleId"; + + String maxRoleTypeStr = findUniqueByHql(hqlRole, CollectionUtils.newObjectMap("userId", user.getUserId())); + if (StringUtils.isBlank(maxRoleTypeStr)) { + return new Result(false, "璇ョ敤鎴锋病鏈夋潈闄�,鐧诲綍澶辫触"); + } + Integer maxRoleType = Integer.valueOf(maxRoleTypeStr); + return new Result(true, "success", CollectionUtils.newObjectMap("menuLst", menuLst, "userName", user.getName(), + "userId", user.getUserId(), "imgPath", user.getImgPath(), "roleType", maxRoleType)); } - String hqlRole = "select min(u.type) from UserRole u , UserReRoleUser r where u.deleteFlag is false and r.deleteFlag is false and r.userId =:userId and u.roleId =r.roleId"; + /** + * 鐢ㄩ�掑綊鑾峰彇瀛愯彍鍗� + * @param sysMenu//涓�绾ц彍鍗� + * @param menuLst //鎵�鏈夎彍鍗� + * @param elementsToRemove //涓存椂鍒楄〃锛岀敤浜庝繚瀛橀渶瑕佺Щ闄ょ殑鍏冪礌鐨勭储寮� + * @return + */ + public Map<String, Object> getChildrenList(Map<String, Object> sysMenu, List<Map<String, Object>> menuLst ,List<Map<String, Object>> elementsToRemove) { + for (Map<String, Object> sysMenuMap : menuLst) { + String menuId = sysMenuMap.get("parentMenuId").toString(); + String parentMenuId = sysMenu.get("index").toString(); + if (parentMenuId.equals(menuId)) { + sysMenu.put("children",getChildrenList(sysMenuMap, menuLst, elementsToRemove)); + elementsToRemove.add(sysMenuMap); - String maxRoleTypeStr = findUniqueByHql(hqlRole, CollectionUtils.newObjectMap("userId", user.getUserId())); - if (StringUtils.isBlank(maxRoleTypeStr)) { - return new Result(false, "璇ョ敤鎴锋病鏈夋潈闄�,鐧诲綍澶辫触"); - } - Integer maxRoleType = Integer.valueOf(maxRoleTypeStr); - return new Result(true, "success", CollectionUtils.newObjectMap("menuLst", menuLst, "userName", user.getName(), - "userId", user.getUserId(), "imgPath", user.getImgPath(), "roleType", maxRoleType)); + } + } + return sysMenu; } } -- Gitblit v1.8.0