feat:登陆用户的部门数据权限接口增加角色参数
This commit is contained in:
@@ -86,4 +86,8 @@ public class PermissionApiImpl implements PermissionApi {
|
||||
return success(permissionService.getDeptDataPermission(userId));
|
||||
}
|
||||
|
||||
@Override
|
||||
public CommonResult<DeptDataPermissionRespDTO> getDeptDataPermissionWithRoleCodes(Long userId, String roleCodes) {
|
||||
return success(permissionService.getDeptDataPermissionWithRoleCodes(userId, roleCodes));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -143,6 +143,7 @@ public interface PermissionService {
|
||||
* @return 部门数据权限
|
||||
*/
|
||||
DeptDataPermissionRespDTO getDeptDataPermission(Long userId);
|
||||
DeptDataPermissionRespDTO getDeptDataPermissionWithRoleCodes(Long userId, String roleCodes);
|
||||
|
||||
/**
|
||||
* 获得用户的数据权限级别
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.zt.plat.module.system.service.permission;
|
||||
import cn.hutool.core.collection.CollUtil;
|
||||
import cn.hutool.core.collection.CollectionUtil;
|
||||
import cn.hutool.core.util.ArrayUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import cn.hutool.extra.spring.SpringUtil;
|
||||
import com.baomidou.dynamic.datasource.annotation.DSTransactional;
|
||||
import com.google.common.annotations.VisibleForTesting;
|
||||
@@ -12,6 +13,7 @@ import com.zt.plat.framework.common.biz.system.permission.dto.DeptDataPermission
|
||||
import com.zt.plat.framework.common.enums.CommonStatusEnum;
|
||||
import com.zt.plat.framework.common.util.collection.CollectionUtils;
|
||||
import com.zt.plat.framework.datapermission.core.annotation.DataPermission;
|
||||
import com.zt.plat.framework.tenant.core.context.DeptContextHolder;
|
||||
import com.zt.plat.module.system.dal.dataobject.permission.MenuDO;
|
||||
import com.zt.plat.module.system.dal.dataobject.permission.RoleDO;
|
||||
import com.zt.plat.module.system.dal.dataobject.permission.RoleMenuDO;
|
||||
@@ -347,6 +349,12 @@ public class PermissionServiceImpl implements PermissionService {
|
||||
// 获得用户的角色
|
||||
List<RoleDO> roles = getEnableUserRoleListByUserIdFromCache(userId);
|
||||
|
||||
//使用上下文角色编码过滤
|
||||
List<String> contextRoleCodes = DeptContextHolder.getRoleCodeList();
|
||||
if(!CollectionUtil.isEmpty(contextRoleCodes)){
|
||||
roles = roles.stream().filter(role -> contextRoleCodes.contains(role.getCode())).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
// 获得用户的部门编号的缓存,通过 Guava 的 Suppliers 惰性求值,即有且仅有第一次发起 DB 的查询
|
||||
Supplier<Set<Long>> userDeptIds = Suppliers.memoize(() -> {
|
||||
List<UserDeptDO> validUserDeptListByUserId = userDeptService.getValidUserDeptListByUserIds(singleton(userId));
|
||||
@@ -414,6 +422,26 @@ public class PermissionServiceImpl implements PermissionService {
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public DeptDataPermissionRespDTO getDeptDataPermissionWithRoleCodes(Long userId, String roleCodes) {
|
||||
// 获得用户的角色
|
||||
List<RoleDO> roles = getEnableUserRoleListByUserIdFromCache(userId);
|
||||
if(ObjectUtil.isEmpty(roleCodes))
|
||||
return getDeptDataPermission(userId);
|
||||
List<String> roleCodesList = Arrays.asList(roleCodes.split(","));
|
||||
if(CollectionUtil.isEmpty(roles))
|
||||
return getDeptDataPermission(userId);
|
||||
DeptContextHolder.setRoleCodeList(roleCodesList);
|
||||
try{
|
||||
return getDeptDataPermission(userId);
|
||||
}catch (Exception e){
|
||||
log.error("getDeptDataPermission-- error ", e);
|
||||
}finally {
|
||||
DeptContextHolder.clearRoleCodeList();
|
||||
}
|
||||
return getDeptDataPermission(userId);
|
||||
}
|
||||
|
||||
@Override
|
||||
@DataPermission(enable = false)
|
||||
@TenantIgnore
|
||||
|
||||
Reference in New Issue
Block a user