派生自 projectDept/qhighschool

EricsHu
2023-11-26 1da190e7f267bcd3501884f3aeaac7476850fec7
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 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;
   }
}