ludc
2024-07-10 4d571ecaabae01dc825f01ce92ff4a5023f56fb0
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
@@ -345,7 +345,7 @@
      }
      // 返回的分类oid是当前节点为第一个,后面依次是他的上层节点
      List<String> classifyOidList = listR.getData();
      final String roleIds = AuthUtil.getUser().getRoleId();
      final List<String> roleIds = Func.toStrList(",",AuthUtil.getUser().getRoleId());
      // 先查询按钮id列表
      LambdaQueryWrapper<ClassifyAuth> wrapper = Wrappers.<ClassifyAuth>query()
         .lambda().eq(ClassifyAuth::getClassifyId, classifyId)
@@ -359,6 +359,7 @@
            classifyAuths = classifyAuthMapper.selectList(
               Wrappers.<ClassifyAuth>query()
                  .lambda().eq(ClassifyAuth::getClassifyId, classifyOidList.get(i))
                  .eq(ClassifyAuth::getAuthType,authType)
                  .in(ClassifyAuth::getRoleId, roleIds)
            );
            if(!classifyAuths.isEmpty()){
@@ -366,9 +367,17 @@
            }
         }
      }
      //出现了错误数据,同一个角色和同一个分类id存在多条授权记录
      //出现了多条数据
      if(classifyAuths.size()>1){
         throw new ServiceException("角色和分类配置存在多条记录,请联系管理人员清理错误配置!");
         // 校验是否存在错误数据,同一个角色和同一个分类id存在多条授权记录
         List<ClassifyAuth> finalClassifyAuths = classifyAuths;
         boolean hasDuplicate = classifyAuths.stream()
            .anyMatch(auth1 -> finalClassifyAuths.stream()
               .filter(auth2 -> auth1 != auth2)
               .anyMatch(auth2 -> auth1.getRoleId().equals(auth2.getRoleId()) && auth1.getClassifyId().equals(auth2.getClassifyId())));
         if (hasDuplicate) {
            throw new ServiceException("角色和分类配置存在多条记录,请联系管理人员清理错误配置!");
         }
      }
      // 是否为超管
      Boolean isAdmin = VciBaseUtil.checkAdminTenant();
@@ -379,7 +388,10 @@
      List<String> ids = new ArrayList<>();
      // 如果不是超管用户
      if(!isAdmin){
         ids.addAll(Arrays.asList(classifyAuths.get(0).getButtonIds().split(",")));
         String concatenatedButtonIds = classifyAuths.stream()
            .map(ClassifyAuth::getButtonIds) // 获取每个classifyAuths对象的buttonIds
            .collect(Collectors.joining(",")); // 用逗号分隔拼接成一个字符串
         ids.addAll(Arrays.asList(concatenatedButtonIds.split(",")));
      }
      return this.getMenuListByCode(ids,btmType,roleIds);
    }
@@ -494,7 +506,7 @@
    * @return
    */
   @Override
   public List<Menu> getMenuListByCode(List<String> ids,String menuCode,String roleIds){
   public List<Menu> getMenuListByCode(List<String> ids,String menuCode,List<String> roleIds){
      List<Menu> menuButtonList = null;
      if(VciBaseUtil.checkAdminTenant()){
         // 正常情况下来说这个不存在为空的情况