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.dataobject.BaseDO;
|
||||||
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
import com.cf.imes.framework.mybatis.core.mapper.BaseMapperX;
|
||||||
import com.cf.imes.framework.mybatis.core.query.LambdaQueryWrapperX;
|
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.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.RolePageReqVO;
|
||||||
import com.cf.imes.module.system.dal.dataobject.permission.RoleDO;
|
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.Collection;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
@Mapper
|
@Mapper
|
||||||
public interface RoleMapper extends BaseMapperX<RoleDO> {
|
public interface RoleMapper extends BaseMapperX<RoleDO> {
|
||||||
|
|
||||||
default PageResult<RoleDO> selectPage(RolePageReqVO reqVO) {
|
default PageResult<RoleDO> selectPage(RolePageReqVO reqVO) {
|
||||||
return selectPage(reqVO, new LambdaQueryWrapperX<RoleDO>()
|
LambdaQueryWrapperX<RoleDO> lambdaQueryWrapperX = new LambdaQueryWrapperX<RoleDO>();
|
||||||
.eqIfPresent(RoleDO::getOrganId, reqVO.getOrganId())
|
LoginUser loginUser = SecurityFrameworkUtils.getLoginUser();
|
||||||
.likeIfPresent(RoleDO::getName, reqVO.getName())
|
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())
|
.likeIfPresent(RoleDO::getCode, reqVO.getCode())
|
||||||
.eqIfPresent(RoleDO::getStatus, reqVO.getStatus())
|
.eqIfPresent(RoleDO::getStatus, reqVO.getStatus())
|
||||||
.betweenIfPresent(BaseDO::getCreateTime, reqVO.getCreateTime())
|
.betweenIfPresent(BaseDO::getCreateTime, reqVO.getCreateTime())
|
||||||
.orderByDesc(RoleDO::getId));
|
.orderByDesc(RoleDO::getId);
|
||||||
|
|
||||||
|
return selectPage(reqVO, lambdaQueryWrapperX);
|
||||||
}
|
}
|
||||||
|
|
||||||
default RoleDO selectByName(String name, Long organId) {
|
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 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.mybatis.core.query.LambdaQueryWrapperX;
|
||||||
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
|
import com.cf.imes.framework.organ.core.aop.OrganIgnore;
|
||||||
import com.cf.imes.framework.organ.core.context.OrganContextHolder;
|
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.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.RolePageReqVO;
|
||||||
import com.cf.imes.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
|
import com.cf.imes.module.system.controller.admin.permission.vo.role.RoleSaveReqVO;
|
||||||
@@ -50,6 +51,9 @@ public class RoleServiceImpl implements RoleService {
|
|||||||
@Resource
|
@Resource
|
||||||
private RoleMapper roleMapper;
|
private RoleMapper roleMapper;
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private RoleService roleService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@Transactional(rollbackFor = Exception.class)
|
@Transactional(rollbackFor = Exception.class)
|
||||||
public Long createRole(RoleSaveReqVO createReqVO, Integer type) {
|
public Long createRole(RoleSaveReqVO createReqVO, Integer type) {
|
||||||
@@ -153,9 +157,12 @@ public class RoleServiceImpl implements RoleService {
|
|||||||
*
|
*
|
||||||
* @param id 角色编号
|
* @param id 角色编号
|
||||||
*/
|
*/
|
||||||
@VisibleForTesting
|
// @VisibleForTesting
|
||||||
void validateRoleForUpdate(Long id) {
|
@OrganIgnore
|
||||||
RoleDO roleDO = roleMapper.selectById(id);
|
@Override
|
||||||
|
public void validateRoleForUpdate(Long id) {
|
||||||
|
RoleDO roleDO = roleService.getRole(id);
|
||||||
|
//RoleDO roleDO = roleMapper.selectOne(RoleDO::getId, id);
|
||||||
if (roleDO == null) {
|
if (roleDO == null) {
|
||||||
throw exception(ROLE_NOT_EXISTS);
|
throw exception(ROLE_NOT_EXISTS);
|
||||||
}
|
}
|
||||||
@@ -166,6 +173,7 @@ public class RoleServiceImpl implements RoleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@OrganIgnore
|
||||||
public RoleDO getRole(Long id) {
|
public RoleDO getRole(Long id) {
|
||||||
return roleMapper.selectById(id);
|
return roleMapper.selectById(id);
|
||||||
}
|
}
|
||||||
@@ -188,7 +196,16 @@ public class RoleServiceImpl implements RoleService {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@OrganIgnore
|
||||||
public List<RoleDO> getRoleListByStatus(Collection<Integer> statuses) {
|
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);
|
return roleMapper.selectListByStatus(statuses);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -217,7 +234,7 @@ public class RoleServiceImpl implements RoleService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
//@OrganIgnore
|
@OrganIgnore
|
||||||
public PageResult<RoleDO> getRolePage(RolePageReqVO reqVO) {
|
public PageResult<RoleDO> getRolePage(RolePageReqVO reqVO) {
|
||||||
return roleMapper.selectPage(reqVO);
|
return roleMapper.selectPage(reqVO);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user