feat(system): 增加角色页面的复杂查询功能
- 添加了对角色名称、代码、状态的模糊查询 - 实现了创建时间区间的查询 -增加了对非超级管理员的权限控制,只能查看自己的角色 - 优化了查询效率,
This commit is contained in:
parent
7633bc5d5e
commit
f3988af15d
|
|
@ -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<RoleDO> {
|
||||
|
||||
|
||||
default PageResult<RoleDO> selectPage(RolePageReqVO reqVO) {
|
||||
return selectPage(reqVO, new LambdaQueryWrapperX<RoleDO>()
|
||||
.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<RoleDO> 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) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue