派生自 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;
@@ -25,9 +26,9 @@
import com.qxueyou.scc.user.model.UserRole;
/**
 * 系统权限服务
 * 系统权限服务
 * 
 * @author 德虎
 * @author 德虎
 *
 */
@Service
@@ -43,7 +44,7 @@
   @Override
   public List<SysMenu> getPrivilegesMenus(String userId) {
      // 获取当前用户角色ID, 过滤当前角色
      // 获取当前用户角色ID, 过滤当前角色
      String currRoleId = null;
      Short currOrgType = null;
      if (null != ClientUtils.getUserInfo() && StringUtils.isNotBlank(ClientUtils.getOrgId())) {
@@ -52,13 +53,13 @@
      List<SysMenu> firstLevelMenus = new ArrayList<SysMenu>(5);
      // 获取该用户当前角色的所有菜单权限
      // 获取该用户当前角色的所有菜单权限
      List<SysMenu> allMenus = initAllMenus(currRoleId);
      // 过滤出第一层及第二层菜单权限
      // 过滤出第一层及第二层菜单权限
      initFirstSecondMenu(allMenus, firstLevelMenus, currOrgType);
      // 排序
      // 排序
      sortMenuList(firstLevelMenus);
      return firstLevelMenus;
@@ -73,7 +74,7 @@
      allMenus.addAll(this.find(hql, CollectionUtils.newList(currRoleId), SysMenu.class));
      // 如果是超管,菜单
      // 如果是超管,菜单
      if ("6".equals(currRoleId) && allMenus.isEmpty()) {
         UserRole role = this.read(UserRole.class, "6");
         allMenus = role.getMenus();
@@ -97,7 +98,7 @@
            initSecondMenu(allMenus, secondMenus, childMenus, currOrgType);
            if (!secondMenus.isEmpty()) {
               // 排序
               // 排序
               sortMenuList(secondMenus);
               menu.setChildren(secondMenus);
               firstLevelMenus.add(menu);
@@ -118,7 +119,7 @@
         if (allMenus.contains(m)) {
            // 非高校过滤掉
            // 非高校过滤掉
            if (currOrgType == null) {
               continue;
            }
@@ -129,7 +130,7 @@
   }
   /**
    * 获取已授权按钮列表,默认已经编辑过按钮权限的用户
    * 获取已授权按钮列表,默认已经编辑过按钮权限的用户
    * 
    * @param name
    * @return
@@ -171,7 +172,7 @@
            Integer order1 = (Integer) menu1.getMenuOrder();
            Integer order2 = (Integer) menu2.getMenuOrder();
            // 升序
            // 升序
            return order1.compareTo(order2);
         }
      });
@@ -213,7 +214,7 @@
   }
   /*
    * 获取讲师直播关联的class
    * 获取讲师直播关联的class
    * 
    */
   @Override
@@ -228,12 +229,12 @@
   }
   /**
    * 助理讲师班级列表
    * 助理讲师班级列表
    */
   @SuppressWarnings({ "unchecked", "rawtypes" })
   @Override
   public List<ClsClass> getAssisTeacherClasses(String userId, String orgId) {
      // 1、讲师助教
      // 1、讲师助教
      String hql = "select distinct  cls from MediaVideoLive live,OrgAssistantTeacher teacher , ClsClass cls "
            + "where live.anchorId = teacher.orgTeacherId " + "and live.classId = cls.classId "
            + "and teacher.userId= ? " + "and teacher.orgId= ? " + "and live.deleteFlag is false "
@@ -241,7 +242,7 @@
      List<ClsClass> teacherList = find(hql, CollectionUtils.newList(userId, orgId), ClsClass.class);
      // 2.班主任助教
      // 2.班主任助教
      String hql2 = "select distinct  cls from OrgAssistantTeacher teacher , ClsClass cls "
            + "where teacher.orgTeacherId=cls.classChargerId " + "and teacher.classId = cls.classId "
            + "and teacher.userId= ? " + "and teacher.orgId= ? " + "and teacher.deleteFlag is false "
@@ -250,7 +251,7 @@
      List<ClsClass> chargerList = find(hql2, CollectionUtils.newList(userId, orgId), ClsClass.class);
      teacherList.addAll(chargerList);
      // 去重
      // 去重
      HashSet h = new HashSet(teacherList);
      teacherList.clear();
      teacherList.addAll(h);
@@ -259,7 +260,7 @@
   }
   /**
    * 新增list
    * 新增list
    * 
    * @param privileges
    * @return
@@ -288,14 +289,14 @@
   }
   /**
    * 删除list
    * 删除list
    * 
    * @param privileges
    * @return
    */
   public Result deletePrivileges(String[] deleteMenuIds, String roleId) {
      // 修改为使用update
      // 修改为使用update
      // bulkUpdateInLoop("update SysPrivilege set deleteFlag = true where roleId = '"
      // + roleId + "' and menuId = ?", deleteMenuIds );
      String hql = " from SysPrivilege where menuId in (:menuIds) and deleteFlag is false and roleId = :roleId ";
@@ -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);
      //初始化一级菜单
      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);
      for (Map<String, Object> map : menuLst) {
         map.put("children", CollectionUtils.newList());
         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;
   }
}