From 86824ebc4936a2206f2c2c8e2a8775546cd1e628 Mon Sep 17 00:00:00 2001 From: yangsb Date: Thu, 11 Apr 2024 11:17:40 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E8=B6=85=E7=BA=A7=E7=AE=A1?= =?UTF-8?q?=E7=90=86=E5=91=98=E4=B8=8E=E6=99=AE=E9=80=9A=E8=A7=92=E8=89=B2?= =?UTF-8?q?=E7=9A=84=20=E8=A7=92=E8=89=B2=E6=9D=83=E9=99=90=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dal/mysql/permission/RoleMapper.java | 25 ++++++++++++++++--- .../service/permission/RoleService.java | 2 ++ .../service/permission/RoleServiceImpl.java | 25 ++++++++++++++++--- 3 files changed, 44 insertions(+), 8 deletions(-) diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMapper.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMapper.java index 71e6b2aa4..6bdac728c 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMapper.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/dal/mysql/permission/RoleMapper.java @@ -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 { default PageResult selectPage(RolePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .eqIfPresent(RoleDO::getOrganId, reqVO.getOrganId()) - .likeIfPresent(RoleDO::getName, reqVO.getName()) + LambdaQueryWrapperX lambdaQueryWrapperX = new LambdaQueryWrapperX(); + 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) { diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java index 1419d5fcd..02e4960ab 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleService.java @@ -57,6 +57,8 @@ public interface RoleService { */ void updateRoleDataScope(Long id, Integer dataScope, Set dataScopeDeptIds); + void validateRoleForUpdate(Long id); + /** * 获得角色 * diff --git a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java index 91acb65b7..e33e1126a 100644 --- a/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java +++ b/cf-module-system/cf-module-system-biz/src/main/java/com/cf/imes/module/system/service/permission/RoleServiceImpl.java @@ -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 getRoleListByStatus(Collection statuses) { + LoginUser loginUser = SecurityFrameworkUtils.getLoginUser(); + assert loginUser != null; + if(!loginUser.getIsSupAdmin()) { + return roleMapper.selectList(new LambdaQueryWrapperX() + .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 getRolePage(RolePageReqVO reqVO) { return roleMapper.selectPage(reqVO); }