fix:角色权限相关表更改及代码优化
This commit is contained in:
parent
89821b83f5
commit
1174a74211
|
|
@ -16,7 +16,7 @@ public interface RoleMapper extends BaseMapper<Role> {
|
|||
|
||||
@Select("<script>" +
|
||||
"SELECT " +
|
||||
" r.role_id AS roleId, " +
|
||||
" r.id AS roleId, " +
|
||||
" r.role_name AS roleName, " +
|
||||
" r.role_desc AS roleDesc, " +
|
||||
" GROUP_CONCAT(DISTINCT f.file_name) AS dataScope, " +
|
||||
|
|
@ -28,7 +28,7 @@ public interface RoleMapper extends BaseMapper<Role> {
|
|||
"FROM " +
|
||||
" ed_role r " +
|
||||
"LEFT JOIN " +
|
||||
" ed_role_permission rp ON r.role_id = rp.role_id " +
|
||||
" ed_role_permission rp ON r.id = rp.role_id " +
|
||||
"LEFT JOIN " +
|
||||
" ed_file_info f ON rp.file_id = f.id " +
|
||||
"LEFT JOIN" +
|
||||
|
|
|
|||
|
|
@ -1,22 +1,19 @@
|
|||
package com.electromagnetic.industry.software.manage.pojo.models;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.*;
|
||||
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
|
||||
import com.electromagnetic.industry.software.common.util.IdWorker;
|
||||
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@TableName("ed_role") // 指定表名
|
||||
public class Role {
|
||||
public class Role extends BaseModel{
|
||||
|
||||
@TableId(type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 角色编码
|
||||
*/
|
||||
@TableField(value = "role_id")
|
||||
private String roleId;
|
||||
@TableId(value = "id")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
* 角色名称
|
||||
|
|
@ -30,38 +27,16 @@ public class Role {
|
|||
@TableField(value = "role_desc")
|
||||
private String roleDesc;
|
||||
|
||||
/**
|
||||
* 创建者用户编码
|
||||
*/
|
||||
private String creator;
|
||||
|
||||
/**
|
||||
* 创建者姓名
|
||||
*/
|
||||
@TableField(value = "creator_name")
|
||||
private String creatorName;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
@TableField(value = "gmt_create", fill = FieldFill.INSERT)
|
||||
private Date gmtCreate;
|
||||
|
||||
/**
|
||||
* 编辑者用户编码
|
||||
*/
|
||||
private String modifier;
|
||||
|
||||
/**
|
||||
* 编辑者姓名
|
||||
*/
|
||||
@TableField(value = "modifier_name")
|
||||
private String modifierName;
|
||||
|
||||
/**
|
||||
* 编辑时间
|
||||
*/
|
||||
@TableField(value = "gmt_modified", fill = FieldFill.INSERT_UPDATE)
|
||||
private Date gmtModified;
|
||||
public void newInit() {
|
||||
String userId = UserThreadLocal.getUserId();
|
||||
String newId = IdWorker.getSnowFlakeIdString();
|
||||
Date now = new Date();
|
||||
this.setId(newId);
|
||||
this.setCreatedTime(now);
|
||||
this.setCreatedBy(userId);
|
||||
this.setUpdatedTime(now);
|
||||
this.setUpdatedBy(userId);
|
||||
this.setEffectFlag(EffectFlagEnum.EFFECT.code);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,21 +1,23 @@
|
|||
package com.electromagnetic.industry.software.manage.pojo.models;
|
||||
|
||||
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 lombok.AllArgsConstructor;
|
||||
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
|
||||
import com.electromagnetic.industry.software.common.util.IdWorker;
|
||||
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@TableName("ed_role_permission")
|
||||
@AllArgsConstructor
|
||||
public class RolePermission {
|
||||
public class RolePermission extends BaseModel{
|
||||
|
||||
/**
|
||||
* 主键id
|
||||
*/
|
||||
@TableId(type = IdType.ASSIGN_UUID)
|
||||
@TableId(value = "id")
|
||||
private String id;
|
||||
|
||||
/**
|
||||
|
|
@ -36,10 +38,15 @@ public class RolePermission {
|
|||
@TableField(value = "permission_code")
|
||||
private String permissionCode;
|
||||
|
||||
|
||||
public RolePermission(String roleId, String fileId, String permissionCode) {
|
||||
this.roleId = roleId;
|
||||
this.fileId = fileId;
|
||||
this.permissionCode = permissionCode;
|
||||
public void newInit() {
|
||||
String userId = UserThreadLocal.getUserId();
|
||||
String newId = IdWorker.getSnowFlakeIdString();
|
||||
Date now = new Date();
|
||||
this.setId(newId);
|
||||
this.setCreatedTime(now);
|
||||
this.setCreatedBy(userId);
|
||||
this.setUpdatedTime(now);
|
||||
this.setUpdatedBy(userId);
|
||||
this.setEffectFlag(EffectFlagEnum.EFFECT.code);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -14,11 +14,7 @@ public class PublishedFileDTO {
|
|||
|
||||
private Integer effectFlag;
|
||||
|
||||
private Boolean prjDir;
|
||||
|
||||
|
||||
public void newInit() {
|
||||
this.setPrjDir(Boolean.TRUE);
|
||||
this.setDataStatus(PublishEnum.PUBLISHED.getCode());
|
||||
this.setEffectFlag(EffectFlagEnum.EFFECT.code);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,16 @@ public interface RolePermissionService extends IService<RolePermission> {
|
|||
*/
|
||||
void syncNewPermissions(List<RolePermission> currentPermission, String infoId);
|
||||
|
||||
/**
|
||||
* 批量失效旧权限
|
||||
*/
|
||||
void disableOldPermissions(List<RolePermission> oldPermissions);
|
||||
|
||||
/**
|
||||
* 插入或激活新权限(使用 ON DUPLICATE KEY UPDATE 机制)
|
||||
*/
|
||||
void insertOrUpdateNewPermissions(List<RolePermission> newPermission);
|
||||
|
||||
/**
|
||||
* 获取新权限
|
||||
*
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
package com.electromagnetic.industry.software.manage.service.serviceimpl;
|
||||
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.electromagnetic.industry.software.common.enums.DataOwnEnum;
|
||||
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
|
||||
import com.electromagnetic.industry.software.common.enums.EleDataStatusEnum;
|
||||
|
|
@ -57,11 +58,12 @@ public class PermissionServiceImpl implements PermissionService {
|
|||
if (roleIds.isEmpty()) {
|
||||
return new HashMap<>();
|
||||
}
|
||||
LambdaQueryWrapper<RolePermission> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.select(RolePermission::getPermissionCode)
|
||||
LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.select(RolePermission::getPermissionCode)
|
||||
.eq(RolePermission::getFileId, id)
|
||||
.eq(RolePermission::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
||||
.in(RolePermission::getRoleId, roleIds);
|
||||
List<String> permissionCodes = rolePermissionService.listObjs(queryWrapper1).stream().map(Object::toString).toList();
|
||||
List<String> permissionCodes = rolePermissionService.listObjs(queryWrapper).stream().map(Object::toString).toList();
|
||||
Map<String, Boolean> res = transToMap(permissionCodes, includeView);
|
||||
UserThreadLocal.setSuccessInfo("", "", "查看当前目录功能权限成功");
|
||||
return res;
|
||||
|
|
@ -86,6 +88,7 @@ public class PermissionServiceImpl implements PermissionService {
|
|||
LambdaQueryWrapper<RolePermission> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.select(RolePermission::getFileId)
|
||||
.in(RolePermission::getRoleId, roleIds)
|
||||
.eq(RolePermission::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
||||
.eq(RolePermission::getPermissionCode, FilePermission.VIEW);
|
||||
List<String> ids = rolePermissionService.listObjs(queryWrapper1).stream().map(Object::toString).toList();
|
||||
|
||||
|
|
@ -123,7 +126,8 @@ public class PermissionServiceImpl implements PermissionService {
|
|||
LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.select(RolePermission::getPermissionCode)
|
||||
.eq(RolePermission::getFileId, fileId)
|
||||
.eq(RolePermission::getRoleId, roleId);
|
||||
.eq(RolePermission::getRoleId, roleId)
|
||||
.eq(RolePermission::getEffectFlag, EffectFlagEnum.EFFECT.code);
|
||||
return rolePermissionService.listObjs(queryWrapper).stream().map(Object::toString).toList();
|
||||
}
|
||||
|
||||
|
|
@ -166,10 +170,15 @@ public class PermissionServiceImpl implements PermissionService {
|
|||
|
||||
String userId = UserThreadLocal.getUserId();
|
||||
List<String> roleIds = getRoles(userId);
|
||||
if (roleIds == null || roleIds.isEmpty()) {
|
||||
return map;
|
||||
}
|
||||
|
||||
for (String id : ids) {
|
||||
LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(RolePermission::getFileId, id)
|
||||
.eq(RolePermission::getPermissionCode, FilePermission.EXPORT.getCode())
|
||||
.eq(RolePermission::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
||||
.in(RolePermission::getRoleId, roleIds);
|
||||
long count = rolePermissionService.count(queryWrapper);
|
||||
map.put(id, count > 0);
|
||||
|
|
@ -193,17 +202,18 @@ public class PermissionServiceImpl implements PermissionService {
|
|||
@Override
|
||||
public void syncPermissions(String prjId) {
|
||||
|
||||
// 获取当前项目所有已逻辑删除的节点,删除其权限
|
||||
// 获取当前项目所有已逻辑删除的节点,失效其权限
|
||||
LambdaQueryWrapper<EdFileInfo> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(EdFileInfo::getDataStatus, EleDataStatusEnum.WAIT_DELETED.code)
|
||||
.eq(EdFileInfo::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code)
|
||||
.likeRight(EdFileInfo::getFilePath, prjId);
|
||||
List<String> deletedIds = edFileInfoMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).toList();
|
||||
List<String> disableIds = edFileInfoMapper.selectList(queryWrapper).stream().map(EdFileInfo::getId).toList();
|
||||
|
||||
LambdaQueryWrapper<RolePermission> deleteWrapper = new LambdaQueryWrapper<>();
|
||||
if (!deletedIds.isEmpty()) {
|
||||
deleteWrapper.in(RolePermission::getFileId, deletedIds);
|
||||
rolePermissionService.remove(deleteWrapper);
|
||||
LambdaUpdateWrapper<RolePermission> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
if (!disableIds.isEmpty()) {
|
||||
updateWrapper.set(RolePermission::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code)
|
||||
.in(RolePermission::getFileId, disableIds);
|
||||
rolePermissionService.update(updateWrapper);
|
||||
}
|
||||
|
||||
// 获取当前项目所有已发布的节点
|
||||
|
|
@ -241,6 +251,7 @@ public class PermissionServiceImpl implements PermissionService {
|
|||
LambdaQueryWrapper<RolePermission> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.eq(RolePermission::getPermissionCode, permissionCode)
|
||||
.eq(RolePermission::getFileId, fileId)
|
||||
.eq(RolePermission::getEffectFlag, EffectFlagEnum.EFFECT.code)
|
||||
.in(RolePermission::getRoleId, roleIds);
|
||||
return rolePermissionService.count(queryWrapper1) > 0;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,11 @@
|
|||
package com.electromagnetic.industry.software.manage.service.serviceimpl;
|
||||
|
||||
import cn.hutool.core.lang.Assert;
|
||||
import cn.hutool.core.text.StrFormatter;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.electromagnetic.industry.software.common.enums.EffectFlagEnum;
|
||||
import com.electromagnetic.industry.software.manage.mapper.RolePermissionMapper;
|
||||
import com.electromagnetic.industry.software.manage.pojo.models.EdFileInfo;
|
||||
import com.electromagnetic.industry.software.manage.pojo.models.RolePermission;
|
||||
|
|
@ -35,44 +39,65 @@ public class RolePermissionServiceImpl extends ServiceImpl<RolePermissionMapper,
|
|||
@Override
|
||||
public void syncNewPermissions(List<RolePermission> currentPermission, String infoId) {
|
||||
|
||||
if (currentPermission == null) {
|
||||
throw new IllegalArgumentException("currentPermission must not be null");
|
||||
}
|
||||
Assert.notNull(currentPermission, StrFormatter.format("权限参数无效"));
|
||||
|
||||
LambdaQueryWrapper<RolePermission> deleteWrapper = new LambdaQueryWrapper<>();
|
||||
deleteWrapper.eq(RolePermission::getFileId, infoId);
|
||||
List<RolePermission> oldPermissions = this.list(deleteWrapper);
|
||||
LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(RolePermission::getFileId, infoId)
|
||||
.eq(RolePermission::getEffectFlag, EffectFlagEnum.EFFECT.code);
|
||||
List<RolePermission> oldPermissions = this.list(queryWrapper);
|
||||
|
||||
Set<String> newPermissionSet = currentPermission.stream()
|
||||
.map(p -> p.getRoleId() + "_" + p.getPermissionCode())
|
||||
.collect(Collectors.toSet());
|
||||
|
||||
List<RolePermission> permissionsToDelete = oldPermissions.stream()
|
||||
List<RolePermission> permissionsToDisable = oldPermissions.stream()
|
||||
.filter(p -> !newPermissionSet.contains(p.getRoleId() + "_" + p.getPermissionCode()))
|
||||
.toList();
|
||||
|
||||
log.info("删除旧权限: {}", permissionsToDelete);
|
||||
log.info("失效旧权限: {}", permissionsToDisable);
|
||||
|
||||
// 删除不需要的权限
|
||||
if (!permissionsToDelete.isEmpty()) {
|
||||
List<String> idsToDelete = permissionsToDelete.stream()
|
||||
disableOldPermissions(permissionsToDisable);
|
||||
|
||||
// 批量插入/更新新权限
|
||||
insertOrUpdateNewPermissions(currentPermission);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量失效旧权限
|
||||
*/
|
||||
@Override
|
||||
public void disableOldPermissions(List<RolePermission> oldPermissions) {
|
||||
if (!oldPermissions.isEmpty()) {
|
||||
List<String> idsToDisable = oldPermissions.stream()
|
||||
.map(RolePermission::getId)
|
||||
.toList();
|
||||
this.removeBatchByIds(idsToDelete);
|
||||
}
|
||||
this.update(new LambdaUpdateWrapper<RolePermission>()
|
||||
.set(RolePermission::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code)
|
||||
.in(RolePermission::getId, idsToDisable));
|
||||
}
|
||||
}
|
||||
|
||||
// 批量插入/更新新权限(使用 ON DUPLICATE KEY UPDATE 机制)
|
||||
if (!currentPermission.isEmpty()) {
|
||||
for (RolePermission rp : currentPermission) {
|
||||
/**
|
||||
* 插入或激活新权限(使用 ON DUPLICATE KEY UPDATE 机制)
|
||||
*/
|
||||
@Override
|
||||
@Transactional
|
||||
public void insertOrUpdateNewPermissions(List<RolePermission> newPermission) {
|
||||
if (!newPermission.isEmpty()) {
|
||||
for (RolePermission rp : newPermission) {
|
||||
rp.setEffectFlag(EffectFlagEnum.EFFECT.code);
|
||||
// 查询包括已失效的记录
|
||||
RolePermission exist = this.getOne(new LambdaQueryWrapper<RolePermission>()
|
||||
.eq(RolePermission::getFileId, rp.getFileId())
|
||||
.eq(RolePermission::getRoleId, rp.getRoleId())
|
||||
.eq(RolePermission::getRoleId,rp.getRoleId())
|
||||
.eq(RolePermission::getPermissionCode, rp.getPermissionCode()));
|
||||
if (exist != null) {
|
||||
rp.setId(exist.getId()); // 赋值已有 ID,避免重复插入
|
||||
rp.setEffectFlag(EffectFlagEnum.EFFECT.code); //重新激活记录
|
||||
}
|
||||
}
|
||||
this.saveOrUpdateBatch(currentPermission);
|
||||
this.saveOrUpdateBatch(newPermission);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -105,8 +130,6 @@ public class RolePermissionServiceImpl extends ServiceImpl<RolePermissionMapper,
|
|||
levelMap.computeIfAbsent(len, k -> new ArrayList<>()).add(file);
|
||||
}
|
||||
|
||||
System.out.println("levelMap:" + levelMap);
|
||||
|
||||
// 获取叶子节点
|
||||
int maxLen = levelMap.lastKey();
|
||||
|
||||
|
|
|
|||
|
|
@ -11,7 +11,6 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.electromagnetic.industry.software.common.enums.*;
|
||||
import com.electromagnetic.industry.software.common.util.IdWorker;
|
||||
import com.electromagnetic.industry.software.common.util.UserThreadLocal;
|
||||
import com.electromagnetic.industry.software.manage.mapper.EdFileInfoMapper;
|
||||
import com.electromagnetic.industry.software.manage.mapper.RoleMapper;
|
||||
|
|
@ -67,23 +66,20 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
|
||||
// 创建角色
|
||||
Role role = new Role();
|
||||
// 创建角色编号
|
||||
String roleId = IdWorker.getSnowFlakeIdString();
|
||||
|
||||
role.setRoleId(roleId);
|
||||
role.newInit();
|
||||
role.setRoleName(roleDTO.getRoleName());
|
||||
role.setRoleDesc(roleDTO.getRoleDesc());
|
||||
role.setCreator(UserThreadLocal.getUserId());
|
||||
role.setCreatorName(UserThreadLocal.getUsername());
|
||||
this.save(role);
|
||||
|
||||
String roleId = role.getId();
|
||||
|
||||
// 创建权限
|
||||
List<RolePermissionDTO> data = roleDTO.getData();
|
||||
List<RolePermission> list = flattenTree(data, roleId);
|
||||
List<RolePermission> list = flattenTree(data, roleDTO.getRoleId());
|
||||
rolePermissionService.saveBatch(list);
|
||||
UserThreadLocal.setSuccessInfo("", roleId, "创建了角色");
|
||||
return true;
|
||||
|
||||
UserThreadLocal.setSuccessInfo("", roleId, StrFormatter.format("创建了角色 {} ", role.getRoleName()));
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -100,22 +96,18 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
|
||||
// 更新角色信息
|
||||
LambdaUpdateWrapper<Role> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(Role::getRoleId, roleDTO.getRoleId())
|
||||
updateWrapper.eq(Role::getId, roleDTO.getRoleId())
|
||||
.set(Role::getRoleName, roleDTO.getRoleName())
|
||||
.set(Role::getRoleDesc, roleDTO.getRoleDesc())
|
||||
.set(Role::getModifier, UserThreadLocal.getUserId())
|
||||
.set(Role::getModifierName, UserThreadLocal.getUsername());
|
||||
.set(Role::getRoleDesc, roleDTO.getRoleDesc());
|
||||
this.update(updateWrapper);
|
||||
|
||||
// 删除旧权限信息
|
||||
LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(RolePermission::getRoleId, roleDTO.getRoleId());
|
||||
rolePermissionService.remove(queryWrapper);
|
||||
// 失效角色关联的旧权限
|
||||
disableRolePermission(roleDTO.getRoleId());
|
||||
|
||||
// 插入新权限信息
|
||||
// 插入/激活新权限信息
|
||||
List<RolePermissionDTO> data = roleDTO.getData();
|
||||
List<RolePermission> list = flattenTree(data, roleDTO.getRoleId());
|
||||
rolePermissionService.saveBatch(list);
|
||||
rolePermissionService.insertOrUpdateNewPermissions(list);
|
||||
|
||||
UserThreadLocal.setSuccessInfo("", roleDTO.getRoleId(), "更新了角色");
|
||||
return true;
|
||||
|
|
@ -131,21 +123,23 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
@Override
|
||||
public Boolean deleteRole(String roleId) {
|
||||
|
||||
// 删除角色权限关联表
|
||||
LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(RolePermission::getRoleId, roleId);
|
||||
rolePermissionService.remove(queryWrapper);
|
||||
// 失效角色权限关联表
|
||||
disableRolePermission(roleId);
|
||||
|
||||
// 失效用户角色关联表
|
||||
|
||||
// 删除用户角色关联表
|
||||
LambdaQueryWrapper<UserRole> queryWrapper1 = new LambdaQueryWrapper<>();
|
||||
queryWrapper1.eq(UserRole::getRoleId, roleId);
|
||||
userRoleService.remove(queryWrapper1);
|
||||
|
||||
// 删除角色
|
||||
LambdaQueryWrapper<Role> queryWrapper2 = new LambdaQueryWrapper<>();
|
||||
queryWrapper2.eq(Role::getRoleId, roleId);
|
||||
// 失效角色
|
||||
LambdaUpdateWrapper<Role> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.eq(Role::getId, roleId)
|
||||
.set(Role::getEffectFlag, EffectFlagEnum.NOT_EFFECTIVE.code);
|
||||
this.update(updateWrapper);
|
||||
|
||||
UserThreadLocal.setSuccessInfo("", roleId, "删除了角色");
|
||||
return this.remove(queryWrapper2);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -157,12 +151,13 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
@Transactional
|
||||
@Override
|
||||
public RoleDTO getRole(String roleId) {
|
||||
RoleDTO roleDTO = new RoleDTO();
|
||||
|
||||
QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("role_id", roleId);
|
||||
LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Role::getId, roleId);
|
||||
Role role = this.getOne(queryWrapper);
|
||||
roleDTO.setRoleId(role.getRoleId());
|
||||
|
||||
RoleDTO roleDTO = new RoleDTO();
|
||||
roleDTO.setRoleId(role.getId());
|
||||
roleDTO.setRoleName(role.getRoleName());
|
||||
roleDTO.setRoleDesc(role.getRoleDesc());
|
||||
|
||||
|
|
@ -205,8 +200,8 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Role::getRoleName, roleName);
|
||||
Role role = this.getOne(queryWrapper);
|
||||
UserThreadLocal.setSuccessInfo("", role.getRoleId(), "查询了角色详情");
|
||||
return getRole(role.getRoleId());
|
||||
UserThreadLocal.setSuccessInfo("", role.getId(), "查询了角色详情");
|
||||
return getRole(role.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -222,9 +217,9 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
// 创建分页对象
|
||||
Page<RoleDTO> page = new Page<>(rolePageDTO.getPageIndex(), rolePageDTO.getPageSize());
|
||||
QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
|
||||
|
||||
queryWrapper.eq("r.effect_flag", EffectFlagEnum.EFFECT.code);
|
||||
if (StringUtils.isNotBlank(rolePageDTO.getRoleId())) {
|
||||
queryWrapper.eq("r.role_id", rolePageDTO.getRoleId());
|
||||
queryWrapper.eq("r.id", rolePageDTO.getRoleId());
|
||||
}
|
||||
if (StringUtils.isNotBlank(rolePageDTO.getRoleName())) {
|
||||
queryWrapper.eq("r.role_name", rolePageDTO.getRoleName());
|
||||
|
|
@ -249,8 +244,7 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
@Override
|
||||
public List<HashMap<String, String>> getAllRoleNames() {
|
||||
LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.select(Role::getRoleName);
|
||||
|
||||
queryWrapper.select(Role::getRoleName).eq(Role::getEffectFlag, EffectFlagEnum.EFFECT.code);
|
||||
List<String> roleNames = this.listObjs(queryWrapper).stream().map(Object::toString).toList();
|
||||
List<HashMap<String, String>> result = new ArrayList<>();
|
||||
for (String roleName : roleNames) {
|
||||
|
|
@ -299,10 +293,11 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
* @return
|
||||
*/
|
||||
private Boolean checkRoleNameUnique(RoleDTO roleDTO) {
|
||||
QueryWrapper<Role> queryWrapper = new QueryWrapper<>();
|
||||
queryWrapper.eq("role_name", roleDTO.getRoleName());
|
||||
LambdaQueryWrapper<Role> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(Role::getRoleName, roleDTO.getRoleName())
|
||||
.eq(Role::getEffectFlag, EffectFlagEnum.EFFECT.code);
|
||||
Role role = this.getOne(queryWrapper);
|
||||
return role == null || role.getRoleId().equals(roleDTO.getRoleId());
|
||||
return role == null || role.getId().equals(roleDTO.getRoleId());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -324,12 +319,22 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
|
||||
node.getPermission().forEach((code, hasPermission) -> {
|
||||
if (Boolean.TRUE.equals(hasPermission)) { // 检查权限值是否为 true
|
||||
flatList.add(new RolePermission(roleId, node.getId(), code));
|
||||
RolePermission rolePermission = new RolePermission();
|
||||
rolePermission.newInit();
|
||||
rolePermission.setRoleId(roleId);
|
||||
rolePermission.setFileId(node.getId());
|
||||
rolePermission.setPermissionCode(code);
|
||||
flatList.add(rolePermission);
|
||||
}
|
||||
});
|
||||
|
||||
if (node.getDataAuth().get("data").equals(Boolean.TRUE)) {
|
||||
flatList.add(new RolePermission(roleId, node.getId(), FilePermission.VIEW.getCode()));
|
||||
RolePermission rolePermission = new RolePermission();
|
||||
rolePermission.newInit();
|
||||
rolePermission.setRoleId(roleId);
|
||||
rolePermission.setFileId(node.getId());
|
||||
rolePermission.setPermissionCode(FilePermission.VIEW.getCode());
|
||||
flatList.add(rolePermission);
|
||||
}
|
||||
|
||||
// 添加当前节点
|
||||
|
|
@ -390,5 +395,23 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
|||
infos.addAll(repoInfos);
|
||||
return infos;
|
||||
}
|
||||
|
||||
/**
|
||||
* 失效角色权限关系
|
||||
*/
|
||||
private void disableRolePermission (String roleId) {
|
||||
// 失效旧权限信息
|
||||
LambdaQueryWrapper<RolePermission> queryWrapper = new LambdaQueryWrapper<>();
|
||||
queryWrapper.eq(RolePermission::getRoleId, roleId);
|
||||
List<RolePermission> oldPermissions = rolePermissionService.list(queryWrapper);
|
||||
rolePermissionService.disableOldPermissions(oldPermissions);
|
||||
}
|
||||
|
||||
/**
|
||||
* 失效角色用户关系
|
||||
*/
|
||||
private void disableUserRole (String roleId) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -14,16 +14,14 @@
|
|||
resultMap="RolePermissionMap">
|
||||
SELECT f.parent_id as file_id, rp.permission_code, rp.role_id
|
||||
FROM ed_role_permission rp
|
||||
JOIN ed_file_info f ON rp.file_id = f.id
|
||||
JOIN ed_file_info f ON rp.file_id = f.id AND rp.effect_flag = #{effectFlag}
|
||||
WHERE f.parent_id = #{fileId}
|
||||
AND f.data_own = #{prjDir}
|
||||
AND f.data_status = #{dataStatus}
|
||||
AND f.effect_flag = #{effectFlag}
|
||||
GROUP BY rp.role_id, rp.permission_code
|
||||
HAVING COUNT(f.id) = (SELECT COUNT(f2.id)
|
||||
FROM ed_file_info f2
|
||||
WHERE f2.parent_id = #{fileId}
|
||||
AND f2.data_own = #{prjDir}
|
||||
AND f2.data_status = #{dataStatus}
|
||||
AND f2.effect_flag = #{effectFlag})
|
||||
</select>
|
||||
|
|
|
|||
Loading…
Reference in New Issue