From 66419fe9ab7a19134f8289362e64352f84759181 Mon Sep 17 00:00:00 2001 From: furongxin <419481438@qq.com> Date: Mon, 2 Dec 2024 09:19:42 +0800 Subject: [PATCH] =?UTF-8?q?refactor(system):=20=E4=BC=98=E5=8C=96=E9=83=A8?= =?UTF-8?q?=E9=97=A8=E5=92=8C=E9=A1=B9=E7=9B=AE=E6=9F=A5=E8=AF=A2=E7=9A=84?= =?UTF-8?q?=20SQL=20=E6=AD=A3=E5=88=99=E8=A1=A8=E8=BE=BE=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 getChildDept 方法中的正则表达式替换为更高效的模糊查询组合 - 优化 ProjectMapper 中的参与部门查询条件,提高查询效率 - 在 DeptServiceImpl 中添加数据权限注解,控制访问权限 --- .../module/system/dal/mysql/project/ProjectMapper.java | 8 ++++++-- .../yudao/module/system/service/dept/DeptServiceImpl.java | 8 +++++++- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/project/ProjectMapper.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/project/ProjectMapper.java index 2f8b350f..d465a17f 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/project/ProjectMapper.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/dal/mysql/project/ProjectMapper.java @@ -4,6 +4,7 @@ import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; import cn.iocoder.yudao.module.system.controller.admin.project.vo.ProjectPageReqVO; +import cn.iocoder.yudao.module.system.dal.dataobject.dept.DeptDO; import cn.iocoder.yudao.module.system.dal.dataobject.project.ProjectDO; import org.apache.ibatis.annotations.Mapper; @@ -23,13 +24,16 @@ public interface ProjectMapper extends BaseMapperX { .eqIfPresent(ProjectDO::getType, reqVO.getType()) .likeIfPresent(ProjectDO::getName, reqVO.getName()) .eqIfPresent(ProjectDO::getResponsibleDept, reqVO.getResponsibleDept()) -// .likeIfPresent(ProjectDO::getParticipationDept, reqVO.getParticipationDept()) .eqIfPresent(ProjectDO::getDirectorUserId, reqVO.getDirectorUserId()) .betweenIfPresent(ProjectDO::getStartDate, reqVO.getStartDate()) .betweenIfPresent(ProjectDO::getEndDate, reqVO.getEndDate()) .eqIfPresent(ProjectDO::getIsLongTerm, reqVO.getIsLongTerm()) .eqIfPresent(ProjectDO::getStatus, reqVO.getStatus()) - .apply(Objects.nonNull(reqVO.getParticipationDept()),"participation_dept REGEXP CONCAT('(^|,)',{0},'(,|$)')", reqVO.getParticipationDept()) + .likeLeft(ProjectDO::getParticipationDept, "-" + reqVO.getParticipationDept()) + .or() + .likeRight(ProjectDO::getParticipationDept, reqVO.getParticipationDept() + "-") + .or() + .like(ProjectDO::getParticipationDept, "-" + reqVO.getParticipationDept() + "-") .orderByDesc(ProjectDO::getId)); } } \ No newline at end of file diff --git a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java index a8d9c4ec..f3f4cc53 100644 --- a/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java +++ b/yudao-module-system/yudao-module-system-biz/src/main/java/cn/iocoder/yudao/module/system/service/dept/DeptServiceImpl.java @@ -268,11 +268,17 @@ public class DeptServiceImpl implements DeptService { } @Override + @DataPermission(enable = false) + @Cacheable(cacheNames = RedisKeyConstants.DEPT_CHILDREN_ID_LIST, key = "#id") public List getChildDept(Long id) { return deptMapper.selectList(new LambdaQueryWrapperX() .eq(DeptDO::getStatus, CommonStatusEnum.ENABLE.getStatus()) - .apply("flag REGEXP CONCAT('(^|-)',{0},'(-|$)')", id)); + .likeLeft(DeptDO::getFlag, "-" + id) + .or() + .likeRight(DeptDO::getFlag, id + "-") + .or() + .like(DeptDO::getFlag, "-" + id + "-")); } @Override