资料中心

master
yangzhe123 2025-12-29 17:35:50 +08:00
parent e68f1127f3
commit 18cf4b4469
12 changed files with 762 additions and 0 deletions

View File

@ -0,0 +1,63 @@
package com.gunshi.project.ss.controller;
import com.gunshi.project.ss.entity.vo.UserRoleVo;
import com.gunshi.project.ss.model.DocCategory;
import com.gunshi.project.ss.service.DocCategoryService;
import com.ruoyi.common.core.domain.R;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@Tag(name = "资料类别")
@RestController
@RequestMapping(value = "/docCategory")
public class DocCategoryController {
@Autowired
private DocCategoryService docCategoryService;
@Operation(summary = "新增分类")
@PostMapping("/insert")
public R<Boolean> insert(@RequestBody DocCategory docCategory){
Boolean flg = docCategoryService.insert(docCategory);
return R.ok(flg);
}
@Operation(summary = "更新分类")
@PostMapping("/edit")
public R<Boolean> edit(@RequestBody DocCategory docCategory){
Boolean flg = docCategoryService.edit(docCategory);
return R.ok(flg);
}
@Operation(summary = "更新分类")
@GetMapping("/del/{id}")
public R<Boolean> edit(@PathVariable("id") Long id){
Boolean flg = docCategoryService.del(id);
return R.ok(flg);
}
@Operation(summary = "获取树状结构和配置的权限")
@GetMapping("/list")
public R<DocCategory> list() {
DocCategory docCategory = docCategoryService.tree();
return R.ok(docCategory);
}
@Operation(summary = "获取全部角色/部门下用户")
@GetMapping("/getAllUserAndRole")
public R<UserRoleVo> getAllUserAndRole(){
UserRoleVo vo = docCategoryService.getAllUserAndRole();
return R.ok(vo);
}
@Operation(summary = "检查是否有权限")
@GetMapping("/checkPermission/{userId}/{docCategoryId}")
public R<String[]> checkPermission(@PathVariable("userId") Long userId,@PathVariable("docCategoryId") Long docCategoryId){
String[] strings = docCategoryService.checkPermission(docCategoryId, userId);
return R.ok(strings);
}
}

View File

@ -0,0 +1,16 @@
package com.gunshi.project.ss.entity.vo;
import lombok.Data;
import java.util.List;
@Data
public class DocSysDeptUserVo {
private String deptId;
private String deptName;
private List<DocSysDeptUserVo> children;
private List<DocSysUserVo> users;
}

View File

@ -0,0 +1,11 @@
package com.gunshi.project.ss.entity.vo;
import lombok.Data;
@Data
public class DocSysRoleVo {
private String roleId;
private String roleName;
}

View File

@ -0,0 +1,11 @@
package com.gunshi.project.ss.entity.vo;
import lombok.Data;
@Data
public class DocSysUserVo {
private String userId;
private String userName;
}

View File

@ -0,0 +1,9 @@
package com.gunshi.project.ss.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gunshi.project.ss.model.DocCategory;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DocCategoryMapper extends BaseMapper<DocCategory> {
}

View File

@ -0,0 +1,9 @@
package com.gunshi.project.ss.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.gunshi.project.ss.model.DocPermissionConfig;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface DocPermissionConfigMapper extends BaseMapper<DocPermissionConfig> {
}

View File

