新建的用户未分配角色时,操作自己信息回报错的问题

This commit is contained in:
YunaiV 2022-05-27 20:10:24 +08:00
parent abe6828d0c
commit 30fbfb6143

View File

@ -458,13 +458,16 @@ public class PermissionServiceImpl implements PermissionService {
@DataPermission(enable = false) // 关闭数据权限不然就会出现递归获取数据权限的问题 @DataPermission(enable = false) // 关闭数据权限不然就会出现递归获取数据权限的问题
@TenantIgnore // 忽略多租户的自动过滤如果不忽略会导致添加租户时因为切换租户导致获取不到 User即使忽略本身该方法不存在跨租户的操作不会存在问题 @TenantIgnore // 忽略多租户的自动过滤如果不忽略会导致添加租户时因为切换租户导致获取不到 User即使忽略本身该方法不存在跨租户的操作不会存在问题
public DeptDataPermissionRespDTO getDeptDataPermission(Long userId) { public DeptDataPermissionRespDTO getDeptDataPermission(Long userId) {
DeptDataPermissionRespDTO result = new DeptDataPermissionRespDTO();
// 获得用户的角色 // 获得用户的角色
Set<Long> roleIds = getUserRoleIdsFromCache(userId, singleton(CommonStatusEnum.ENABLE.getStatus())); Set<Long> roleIds = getUserRoleIdsFromCache(userId, singleton(CommonStatusEnum.ENABLE.getStatus()));
// 如果角色为空则只能查看自己
DeptDataPermissionRespDTO result = new DeptDataPermissionRespDTO();
if (CollUtil.isEmpty(roleIds)) { if (CollUtil.isEmpty(roleIds)) {
result.setSelf(true);
return result; return result;
} }
List<RoleDO> roles = roleService.getRolesFromCache(roleIds); List<RoleDO> roles = roleService.getRolesFromCache(roleIds);
// 获得用户的部门编号的缓存通过 Guava Suppliers 惰性求值即有且仅有第一次发起 DB 的查询 // 获得用户的部门编号的缓存通过 Guava Suppliers 惰性求值即有且仅有第一次发起 DB 的查询
Supplier<Long> userDeptIdCache = Suppliers.memoize(() -> userService.getUser(userId).getDeptId()); Supplier<Long> userDeptIdCache = Suppliers.memoize(() -> userService.getUser(userId).getDeptId());
// 遍历每个角色计算 // 遍历每个角色计算