|
@@ -16,12 +16,12 @@ import com.citu.module.menduner.system.dal.mysql.permission.MdeRoleMenuMapper;
|
|
|
import com.citu.module.menduner.system.dal.mysql.permission.MdeUserRoleMapper;
|
|
|
import com.citu.module.menduner.system.dal.redis.RedisKeyConstants;
|
|
|
import com.citu.module.menduner.system.enums.MendunerStatusEnum;
|
|
|
+import com.citu.module.menduner.system.enums.permission.MdeDataScopeEnum;
|
|
|
import com.citu.module.menduner.system.enums.permission.MdeDefaultRoleEnum;
|
|
|
import com.citu.module.menduner.system.service.enterprise.EnterpriseService;
|
|
|
import com.citu.module.menduner.system.service.enterprise.bind.EnterpriseUserBindService;
|
|
|
import com.citu.module.menduner.system.service.user.MdeUserService;
|
|
|
import com.citu.module.system.api.permission.dto.DataPermissionRespDTO;
|
|
|
-import com.citu.module.system.enums.permission.DataScopeEnum;
|
|
|
import com.google.common.annotations.VisibleForTesting;
|
|
|
import com.google.common.collect.Sets;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
@@ -61,10 +61,6 @@ public class MdePermissionServiceImpl implements MdePermissionService {
|
|
|
@Lazy
|
|
|
private MdeMenuService menuService;
|
|
|
|
|
|
- @Resource
|
|
|
- @Lazy
|
|
|
- private MdeUserService userService;
|
|
|
-
|
|
|
@Resource
|
|
|
@Lazy
|
|
|
private EnterpriseUserBindService enterpriseUserBindService;
|
|
@@ -218,10 +214,13 @@ public class MdePermissionServiceImpl implements MdePermissionService {
|
|
|
|
|
|
@Override
|
|
|
@DSTransactional // 多数据源,使用 @DSTransactional 保证本地事务,以及数据源的切换
|
|
|
- @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_IDS, key = "#userId")
|
|
|
- public void assignEnterpriseUserRole(Long enterpriseId, Long userId, Set<Long> roleIds) {
|
|
|
+ @CacheEvict(value = RedisKeyConstants.MDE_USER_ROLE_IDS, key = "#bindId")
|
|
|
+ public void assignEnterpriseUserRole(Long bindId, Set<Long> roleIds) {
|
|
|
+ EnterpriseUserBindDO bindUser =
|
|
|
+ enterpriseUserBindService.getEnterpriseUserBind(bindId);
|
|
|
// 获得角色拥有角色编号
|
|
|
- Set<Long> dbRoleIds = convertSet(userRoleMapper.selectListByEnterpriseIdAndUserId(enterpriseId, userId),
|
|
|
+ Set<Long> dbRoleIds = convertSet(userRoleMapper.selectListByEnterpriseIdAndUserId(bindUser.getEnterpriseId(),
|
|
|
+ bindUser.getUserId()),
|
|
|
MdeUserRoleDO::getRoleId);
|
|
|
// 计算新增和删除的角色编号
|
|
|
Set<Long> roleIdList = CollUtil.emptyIfNull(roleIds);
|
|
@@ -231,13 +230,17 @@ public class MdePermissionServiceImpl implements MdePermissionService {
|
|
|
if (!CollectionUtil.isEmpty(createRoleIds)) {
|
|
|
userRoleMapper.insertBatch(CollectionUtils.convertList(createRoleIds, roleId -> {
|
|
|
MdeUserRoleDO entity = new MdeUserRoleDO();
|
|
|
- entity.setUserId(userId);
|
|
|
+ entity.setEnterpriseId(bindUser.getEnterpriseId());
|
|
|
+ entity.setUserId(bindUser.getUserId());
|
|
|
entity.setRoleId(roleId);
|
|
|
return entity;
|
|
|
}));
|
|
|
}
|
|
|
if (!CollectionUtil.isEmpty(deleteMenuIds)) {
|
|
|
- userRoleMapper.deleteListByEnterpriseIdAndUserIdAndRoleIdIds(enterpriseId, userId, deleteMenuIds);
|
|
|
+ userRoleMapper.deleteListByEnterpriseIdAndUserIdAndRoleIdIds(
|
|
|
+ bindUser.getEnterpriseId(),
|
|
|
+ bindUser.getUserId(),
|
|
|
+ deleteMenuIds);
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -263,6 +266,14 @@ public class MdePermissionServiceImpl implements MdePermissionService {
|
|
|
return convertSet(userRoleMapper.selectListByEnterpriseIdAndUserId(enterpriseId, userId), MdeUserRoleDO::getRoleId);
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public Set<Long> getUserRoleIdListByBindId(Long bindId) {
|
|
|
+ EnterpriseUserBindDO bindUser = enterpriseUserBindService
|
|
|
+ .getEnterpriseUserBind(bindId);
|
|
|
+ return convertSet(userRoleMapper
|
|
|
+ .selectListByEnterpriseIdAndUserId(bindUser.getEnterpriseId(), bindUser.getUserId()), MdeUserRoleDO::getRoleId);
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
@Cacheable(value = RedisKeyConstants.MDE_USER_ROLE_IDS, key = "#enterpriseId + ':' + #userId")
|
|
|
public Set<Long> getEnterpriseUserRoleIdListByUserIdFromCache(Long enterpriseId, Long userId) {
|
|
@@ -293,7 +304,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
|
|
|
// ========== 用户-部门的相关方法 ==========
|
|
|
|
|
|
@Override
|
|
|
- public void assignRoleDataScope(Long roleId, Integer dataScope, Set<Long> dataScopeDataIds) {
|
|
|
+ public void assignRoleDataScope(Long roleId, String dataScope, Set<Long> dataScopeDataIds) {
|
|
|
roleService.updateRoleDataScope(roleId, dataScope, dataScopeDataIds);
|
|
|
}
|
|
|
|
|
@@ -327,12 +338,12 @@ public class MdePermissionServiceImpl implements MdePermissionService {
|
|
|
continue;
|
|
|
}
|
|
|
// 情况一,ALL 所有的数据权限
|
|
|
- if (Objects.equals(role.getDataScope(), DataScopeEnum.ALL.getScope())) {
|
|
|
+ if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.ALL.getScope())) {
|
|
|
result.setAll(true);
|
|
|
continue;
|
|
|
}
|
|
|
// 情况二,DEPT_CUSTOM 自定义
|
|
|
- if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_CUSTOM.getScope())) {
|
|
|
+ if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.ENTERPRISE_CUSTOM.getScope())) {
|
|
|
CollUtil.addAll(result.getDataIds(), role.getDataScopeEnterpriseIds());
|
|
|
// 自定义可见部门时,保证可以看到自己所在的部门。否则,一些场景下可能会有问题。
|
|
|
// 例如说,登录时,基于 t_user 的 username 查询会可能被 dept_id 过滤掉
|
|
@@ -340,12 +351,12 @@ public class MdePermissionServiceImpl implements MdePermissionService {
|
|
|
continue;
|
|
|
}
|
|
|
// 情况三,DEPT_ONLY 自己所在的数据权限
|
|
|
- if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_ONLY.getScope())) {
|
|
|
+ if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.ENTERPRISE_ONLY.getScope())) {
|
|
|
CollectionUtils.addIfNotNull(result.getDataIds(), enterpriseUserBind.getEnterpriseId());
|
|
|
continue;
|
|
|
}
|
|
|
// 情况四,DEPT_DEPT_AND_CHILD 自己所在及以下的数据权限
|
|
|
- if (Objects.equals(role.getDataScope(), DataScopeEnum.DEPT_AND_CHILD.getScope())) {
|
|
|
+ if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.ENTERPRISE_AND_CHILD.getScope())) {
|
|
|
CollUtil.addAll(result.getDataIds(), enterpriseService
|
|
|
.getChildEnterpriseIdListFromCache(enterpriseUserBind.getEnterpriseId()));
|
|
|
// 添加本身部门编号
|
|
@@ -354,7 +365,7 @@ public class MdePermissionServiceImpl implements MdePermissionService {
|
|
|
continue;
|
|
|
}
|
|
|
// 情况五,SELF
|
|
|
- if (Objects.equals(role.getDataScope(), DataScopeEnum.SELF.getScope())) {
|
|
|
+ if (Objects.equals(role.getDataScope(), MdeDataScopeEnum.SELF.getScope())) {
|
|
|
// if (!EnterpriseUserTypeEnum.ADMIN.getType()
|
|
|
// .equals(enterpriseUserBind.getUserType())) {
|
|
|
// // 不是管理员,加入自己的权限
|