@ -0,0 +1,59 @@
package com.gunshi.project.ss.model;
import com.alibaba.druid.sql.visitor.functions.Insert;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.gunshi.project.ss.common.validate.markers.Update;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@TableName("doc_category")
@Schema(description = "资料类别表")
public class DocCategory {
@TableId(value = "id",type = IdType.AUTO)
@NotNull(message = "id不能为空", groups = {Update.class})
@Schema(description = "主键id")
private Long id;
@TableField("category_name")
@NotNull(message = "分类名称不能为空", groups = {Insert.class, Update.class})
@Schema(description = "分类名称")
private String categoryName;
@TableField("parent_id")
@Schema(description = "父级id 0为第一级")
private Long parentId;
@TableField("category_code")
@Schema(description = "当前类目代码")
private String categoryCode;
@TableField("sort_order")
@Schema(description = "显示顺序")
private Integer sortOrder;
@TableField("create_time")
@Schema(description = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
@TableField("level")
@Schema(description = "当前层级")
private Integer level;
@TableField(exist = false)
@Schema(description = "子分类列表")
private List<DocCategory> children;
@TableField(exist = false)
@Schema(description = "所有者权限")
private List<DocPermissionConfig> permissions;
}

View File

@ -0,0 +1,95 @@
package com.gunshi.project.ss.model;
import com.alibaba.druid.sql.visitor.functions.Insert;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.gunshi.project.ss.common.validate.markers.Update;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.time.LocalDateTime;
import java.util.List;
@Data
@TableName("doc_center")
@Schema(description = "资料中心")
public class DocCenter {
@TableId(value = "id",type = IdType.AUTO)
@NotNull(message = "id不能为空", groups = {Update.class})
@Schema(description = "主键id")
private Long id;
@TableField("doc_name")
@NotNull(message = "档案名称不能为空", groups = {Insert.class, Update.class})
@Schema(description = "档案名称")
private String docName;
@TableField("replace_id")
@NotNull(message = "替换档案id不能为空", groups = {Insert.class, Update.class})
@Schema(description = "替换档案id")
private Long replaceId;
@TableField("doc_category_id")
@Schema(description = "资料类别id")
private Integer docCategoryId;
@TableField("group_id")
@Schema(description = "组id - 用于替换档案时")
private Long groupId;
@TableField("doc_number")
@NotNull(message = "档案编号不能为空", groups = {Insert.class, Update.class})
@Schema(description = "档案编号SS-XX-XX-0000")
private String docNumber;
@TableField("doc_version")
@Schema(description = "档案版本")
private Integer docVersion;
@TableField("create_time")
@Schema(description = "创建时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
@TableField("abolish_time")
@Schema(description = "废止时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime abolishTime;
@TableField("user_id")
@Schema(description = "归档人id")
private Long userId;
@TableField("business_name")
@Schema(description = "业务名称(用于不同业务文件归档后的文件查询)")
private String businessName;
@TableField("secret_level")
@Schema(description = "保密级别 0公开 1秘密 2机密")
private Integer secretLevel;
@TableField("is_abolish")
@Schema(description = "0未废止 1已废止")
private Integer isAbolish;
@TableField(exist = false)
@Schema(description = "归档人名称")
private String userName;
@TableField(exist = false)
@Schema(description = "资料分类名称")
private String categoryName;
@TableField(exist = false)
@Schema(description = "文件列表")
private List<FileAssociations> files;
@TableField(exist = false)
@Schema(description = "操作日志列表")
private List<DocOperateLog> logs;
}

View File

@ -0,0 +1,54 @@
package com.gunshi.project.ss.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import java.time.LocalDateTime;
@Data
@TableName("doc_operate_log")
@Schema(description = "档案行为日志表")
public class DocOperateLog {
@TableId(value = "id",type = IdType.AUTO)
@Schema(description = "主键ID")
private Long id;
@TableField("user_id")
@Schema(description = "用户id")
private Long userId;
@TableField("operate_type")
@Schema(description = "操作类型")
private String operateType;
@TableField("doc_number")
@Schema(description = "相关档案编号")
private String docNumber;
@TableField("doc_name")
@Schema(description = "档案名称")
private String docName;
@TableField("file_id")
@Schema(description = "文件id")
private Long fileId;
@TableField("create_time")
@Schema(description = "操作时间")
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
private LocalDateTime createTime;
@TableField(exist = false)
@Schema(description = "用户名称")
private String userName;
@TableField(exist = false)
@Schema(description = "操作类型名称")
private String operateTypeName;
}

View File

@ -0,0 +1,56 @@
package com.gunshi.project.ss.model;
import com.alibaba.druid.sql.visitor.functions.Insert;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.gunshi.project.ss.common.validate.markers.Update;
import io.swagger.v3.oas.annotations.media.Schema;
import jakarta.validation.constraints.NotNull;
import lombok.Data;
import java.util.List;
@Data
@TableName("doc_permission_config")
@Schema(description = "资料权限配置表")
public class DocPermissionConfig {
@TableId(value = "id",type = IdType.AUTO)
@NotNull(message = "id不能为空", groups = {Update.class})
@Schema(description = "主键ID")
private Long id;
@TableField("category_id")
@NotNull(message = "资料分类id不能为空", groups = {Insert.class, Update.class})
@Schema(description = "资料分类id")
private Long categoryId;
@TableField("target_type")
@NotNull(message = "权限目标类型不能为空", groups = {Insert.class, Update.class})
@Schema(description = "权限目标类型 1-角色2-人员")
private Short targetType;
@TableField("targer_id")
@NotNull(message = "目标ID不能为空", groups = {Insert.class, Update.class})
@Schema(description = "目标ID角色ID或者用户ID")
private Long targerId;
@TableField("permission_code")
@NotNull(message = "权限编码不能为空", groups = {Insert.class, Update.class})
@Schema(description = "所有权限比如add,edit,delete,view,download 权限以,分隔开")
private String permissionCode;
@TableField(exist = false)
@Schema(description = "目标名称(角色名称或用户名称)")
private String targetName;
@TableField(exist = false)
@Schema(description = "资料分类名称")
private String categoryName;
@TableField(exist = false)
@Schema(description = "权限列表")
private List<String> permissions;
}

View File

@ -0,0 +1,150 @@
package com.gunshi.project.ss.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gunshi.project.ss.entity.vo.UserRoleVo;
import com.gunshi.project.ss.mapper.DocCategoryMapper;
import com.gunshi.project.ss.model.DocCategory;
import com.gunshi.project.ss.model.DocPermissionConfig;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
import java.util.stream.Collectors;
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class DocCategoryService extends ServiceImpl<DocCategoryMapper, DocCategory> {
@Autowired
private DocCategoryMapper docCategoryMapper;
@Autowired
private DocPermissionConfigService docPermissionConfigService;
public DocCategory tree() {
LambdaQueryWrapper<DocCategory> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DocCategory::getParentId,0);
queryWrapper.last("limit 1");
DocCategory docCategory = docCategoryMapper.selectOne(queryWrapper);
List<DocCategory> allList = docCategoryMapper.selectList(null);
buildTree(docCategory,allList);
return docCategory;
}
/**
* BFS
* @param docCategory
* @return
*/
private DocCategory buildTree(DocCategory docCategory,List<DocCategory> allList) {
Queue<DocCategory> docCategoryDeque = new LinkedList<>();
if(docCategory != null){
docCategoryDeque.add(docCategory);
}
while(!docCategoryDeque.isEmpty()){
int size = docCategoryDeque.size();
while(size > 0){
DocCategory pop = docCategoryDeque.remove();
List<DocCategory> childrens = allList.stream().filter(o -> {
return o.getParentId().equals(pop.getId());
}).sorted(Comparator.comparing(DocCategory::getSortOrder)) // 升序排列
.collect(Collectors.toList());
pop.setChildren(childrens);
//判断赋予的权限
if(pop.getLevel() != null && pop.getLevel() == 3){
//只有最后一层才有权限
List<DocPermissionConfig> permissions = docPermissionConfigService.getPermissionByDocId(pop.getId());
pop.setPermissions(permissions);
}
childrens.forEach(item -> {docCategoryDeque.add(item);});
size--;
}
}
return docCategory;
}
public UserRoleVo getAllUserAndRole() {
return docPermissionConfigService.getAllUserAndRole();
}
public Boolean insert(DocCategory docCategory) {
docCategory.setCreateTime(LocalDateTime.now());
checkCategoryCodeSame(docCategory);
save(docCategory);
List<DocPermissionConfig> permissions = docCategory.getPermissions();
for (DocPermissionConfig permission : permissions) {
permission.setCategoryId(docCategory.getId());
}
docPermissionConfigService.saveBatch(permissions);
return true;
}
public void checkCategoryCodeSame(DocCategory docCategory) {
if(docCategory.getLevel() != 2){
return;
}
String categoryCode = docCategory.getCategoryCode();
LambdaQueryWrapper<DocCategory> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DocCategory::getLevel,2);
queryWrapper.eq(DocCategory::getCategoryCode,categoryCode);
Long count = docCategoryMapper.selectCount(queryWrapper);
if(count > 0){
throw new IllegalArgumentException("对不起,二级类目代码重复,请检查");
}
}
public String[] checkPermission(Long docCategoryId,Long loginUserId) {
// //对于超级管理员来说,直接赋予所有权限
// if(loginUserId == 1l){
// return new String[]{"add","edit","delete","view","download"};
// }
String[] permissions = docPermissionConfigService.checkPermission(docCategoryId,loginUserId);
return permissions;
}
public Boolean edit(DocCategory docCategory) {
updateById(docCategory);
docPermissionConfigService.deleteByDocCategoryId(docCategory.getId());
List<DocPermissionConfig> permissions = docCategory.getPermissions();
permissions.stream().forEach(item -> {item.setCategoryId(docCategory.getId());});
docPermissionConfigService.saveBatch(permissions);
//TODO 同步更新所有关联档案的档案号(这里不用该,我到时候直接递归查上来然后进行拼接即可)
return true;
}
public Boolean del(Long id) {
LambdaQueryWrapper<DocCategory> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DocCategory::getId, id);
DocCategory docCategory = this.baseMapper.selectOne(queryWrapper);
if(docCategory == null){
return true;
}
Integer level = docCategory.getLevel();
if(level == 1){
throw new IllegalArgumentException("对不起,无法删除一级类目数据");
}else if(level == 2){
//如果二级类目下有三级类目,则无法删除
LambdaQueryWrapper<DocCategory> childrenQueryWrapper = new LambdaQueryWrapper<>();
childrenQueryWrapper.eq(DocCategory::getParentId, docCategory.getId());
Long count = this.baseMapper.selectCount(childrenQueryWrapper);
if(count > 0){
throw new IllegalArgumentException("对不起,该类目下设有下级类目,无法删除");
}
}else{
//TODO 三级类目,如果关联有档案,则无法删除
}
docPermissionConfigService.deleteByDocCategoryId(docCategory.getId());
this.baseMapper.deleteById(id);
return true;
}
}

