mirror of
http://192.168.1.205:9980/cf_devdept2/cf_imes_server.git
synced 2026-08-12 21:02:08 +08:00
处理超级管理员与普通角色的 角色权限问题
This commit is contained in:
+21
-4
@@ -4,6 +4,7 @@ import com.cf.imes.framework.common.pojo.PageResult;
|
||||
import com.cf.imes.framework.mybatis.core.dataobject.BaseDO;
|
||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.security.core.LoginUser;
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.cf.imes.module.system.controller.admin.permission.vo.role.RolePageReqVO;
|
||||
import com.cf.imes.module.system.dal.dataobject.permission.RoleDO;
|
||||
@@ -13,18 +14,34 @@ import org.springframework.lang.Nullable;
|
||||
import java.util.Collection;
|
||||
import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
@Mapper
|
||||
public interface RoleMapper extends BaseMapperX<RoleDO> {
|
||||
|
||||
default PageResult<RoleDO> selectPage(RolePageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<RoleDO>()
|
||||
.eqIfPresent(RoleDO::getOrganId, reqVO.getOrganId())
|
||||
.likeIfPresent(RoleDO::getName, reqVO.getName())
|
||||
LambdaQueryWrapperX<RoleDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<RoleDO>();
|
||||
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||
Boolean isSupAdmin = loginUser.getIsSupAdmin();
|
||||
if(isSupAdmin && Objects.isNull(reqVO.getOrganId())) {
|
||||
//如果是超级管理员并且未传organId,就查看所有组织
|
||||
}
|
||||
if(isSupAdmin && !Objects.isNull(reqVO.getOrganId())) {
|
||||
//如果是超级管理员并且传入organId,就查看传入的组织
|
||||
lambdaQueryWrapperX.eqIfPresent(RoleDO::getOrganId, reqVO.getOrganId());
|
||||
}
|
||||
if(!isSupAdmin) {
|
||||
//如果不是超级管理员,就查看组织id为0和自身的组织
|
||||
lambdaQueryWrapperX.inIfPresent(RoleDO::getOrganId,0L,loginUser.getOrganId());
|
||||
}
|
||||
|
||||
lambdaQueryWrapperX.likeIfPresent(RoleDO::getName, reqVO.getName())
|
||||
.likeIfPresent(RoleDO::getCode, reqVO.getCode())
|
||||
.eqIfPresent(RoleDO::getStatus, reqVO.getStatus())
|
||||
.betweenIfPresent(BaseDO::getCreateTime, reqVO.getCreateTime())
|
||||
.orderByDesc(RoleDO::getId));
|
||||
.orderByDesc(RoleDO::getId);
|
||||
|
||||
return selectPage(reqVO, lambdaQueryWrapperX);
|
||||
}
|
||||
|
||||
default RoleDO selectByName(String name, Long organId) {
|
||||
|
||||
+2
@@ -57,6 +57,8 @@ public interface RoleService {
|
||||
*/
|
||||
void updateRoleDataScope(Long id, Integer dataScope, Set<Long> dataScopeDeptIds);
|
||||
|
||||
void validateRoleForUpdate(Long id);
|
||||
|
||||
/**
|
||||
* 获得角色
|
||||
*
|
||||
|
||||
+21
-4
@@ -11,6 +11,7 @@ import com.cf.imes.framework.common.util.object.BeanUtils;
|
||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
||||
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
|
||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
||||
import com.cf.imes.framework.security.core.LoginUser;
|
||||
import com.cf.imes.framework.security.core.util.SecurityFrameworkUtils;
|
||||
import com.cf.imes.module.system.controller.admin.permission.vo.role.RolePageReqVO;
|
||||
import com.cf.imes.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
|
||||
@@ -50,6 +51,9 @@ public class RoleServiceImpl implements RoleService {
|
||||
@Resource
|
||||
private RoleMapper roleMapper;
|
||||
|
||||
@Resource
|
||||
private RoleService roleService;
|
||||
|
||||
@Override
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public Long createRole(RoleSaveReqVO createReqVO, Integer type) {
|
||||
@@ -153,9 +157,12 @@ public class RoleServiceImpl implements RoleService {
|
||||
*
|
||||
* @param id 角色编号
|
||||
*/
|
||||
@VisibleForTesting
|
||||
void validateRoleForUpdate(Long id) {
|
||||
RoleDO roleDO = roleMapper.selectById(id);
|
||||
// @VisibleForTesting
|
||||
@OrganIgnore
|
||||
@Override
|
||||
public void validateRoleForUpdate(Long id) {
|
||||
RoleDO roleDO = roleService.getRole(id);
|
||||
//RoleDO roleDO = roleMapper.selectOne(RoleDO::getId, id);
|
||||
if (roleDO == null) {
|
||||
throw exception(ROLE_NOT_EXISTS);
|
||||
}
|
||||
@@ -166,6 +173,7 @@ public class RoleServiceImpl implements RoleService {
|
||||
}
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public RoleDO getRole(Long id) {
|
||||
return roleMapper.selectById(id);
|
||||
}
|
||||
@@ -188,7 +196,16 @@ public class RoleServiceImpl implements RoleService {
|
||||
|
||||
|
||||
@Override
|
||||
@OrganIgnore
|
||||
public List<RoleDO> getRoleListByStatus(Collection<Integer> statuses) {
|
||||
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||
assert loginUser != null;
|
||||
if(!loginUser.getIsSupAdmin()) {
|
||||
return roleMapper.selectList(new LambdaQueryWrapperX<RoleDO>()
|
||||
.in(RoleDO::getStatus, statuses)
|
||||
.in(RoleDO::getOrganId, loginUser.getOrganId(), 0L)
|
||||
);
|
||||
}
|
||||
return roleMapper.selectListByStatus(statuses);
|
||||
}
|
||||
|
||||
@@ -217,7 +234,7 @@ public class RoleServiceImpl implements RoleService {
|
||||
}
|
||||
|
||||
@Override
|
||||
//@OrganIgnore
|
||||
@OrganIgnore
|
||||
public PageResult<RoleDO> getRolePage(RolePageReqVO reqVO) {
|
||||
return roleMapper.selectPage(reqVO);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user