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) {