View File

@ -0,0 +1,229 @@
package com.gunshi.project.ss.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.gunshi.project.ss.entity.vo.DocSysDeptUserVo;
import com.gunshi.project.ss.entity.vo.DocSysRoleVo;
import com.gunshi.project.ss.entity.vo.DocSysUserVo;
import com.gunshi.project.ss.entity.vo.UserRoleVo;
import com.gunshi.project.ss.mapper.DocPermissionConfigMapper;
import com.gunshi.project.ss.model.DocPermissionConfig;
import com.ruoyi.common.core.domain.entity.SysDept;
import com.ruoyi.common.core.domain.entity.SysRole;
import com.ruoyi.common.core.domain.entity.SysUser;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.mapper.SysDeptMapper;
import com.ruoyi.system.mapper.SysRoleMapper;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.mapper.SysUserRoleMapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.*;
import java.util.stream.Collectors;
@Service
@Slf4j
@Transactional(rollbackFor = Exception.class)
public class DocPermissionConfigService extends ServiceImpl<DocPermissionConfigMapper, DocPermissionConfig> {
@Autowired
private DocPermissionConfigMapper docPermissionConfigMapper;
@Autowired
private SysUserMapper sysUserMapper;
@Autowired
private SysDeptMapper sysDeptMapper;
@Autowired
private SysRoleMapper sysRoleMapper;
@Autowired
private SysUserRoleMapper sysUserRoleMapper;
public List<DocPermissionConfig> getPermissionByDocId(Long id) {
LambdaQueryWrapper<DocPermissionConfig> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DocPermissionConfig::getCategoryId,id);
List<DocPermissionConfig> permissionConfigs = docPermissionConfigMapper.selectList(queryWrapper);
for (DocPermissionConfig permissionConfig : permissionConfigs) {
Short targetType = permissionConfig.getTargetType();
if(targetType == 1){
//表示是根据角色
SysRole sysRole = sysRoleMapper.selectRoleById(permissionConfig.getTargerId());
if(sysRole != null){
permissionConfig.setTargetName(sysRole.getRoleName());
}
}else{
//表示是按用户id
SysUser sysUser = sysUserMapper.selectUserById(permissionConfig.getTargerId());
if(sysUser != null){
permissionConfig.setTargetName(sysUser.getNickName());
}
}
String permissionCode = permissionConfig.getPermissionCode();
if(StringUtils.isNotEmpty(permissionCode)){
String[] split = permissionCode.split(",");
List<String> permissionList = Arrays.asList(split);
permissionConfig.setPermissions(permissionList);
}
}
return permissionConfigs;
}
public UserRoleVo getAllUserAndRole() {
UserRoleVo vo = new UserRoleVo();
SysRole sysRole = new SysRole();
sysRole.setStatus("0");
List<SysRole> sysRoles = sysRoleMapper.selectRoleList(sysRole);
List<DocSysRoleVo> docSysRoleVos = new ArrayList<>();
vo.setDocSysRoles(docSysRoleVos);
sysRoles.forEach(sysRole1 -> {
DocSysRoleVo docSysRoleVo = new DocSysRoleVo();
docSysRoleVo.setRoleName(sysRole1.getRoleName());
docSysRoleVo.setRoleId(sysRole1.getRoleId().toString());
docSysRoleVos.add(docSysRoleVo);
});
SysDept sysDept = new SysDept();
sysDept.setStatus("0");
List<SysDept> sysDepts = sysDeptMapper.selectDeptList(sysDept);
List<SysDept> topLevelDepts = filterTopLevelDepts(sysDepts);
List<DocSysDeptUserVo> docSysDeptUserVos = new ArrayList<>();
vo.setDocSysDeptUsers(docSysDeptUserVos);
for (SysDept dept : topLevelDepts) {
DocSysDeptUserVo docSysDeptUserVo = new DocSysDeptUserVo();
docSysDeptUserVo.setDeptId(dept.getDeptId().toString());
docSysDeptUserVo.setDeptName(dept.getDeptName());
buildDeptTree(docSysDeptUserVo,sysDepts);
docSysDeptUserVos.add(docSysDeptUserVo);
}
return vo;
}
public List<SysDept> filterTopLevelDepts(List<SysDept> allDepts) {
// 收集所有部门的ID
Set<Long> allDeptIds = allDepts.stream()
.map(SysDept::getDeptId)
.filter(Objects::nonNull)
.collect(Collectors.toSet());
// 找出所有顶级部门
return allDepts.stream()
.filter(dept -> {
Long parentId = dept.getParentId();
// 条件1: parentId为null
// 条件2: parentId为0如果0表示顶级
// 条件3: parentId不在现有部门ID列表中
return parentId == null
|| parentId == 0
|| !allDeptIds.contains(parentId);
})
.collect(Collectors.toList());
}
public DocSysDeptUserVo buildDeptTree(DocSysDeptUserVo doc,List<SysDept> allDepts) {
List<SysDept> childrens = new ArrayList<>();
for (SysDept dept : allDepts) {
String delFlag = dept.getDelFlag();
Long parentId = dept.getParentId();
if(parentId.toString().equals(doc.getDeptId()) && delFlag.equals("0")){
childrens.add(dept);
}
}
if(!childrens.isEmpty()){
List<DocSysDeptUserVo> chirldren = new ArrayList<>();
childrens.forEach(sysDept -> {
DocSysDeptUserVo docSysDeptUserVo = new DocSysDeptUserVo();
docSysDeptUserVo.setDeptId(sysDept.getDeptId().toString());
docSysDeptUserVo.setDeptName(sysDept.getDeptName());
chirldren.add(docSysDeptUserVo);
});
doc.setChildren(chirldren);
for (DocSysDeptUserVo docSysDeptUserVo : chirldren) {
buildDeptTree(docSysDeptUserVo,allDepts);
}
}else{
//查看
SysUser user = new SysUser();
user.setStatus("0");
user.setDeptId(Long.valueOf(doc.getDeptId()));
List<SysUser> sysUsers = sysUserMapper.selectUserList(user);
List<DocSysUserVo> docSysUserVos = new ArrayList<>();
doc.setUsers(docSysUserVos);
for (SysUser sysUser : sysUsers) {
DocSysUserVo docSysUserVo = new DocSysUserVo();
docSysUserVo.setUserId(sysUser.getUserId().toString());
docSysUserVo.setUserName(sysUser.getUserName());
docSysUserVos.add(docSysUserVo);
}
}
return doc;
}
public String[] checkPermission(Long categoryId, Long loginUserId) {
LambdaQueryWrapper<DocPermissionConfig> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DocPermissionConfig::getCategoryId,categoryId);
List<DocPermissionConfig> permissionConfigs = this.baseMapper.selectList(queryWrapper);
if(permissionConfigs.isEmpty()){
return new String[0];
}
Short targetType = permissionConfigs.get(0).getTargetType();//只会出现一种
if(targetType == 1){
//角色
SysUser sysUser = sysUserMapper.selectUserById(loginUserId);
if(sysUser != null){
//根据用户获取角色id
List<SysRole> roles = sysUser.getRoles();
if(roles.isEmpty()){
return new String[0];
}
List<Long> collect = roles.stream().filter(Objects::nonNull).map(SysRole::getRoleId).filter(Objects::nonNull).collect(Collectors.toList());
queryWrapper.in(DocPermissionConfig::getTargerId,collect);
//去查询
List<DocPermissionConfig> permissions = this.baseMapper.selectList(queryWrapper);
if(!permissions.isEmpty()){
String[] res = null;
int ans = 0;
for (DocPermissionConfig permission : permissions) {
if(StringUtils.isNotEmpty(permission.getPermissionCode())){
String[] split = permission.getPermissionCode().split(",");
if(split.length > ans){
res = split;
ans = split.length;
}else{
continue;
}
}
}
return res;
}else{
return new String[0];
}
}
}else{
//人员
queryWrapper.eq(DocPermissionConfig::getTargerId,loginUserId);
DocPermissionConfig docPermissionConfig = this.baseMapper.selectOne(queryWrapper);
if(docPermissionConfig != null){
String permissionCode = docPermissionConfig.getPermissionCode();
if(StringUtils.isNotEmpty(permissionCode)){
String[] split = permissionCode.split(",");
return split;
}else{
return new String[0];
}
}
return new String[0];
}
return new String[0];
}
public void deleteByDocCategoryId(Long docCatrgoryId) {
LambdaQueryWrapper<DocPermissionConfig> queryWrapper = new LambdaQueryWrapper<>();
queryWrapper.eq(DocPermissionConfig::getCategoryId,docCatrgoryId);
this.baseMapper.delete(queryWrapper);
}
}