田源
2024-03-19 33d8416c5a16fee7464df9774678bc60e47ff956
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java
@@ -12,6 +12,7 @@
import com.vci.ubcs.system.mapper.ClassifyAuthMapper;
import com.vci.ubcs.system.service.IClassifyAuthService;
import com.vci.ubcs.system.service.IMenuService;
import com.vci.ubcs.system.service.IRoleService;
import com.vci.ubcs.system.vo.ClassifyAuthVO;
import com.vci.ubcs.system.wrapper.ClassifyAuthWrapper;
import lombok.AllArgsConstructor;
@@ -19,6 +20,7 @@
import org.springblade.core.secure.utils.AuthUtil;
import org.springblade.core.tool.api.R;
import org.springblade.core.tool.utils.Func;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -39,6 +41,14 @@
   private final IMenuService menuService;
   private final ICodeClassifyClient codeClassifyClient;
   private final IRoleService roleService;
   /**
    * 三员管理角色编号配置:分别为系统管理员,安全管理员,审计管理员顺序
    */
   @Value("#{'${ssa.ssa-names}'.split(',')}")
   private List<String> SSANAMES;
   /**
    * 分类授权保存接口
@@ -215,4 +225,49 @@
      return this.classifyAuthMapper.getViewClassByRoleIds(roleIds, authType,buttonCode,menuCode);
   }
   /**
    * 根据角色名称分类id授予默认的分类权限和主数据访问权限
    * @param classifyAuthDTO
    * @return
    */
   @Transactional(rollbackFor = Exception.class)
   public R saveAddClassifyDefaultAuth(ClassifyAuthDTO classifyAuthDTO) throws ServiceException{
      if (Func.isEmpty(classifyAuthDTO.getClassifyId())) {
         return R.fail("未获取到分类id");
      }
      // 配置的系统管理员名称
      String sysAdmin = SSANAMES.get(0);
      List<ClassifyAuth> classifyAuths = new ArrayList<>();
      //先默认生成系统管理员的授权数据
      ClassifyAuth classifyAuth = new ClassifyAuth();
      classifyAuth.setClassifyId(classifyAuthDTO.getClassifyId());
      classifyAuth.setAuthType("classify_auth");
      String roleIds = roleService.getRoleIds(AuthUtil.getTenantId(), sysAdmin);
      if(Func.isBlank(roleIds)){
         return R.fail(AuthUtil.getTenantId()+"租户下未找到,名为"+sysAdmin+"系统管理员角色!");
      }
      classifyAuth.setRoleId(roleIds);
      List<Menu> classifyTreeMenus = menuService.getButtonsByRoleId(roleIds, "classifyTree");
      if(!classifyTreeMenus.isEmpty()){
         String menuIds = classifyTreeMenus.stream()
            .map(menu -> String.valueOf(menu.getId()))
            .collect(Collectors.joining(","));
         classifyAuth.setButtonIds(menuIds);
         classifyAuths.add(classifyAuth);
      }
      /*ClassifyAuth dataAuth = new ClassifyAuth();
      dataAuth.setAuthType("data_auth");
      dataAuth.setClassifyId(classifyAuthDTO.getClassifyId());
      dataAuth.setRoleId(roleIds);
      List<Menu> masterDatas = menuService.getButtonsByRoleId(roleIds, classifyAuthDTO.getClassId());
      if(!masterDatas.isEmpty()){
         String menuIds = masterDatas.stream()
            .map(menu -> String.valueOf(menu.getId()))
            .collect(Collectors.joining(","));
         dataAuth.setButtonIds(menuIds);
         classifyAuths.add(dataAuth);
      }*/
      return R.status(this.saveBatch(classifyAuths));
   }
}