ludc
2024-03-18 7cf54012c46c54bd701310cc29caaa94676ea570
分类授权功能完善
已修改9个文件
111 ■■■■■ 文件已修改
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ClassifyAuthDTO.java 11 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IClassifyAuthService.java 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/impl/ClassifyAuthServiceImpl.java 55 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/dto/ClassifyAuthDTO.java
@@ -18,13 +18,18 @@
    /**
     * 是否清空 true是清空,false不是清空
     */
    //    @NotBlank(message = "必传参数isCLear不能为空")
    // @NotBlank(message = "必传参数isCLear不能为空")
    private Boolean isCLear;
    /**
     * 分类id
     * 分类oid
     */
    //    @NotBlank(message = "必传参数classifyId不能为空")
    // @NotBlank(message = "必传参数classifyId不能为空")
    private String classifyId;
    /**
     * 分类ID
     */
    // private String classId;
}
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClient.java
@@ -16,6 +16,7 @@
 */
package com.vci.ubcs.system.feign;
import com.vci.ubcs.system.dto.ClassifyAuthDTO;
import com.vci.ubcs.system.entity.*;
import com.vci.ubcs.system.vo.DeptVO;
import com.vci.ubcs.system.vo.RoleVO;
@@ -79,6 +80,7 @@
    String REGEX = API_PREFIX + "/combination-regex";
    String REGEXONE = API_PREFIX + "/combination-regex-one";
    String GETVIEWCLASSIFY = API_PREFIX + "/get-view-classify";
    String SAVEADDCLASSIFYDEFAULTAUTH = API_PREFIX + "/save-add-classify-default-auth";
    /**
     * 获取菜单
@@ -394,4 +396,7 @@
    @GetMapping(GETVIEWCLASSIFY)
    R<List<String>> getViewClassByRoleIds(@RequestParam("roleIds") List<String> roleIds,@RequestParam("authType") String authType,@RequestParam("buttonCode") String buttonCode,@RequestParam("menuCode") String menuCode);
    @PostMapping(SAVEADDCLASSIFYDEFAULTAUTH)
    R saveAddClassifyDefaultAuth(@RequestBody ClassifyAuthDTO classifyAuthDTOS);
}
Source/UBCS/ubcs-service-api/ubcs-system-api/src/main/java/com/vci/ubcs/system/feign/ISysClientFallback.java
@@ -16,6 +16,7 @@
 */
package com.vci.ubcs.system.feign;
import com.vci.ubcs.system.dto.ClassifyAuthDTO;
import com.vci.ubcs.system.entity.*;
import com.vci.ubcs.system.vo.DeptVO;
import com.vci.ubcs.system.vo.RoleVO;
@@ -204,4 +205,9 @@
        return R.fail("获取数据失败");
    }
    @Override
    public R saveAddClassifyDefaultAuth(ClassifyAuthDTO classifyAuthDTOS) {
        return R.fail("保存失败");
    }
}
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/controller/CodeClassifyController.java
@@ -77,6 +77,7 @@
    private final ICodeClassifyService codeClassifyService;
    CodeClassifyMapper codeClassifyMapper;
    /**
     * 主题库定义表 详情
     */
Source/UBCS/ubcs-service/ubcs-code/src/main/java/com/vci/ubcs/code/service/impl/CodeClassifyServiceImpl.java
@@ -49,6 +49,7 @@
import com.vci.ubcs.starter.web.util.LangBaseUtil;
import com.vci.ubcs.starter.web.util.VciBaseUtil;
import com.vci.ubcs.system.cache.NacosConfigCache;
import com.vci.ubcs.system.dto.ClassifyAuthDTO;
import com.vci.ubcs.system.feign.ISysClient;
import org.apache.poi.hssf.util.HSSFColor;
import org.slf4j.Logger;
@@ -159,6 +160,7 @@
     * @param
     */
    @Override
    @Transactional(rollbackFor = Exception.class)
    public R addSave(CodeClassify codeClassifyEntity) {
        try {
            VciBaseUtil.alertNotNull(codeClassifyEntity.getId(),"主题库编号不能为空!",codeClassifyEntity.getName(),"主题库名称不能为空!");
@@ -185,8 +187,19 @@
        }
        DefaultAttrAssimtUtil.addDefaultAttrAssimt(codeClassifyEntity, MdmBtmTypeConstant.CODE_CLASSIFY);
        codeClassifyEntity.setLcStatus(FRAMEWORK_DATA_ENABLED);
        int insertNumber = codeClassifyMapper.insert(codeClassifyEntity);
        return R.status(SqlHelper.retBool(insertNumber));
        boolean resBoolean = SqlHelper.retBool(codeClassifyMapper.insert(codeClassifyEntity));
        if (!resBoolean) {
            return R.status(resBoolean);
        }
        // 分类添加成功,给系统管理员和当前角色增加分类权限和数据权限
        ClassifyAuthDTO classifyAuthDTO = new ClassifyAuthDTO();
        classifyAuthDTO.setClassifyId(codeClassifyEntity.getOid());
//        classifyAuthDTO.setClassId(codeClassifyEntity.getId());
        R r = sysClient.saveAddClassifyDefaultAuth(classifyAuthDTO);
        if (!r.isSuccess()) {
            throw new ServiceException("给角色授予默认权限时出现错误,原因:"+r.getMsg());
        }
        return R.status(resBoolean);
    }
    /**
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/feign/SysClient.java
@@ -16,6 +16,7 @@
 */
package com.vci.ubcs.system.feign;
import com.vci.ubcs.system.dto.ClassifyAuthDTO;
import com.vci.ubcs.system.entity.*;
import com.vci.ubcs.system.service.*;
import com.vci.ubcs.system.vo.DeptVO;
@@ -264,8 +265,14 @@
        return R.data(mdmCountConfigService.getMdmCountConfig(userId));
    }
    @GetMapping(GETVIEWCLASSIFY)
    public R<List<String>> getViewClassByRoleIds(List<String> roleIds,String authType,String buttonCode,String menuCode){
        return R.data(classifyAuthService.getViewClassByRoleIds(roleIds,authType,buttonCode,menuCode));
    }
    @PostMapping(SAVEADDCLASSIFYDEFAULTAUTH)
    public R saveAddClassifyDefaultAuth(@RequestBody ClassifyAuthDTO classifyAuthDTOS){
        return classifyAuthService.saveAddClassifyDefaultAuth(classifyAuthDTOS);
    }
}
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IClassifyAuthService.java
@@ -57,4 +57,11 @@
     */
    List<String> getViewClassByRoleIds(List<String> roleIds,String authType,String buttonCode,String menuCode);
    /**
     * 根据角色名称分类id授予默认的分类权限和主数据访问权限
     * @param classifyAuthDTOS
     * @return
     */
    R saveAddClassifyDefaultAuth(ClassifyAuthDTO classifyAuthDTOS);
}
Source/UBCS/ubcs-service/ubcs-system/src/main/java/com/vci/ubcs/system/service/IMenuService.java
@@ -174,7 +174,7 @@
    boolean submit(Menu menu);
    /**
     * 获取菜单下面的按钮
     * 获取分类节点菜单下面的按钮
     * @param classifyId
     * @param btmType
     * @param authType
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));
    }
}