禅道#953、#954修复

This commit is contained in:
gaoqr
2024-12-12 12:12:33 +08:00
parent 07dcc78132
commit b41b2e8f37
4 changed files with 40 additions and 5 deletions
@@ -12,6 +12,7 @@ import com.cf.imes.module.system.service.dept.DeptService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import org.apache.commons.lang3.ObjectUtils;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
@@ -69,9 +70,13 @@ public class DeptController {
@GetMapping(value = {"/list-all-simple", "/simple-list"})
@Operation(summary = "获取部门精简信息列表", description = "只包含被开启的部门,主要用于前端的下拉选项")
public CommonResult<List<DeptSimpleRespVO>> getSimpleDeptList() {
List<DeptDO> list = deptService.getDeptList(
new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus()));
public CommonResult<List<DeptSimpleRespVO>> getSimpleDeptList(@Valid DeptListReqVO reqVO) {
// 有效部门的请求,传入organid就查对应的,没有就查登录人下的
DeptListReqVO efficDeptReqVO = new DeptListReqVO().setStatus(CommonStatusEnum.ENABLE.getStatus());
if (ObjectUtils.allNotNull(reqVO, reqVO.getOrganId())) {
efficDeptReqVO.setOrganId(reqVO.getOrganId());
}
List<DeptDO> list = deptService.getDeptList(efficDeptReqVO);
return success(BeanUtils.toBean(deptService.removeUnowndDept(list), DeptSimpleRespVO.class));
}
@@ -604,7 +604,13 @@ public class PermissionServiceImpl implements PermissionService {
@Override
public Set<Long> getUserRoleIdListByUserId(Long userId) {
return convertSet(userRoleMapper.selectListByUserId(userId), UserRoleDO::getRoleId);
List<UserRoleDO> userRoleDOS = userRoleMapper.selectListByUserId(userId);
userRoleDOS.removeIf(ur -> {
Long roleId = ur.getRoleId();
RoleDO role = roleService.getRoleFromCache(roleId);
return ObjectUtil.isNotNull(role) && CommonStatusEnum.DISABLE.getStatus().equals(role.getStatus());
});
return convertSet(userRoleDOS, UserRoleDO::getRoleId);
}
@Override
@@ -4,6 +4,8 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.extra.spring.SpringUtil;
import com.cf.imes.framework.common.enums.CommonStatusEnum;
import com.cf.imes.framework.common.exception.ServiceException;
import com.cf.imes.framework.common.exception.enums.GlobalErrorCodeConstants;
import com.cf.imes.framework.common.pojo.PageResult;
import com.cf.imes.framework.common.util.collection.CollectionUtils;
import com.cf.imes.framework.common.util.object.BeanUtils;
@@ -18,6 +20,7 @@ import com.cf.imes.module.system.dal.dataobject.permission.RoleDO;
import com.cf.imes.module.system.dal.mysql.permission.RoleMapper;
import com.cf.imes.module.system.dal.redis.RedisKeyConstants;
import com.cf.imes.module.system.dal.redis.RedisRefreshChannelTopicConstants;
import com.cf.imes.module.system.enums.ErrorCodeConstants;
import com.cf.imes.module.system.enums.permission.DataScopeEnum;
import com.cf.imes.module.system.enums.permission.RoleCodeEnum;
import com.cf.imes.module.system.enums.permission.RoleTypeEnum;
@@ -86,6 +89,8 @@ public class RoleServiceImpl implements RoleService {
validateRoleForUpdate(updateReqVO.getId());
// 校验角色的唯一字段是否重复
validateRoleDuplicate(updateReqVO.getName(), updateReqVO.getCode(), updateReqVO.getId(), updateReqVO.getOrganId());
// 校验自身角色
validateModifySelfRole(updateReqVO.getId());
// 更新到数据库
RoleDO updateObj = BeanUtils.toBean(updateReqVO, RoleDO.class);
@@ -99,7 +104,8 @@ public class RoleServiceImpl implements RoleService {
public void updateRoleStatus(Long id, Integer status) {
// 校验是否可以更新
validateRoleForUpdate(id);
// 校验自身角色
validateModifySelfRole(id);
// 更新状态
RoleDO updateObj = new RoleDO().setId(id).setStatus(status);
roleMapper.updateById(updateObj);
@@ -107,6 +113,23 @@ public class RoleServiceImpl implements RoleService {
scanAndDelKeys(String.format(REDIS_ROLE_KEY_PATTERN, updateObj.getId()));
}
/**
* 校验自身角色
*
* @param roleId
*/
private void validateModifySelfRole(Long roleId) {
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
if (ObjectUtil.isNull(loginUser)) {
throw new ServiceException(GlobalErrorCodeConstants.UNAUTHORIZED);
}
Set<Long> roleIds = permissionService.getUserRoleIdListByUserId(loginUser.getId());
if (roleIds.contains(roleId)) {
throw new ServiceException(ErrorCodeConstants.SELF_ROLE_MODIFY_ERROR);
}
}
@Override
@CacheEvict(value = RedisKeyConstants.ROLE, key = "#id")
public void updateRoleDataScope(Long id, Integer dataScope, Set<Long> dataScopeDeptIds) {