refactor(system): 重构角色管理查询功能

- 移除了不必要的导入和代码
- 使用 LambdaQuery
This commit is contained in:
HuangLei 2025-06-19 09:59:51 +08:00
parent f3988af15d
commit e15cf54d6a
1 changed files with 14 additions and 39 deletions

View File

@ -1,21 +1,15 @@
package cn.iocoder.yudao.module.system.dal.mysql.permission; package cn.iocoder.yudao.module.system.dal.mysql.permission;
import cn.hutool.core.util.ObjectUtil;
import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO;
import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
import cn.iocoder.yudao.framework.security.core.LoginUser; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
import cn.iocoder.yudao.framework.security.core.util.SecurityFrameworkUtils;
import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO; import cn.iocoder.yudao.module.system.controller.admin.permission.vo.role.RolePageReqVO;
import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO; import cn.iocoder.yudao.module.system.dal.dataobject.permission.RoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.permission.UserRoleDO;
import cn.iocoder.yudao.module.system.dal.dataobject.user.AdminUserDO;
import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum; import cn.iocoder.yudao.module.system.enums.permission.RoleCodeEnum;
import com.github.yulichang.wrapper.MPJLambdaWrapper;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.springframework.lang.Nullable; import org.springframework.lang.Nullable;
import java.time.LocalDateTime;
import java.util.Collection; import java.util.Collection;
import java.util.List; import java.util.List;
@ -24,36 +18,15 @@ public interface RoleMapper extends BaseMapperX<RoleDO> {
default PageResult<RoleDO> selectPage(RolePageReqVO reqVO) { default PageResult<RoleDO> selectPage(RolePageReqVO reqVO) {
Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); PageResult<RoleDO> roleDOPageResult = selectPage(reqVO, new LambdaQueryWrapperX<RoleDO>()
MPJLambdaWrapper<RoleDO> mpjLambdaWrapper = new MPJLambdaWrapper(); .likeIfPresent(RoleDO::getName, reqVO.getName())
LocalDateTime[] createTimes = reqVO.getCreateTime(); .likeIfPresent(RoleDO::getCode, reqVO.getCode())
mpjLambdaWrapper.select( .eqIfPresent(RoleDO::getStatus, reqVO.getStatus())
RoleDO::getId, .betweenIfPresent(BaseDO::getCreateTime, reqVO.getCreateTime())
RoleDO::getName, .ne(RoleDO::getCode, RoleCodeEnum.SUPER_ADMIN.getCode())
RoleDO::getCode, .orderByAsc(RoleDO::getSort));
RoleDO::getSort, //过滤掉super_admin及管理员
RoleDO::getDataScope, return roleDOPageResult;
RoleDO::getStatus,
RoleDO::getCreateTime,
RoleDO::getRemark,
RoleDO::getDeleted)
.distinct()
.leftJoin(UserRoleDO.class, UserRoleDO::getRoleId, RoleDO::getId)
.leftJoin(AdminUserDO.class, AdminUserDO::getId, UserRoleDO::getUserId)
.leftJoin(DeptDO.class, DeptDO::getId, AdminUserDO::getDeptId)
.likeIfExists(RoleDO::getName, reqVO.getName())
.likeIfExists(RoleDO::getCode, reqVO.getCode())
.eqIfExists(RoleDO::getStatus, reqVO.getStatus());
//判断是否是超级管理员
RoleDO roleDO = selectById(loginUserId);
if (ObjectUtil.isNull(roleDO) || !RoleCodeEnum.isSuperAdmin(roleDO.getCode())) {
mpjLambdaWrapper.eq(AdminUserDO::getId, loginUserId);
}
// 检查createTimes是否非空且有至少两个元素
if (createTimes != null && createTimes.length >= 2) {
mpjLambdaWrapper.between(RoleDO::getCreateTime, createTimes[0], createTimes[1]);
}
return selectPage(reqVO, mpjLambdaWrapper);
} }
default RoleDO selectByName(String name) { default RoleDO selectByName(String name) {
@ -65,7 +38,9 @@ public interface RoleMapper extends BaseMapperX<RoleDO> {
} }
default List<RoleDO> selectListByStatus(@Nullable Collection<Integer> statuses) { default List<RoleDO> selectListByStatus(@Nullable Collection<Integer> statuses) {
return selectList(RoleDO::getStatus, statuses); return selectList(new LambdaQueryWrapperX<RoleDO>()
.eq(RoleDO::getStatus, statuses)
.ne(RoleDO::getCode, RoleCodeEnum.SUPER_ADMIN.getCode()));
} }
} }