ludc
2024-02-02 52fd1e55b71fa38ffe89db738acc4e6c7e4da0df
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/MenuServiceImpl.java
@@ -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);
    }