mirror of
https://gitee.com/dromara/RuoYi-Cloud-Plus.git
synced 2026-05-13 15:12:09 +08:00
update 角色管理菜单权限-数据权限放到一起
This commit is contained in:
@@ -92,7 +92,10 @@ public class SysRoleController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改保存角色
|
* 修改角色基础信息(不包含菜单权限、数据权限)。
|
||||||
|
*
|
||||||
|
* @param role 角色参数
|
||||||
|
* @return 操作结果
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("system:role:edit")
|
@SaCheckPermission("system:role:edit")
|
||||||
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
|
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
|
||||||
@@ -107,7 +110,7 @@ public class SysRoleController extends BaseController {
|
|||||||
return R.fail("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
|
return R.fail("修改角色'" + role.getRoleName() + "'失败,角色权限已存在");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (roleService.updateRole(role) > 0) {
|
if (roleService.updateRoleBaseInfo(role) > 0) {
|
||||||
roleService.cleanOnlineUserByRole(role.getRoleId());
|
roleService.cleanOnlineUserByRole(role.getRoleId());
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
@@ -115,20 +118,23 @@ public class SysRoleController extends BaseController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改保存数据权限
|
* 修改角色权限信息(菜单权限 + 数据权限)。
|
||||||
|
*
|
||||||
|
* @param role 角色参数
|
||||||
|
* @return 操作结果
|
||||||
*/
|
*/
|
||||||
@SaCheckPermission("system:role:edit")
|
@SaCheckPermission("system:role:edit")
|
||||||
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
|
@Log(title = "角色管理", businessType = BusinessType.UPDATE)
|
||||||
@RepeatSubmit()
|
@RepeatSubmit()
|
||||||
@PutMapping("/dataScope")
|
@PutMapping("/permission")
|
||||||
public R<Void> dataScope(@RequestBody SysRoleBo role) {
|
public R<Void> editPermission(@RequestBody SysRoleBo role) {
|
||||||
roleService.checkRoleAllowed(role);
|
roleService.checkRoleAllowed(role);
|
||||||
roleService.checkRoleDataScope(role.getRoleId());
|
roleService.checkRoleDataScope(role.getRoleId());
|
||||||
if (roleService.authDataScope(role) > 0) {
|
if (roleService.updateRolePermission(role) > 0) {
|
||||||
roleService.cleanOnlineUserByRole(role.getRoleId());
|
roleService.cleanOnlineUserByRole(role.getRoleId());
|
||||||
return R.ok();
|
return R.ok();
|
||||||
}
|
}
|
||||||
return R.fail("修改角色'" + role.getRoleName() + "'数据权限失败,请联系管理员");
|
return R.fail("修改角色'" + role.getRoleName() + "'权限失败,请联系管理员");
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -142,12 +142,20 @@ public interface ISysRoleService {
|
|||||||
int insertRole(SysRoleBo bo);
|
int insertRole(SysRoleBo bo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改保存角色信息
|
* 修改角色基础信息(不包含菜单/数据权限)。
|
||||||
*
|
*
|
||||||
* @param bo 角色信息
|
* @param bo 角色信息
|
||||||
* @return 结果
|
* @return 影响行数
|
||||||
*/
|
*/
|
||||||
int updateRole(SysRoleBo bo);
|
int updateRoleBaseInfo(SysRoleBo bo);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改角色权限信息(菜单权限 + 数据权限)。
|
||||||
|
*
|
||||||
|
* @param bo 角色权限参数
|
||||||
|
* @return 影响行数
|
||||||
|
*/
|
||||||
|
int updateRolePermission(SysRoleBo bo);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改角色状态
|
* 修改角色状态
|
||||||
@@ -158,14 +166,6 @@ public interface ISysRoleService {
|
|||||||
*/
|
*/
|
||||||
int updateRoleStatus(Long roleId, String status);
|
int updateRoleStatus(Long roleId, String status);
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改数据权限信息
|
|
||||||
*
|
|
||||||
* @param bo 角色信息
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
int authDataScope(SysRoleBo bo);
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过角色ID删除角色
|
* 通过角色ID删除角色
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -299,24 +299,42 @@ public class SysRoleServiceImpl implements ISysRoleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改保存角色信息
|
* 修改角色基础信息(不更新菜单与数据权限)。
|
||||||
*
|
*
|
||||||
* @param bo 角色信息
|
* @param bo 角色信息
|
||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public int updateRole(SysRoleBo bo) {
|
public int updateRoleBaseInfo(SysRoleBo bo) {
|
||||||
SysRole role = MapstructUtils.convert(bo, SysRole.class);
|
SysRole role = MapstructUtils.convert(bo, SysRole.class);
|
||||||
|
|
||||||
if (SystemConstants.DISABLE.equals(role.getStatus()) && this.countUserRoleByRoleId(role.getRoleId()) > 0) {
|
if (SystemConstants.DISABLE.equals(role.getStatus()) && this.countUserRoleByRoleId(role.getRoleId()) > 0) {
|
||||||
throw new ServiceException("角色已分配,不能禁用!");
|
throw new ServiceException("角色已分配,不能禁用!");
|
||||||
}
|
}
|
||||||
// 修改角色信息
|
// 仅更新角色基础字段,避免影响权限分配。
|
||||||
|
return baseMapper.updateById(role);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 修改角色权限信息(菜单权限 + 数据权限)。
|
||||||
|
*
|
||||||
|
* @param bo 角色权限参数
|
||||||
|
* @return 结果
|
||||||
|
*/
|
||||||
|
@CacheEvict(cacheNames = CacheNames.SYS_ROLE_CUSTOM, key = "#bo.roleId")
|
||||||
|
@Override
|
||||||
|
@Transactional(rollbackFor = Exception.class)
|
||||||
|
public int updateRolePermission(SysRoleBo bo) {
|
||||||
|
SysRole role = MapstructUtils.convert(bo, SysRole.class);
|
||||||
|
// 更新权限相关配置字段(数据范围、树联动)。
|
||||||
baseMapper.updateById(role);
|
baseMapper.updateById(role);
|
||||||
// 删除角色与菜单关联
|
// 先清理旧菜单权限,再重建。
|
||||||
roleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, role.getRoleId()));
|
roleMenuMapper.delete(new LambdaQueryWrapper<SysRoleMenu>().eq(SysRoleMenu::getRoleId, role.getRoleId()));
|
||||||
return insertRoleMenu(bo);
|
insertRoleMenu(bo);
|
||||||
|
// 先清理旧数据权限,再按当前配置重建。
|
||||||
|
roleDeptMapper.delete(new LambdaQueryWrapper<SysRoleDept>().eq(SysRoleDept::getRoleId, role.getRoleId()));
|
||||||
|
return insertRoleDept(bo);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -337,25 +355,6 @@ public class SysRoleServiceImpl implements ISysRoleService {
|
|||||||
.eq(SysRole::getRoleId, roleId));
|
.eq(SysRole::getRoleId, roleId));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* 修改数据权限信息
|
|
||||||
*
|
|
||||||
* @param bo 角色信息
|
|
||||||
* @return 结果
|
|
||||||
*/
|
|
||||||
@CacheEvict(cacheNames = CacheNames.SYS_ROLE_CUSTOM, key = "#bo.roleId")
|
|
||||||
@Override
|
|
||||||
@Transactional(rollbackFor = Exception.class)
|
|
||||||
public int authDataScope(SysRoleBo bo) {
|
|
||||||
SysRole role = MapstructUtils.convert(bo, SysRole.class);
|
|
||||||
// 修改角色信息
|
|
||||||
baseMapper.updateById(role);
|
|
||||||
// 删除角色与部门关联
|
|
||||||
roleDeptMapper.delete(new LambdaQueryWrapper<SysRoleDept>().eq(SysRoleDept::getRoleId, role.getRoleId()));
|
|
||||||
// 新增角色和部门信息(数据权限)
|
|
||||||
return insertRoleDept(bo);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 新增角色菜单信息
|
* 新增角色菜单信息
|
||||||
*
|
*
|
||||||
|
|||||||
Reference in New Issue
Block a user