From f3988af15d132da828cfc5600bfd3e7e595d7d0e Mon Sep 17 00:00:00 2001 From: HuangLei Date: Wed, 18 Jun 2025 18:23:25 +0800 Subject: [PATCH] =?UTF-8?q?feat(system):=20=E5=A2=9E=E5=8A=A0=E8=A7=92?= =?UTF-8?q?=E8=89=B2=E9=A1=B5=E9=9D=A2=E7=9A=84=E5=A4=8D=E6=9D=82=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加了对角色名称、代码、状态的模糊查询 - 实现了创建时间区间的查询 -增加了对非超级管理员的权限控制,只能查看自己的角色 - 优化了查询效率, --- .../dal/mysql/permission/RoleMapper.java | 48 +++++++++++++++---- 1 file changed, 40 insertions(+), 8 deletions(-) diff --git a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java index 2e4da2bbdd..c51d0b3fac 100644 --- a/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java +++ b/yudao-module-system/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/permission/RoleMapper.java @@ -1,27 +1,59 @@ 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.mybatis.core.dataobject.BaseDO; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; -import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; +import cn.iocoder.yudao.framework.security.core.LoginUser; +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.dal.dataobject.dept.DeptDO; 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 com.github.yulichang.wrapper.MPJLambdaWrapper; import org.apache.ibatis.annotations.Mapper; import org.springframework.lang.Nullable; +import java.time.LocalDateTime; import java.util.Collection; import java.util.List; @Mapper public interface RoleMapper extends BaseMapperX { + default PageResult selectPage(RolePageReqVO reqVO) { - return selectPage(reqVO, new LambdaQueryWrapperX() - .likeIfPresent(RoleDO::getName, reqVO.getName()) - .likeIfPresent(RoleDO::getCode, reqVO.getCode()) - .eqIfPresent(RoleDO::getStatus, reqVO.getStatus()) - .betweenIfPresent(BaseDO::getCreateTime, reqVO.getCreateTime()) - .orderByAsc(RoleDO::getSort)); + Long loginUserId = SecurityFrameworkUtils.getLoginUserId(); + MPJLambdaWrapper mpjLambdaWrapper = new MPJLambdaWrapper(); + LocalDateTime[] createTimes = reqVO.getCreateTime(); + mpjLambdaWrapper.select( + RoleDO::getId, + RoleDO::getName, + RoleDO::getCode, + RoleDO::getSort, + RoleDO::getDataScope, + 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) {