fix:角色权限相关表更改及代码优化

This commit is contained in:
s2042968 2025-04-17 16:56:03 +08:00
parent 89821b83f5
commit 1174a74211
9 changed files with 177 additions and 134 deletions

View File

@ -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" +

View File

@ -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);
}
}

View File

@ -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);
}
}

View File

@ -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);
}

View File

@ -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);
/**
* 获取新权限
*

View File

@ -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;
}

View File

@ -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();

View File

@ -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) {
}
}

View File

@ -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>