From 278d7a9658ce8eb3565779c61fa014692973ee27 Mon Sep 17 00:00:00 2001 From: dhb52 Date: Sun, 5 May 2024 23:02:12 +0800 Subject: [PATCH] =?UTF-8?q?Revert=20"refactor:=20=E7=AE=80=E5=8C=96JobBatc?= =?UTF-8?q?hServiceImpl.getJobBatchPage=E4=BB=A3=E7=A0=81=EF=BC=8C?= =?UTF-8?q?=E6=8A=BD=E5=8F=96UserSessionUtils.hasGroupPermission=E5=87=BD?= =?UTF-8?q?=E6=95=B0"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This reverts commit 8322d510fe3669493d4eb093c31c8d7d2302247c. --- .../web/service/impl/JobBatchServiceImpl.java | 49 ++++++++++++++----- .../server/web/util/UserSessionUtils.java | 25 ++-------- 2 files changed, 41 insertions(+), 33 deletions(-) diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobBatchServiceImpl.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobBatchServiceImpl.java index 9230a0e05..1efd7fd61 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobBatchServiceImpl.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/service/impl/JobBatchServiceImpl.java @@ -1,5 +1,6 @@ package com.aizuda.snailjob.server.web.service.impl; +import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.common.core.constant.SystemConstants; import com.aizuda.snailjob.common.core.util.JsonUtil; @@ -14,6 +15,7 @@ import com.aizuda.snailjob.server.web.service.JobBatchService; import com.aizuda.snailjob.server.web.service.convert.JobBatchResponseVOConverter; import com.aizuda.snailjob.server.web.service.handler.JobHandler; import com.aizuda.snailjob.server.web.util.UserSessionUtils; +import com.aizuda.snailjob.template.datasource.persistence.dataobject.JobBatchQueryDO; import com.aizuda.snailjob.template.datasource.persistence.dataobject.JobBatchResponseDO; import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper; import com.aizuda.snailjob.template.datasource.persistence.mapper.JobTaskBatchMapper; @@ -21,12 +23,15 @@ import com.aizuda.snailjob.template.datasource.persistence.mapper.WorkflowNodeMa import com.aizuda.snailjob.template.datasource.persistence.po.Job; import com.aizuda.snailjob.template.datasource.persistence.po.JobTaskBatch; import com.aizuda.snailjob.template.datasource.persistence.po.WorkflowNode; +import com.aizuda.snailjob.server.web.service.convert.JobBatchResponseVOConverter; +import com.aizuda.snailjob.server.web.service.handler.JobHandler; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO; import com.google.common.collect.Lists; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Objects; @@ -47,24 +52,46 @@ public class JobBatchServiceImpl implements JobBatchService { @Override public PageResult> getJobBatchPage(final JobBatchQueryVO queryVO) { + PageDTO pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize()); + UserSessionVO userSessionVO = UserSessionUtils.currentUserSession(); - if (!UserSessionUtils.hasGroupPermission(queryVO.getGroupName())) { - return new PageResult<>(pageDTO, Lists.newArrayList()); + List groupNames = Lists.newArrayList(); + if (userSessionVO.isUser()) { + groupNames = userSessionVO.getGroupNames(); } + if (StrUtil.isNotBlank(queryVO.getGroupName())) { + // 说明当前组不在用户配置的权限中 + if (!CollectionUtils.isEmpty(groupNames) && !groupNames.contains(queryVO.getGroupName())) { + return new PageResult<>(pageDTO, Lists.newArrayList()); + } else { + groupNames = Lists.newArrayList(queryVO.getGroupName()); + } + } + + JobBatchQueryDO queryDO = new JobBatchQueryDO(); + if (StrUtil.isNotBlank(queryVO.getJobName())) { + queryDO.setJobName(queryVO.getJobName() + "%"); + } + + queryDO.setJobId(queryVO.getJobId()); + queryDO.setTaskBatchStatus(queryVO.getTaskBatchStatus()); + queryDO.setGroupNames(groupNames); + queryDO.setNamespaceId(userSessionVO.getNamespaceId()); QueryWrapper wrapper = new QueryWrapper() - .eq("a.namespace_id", userSessionVO.getNamespaceId()) - .eq("a.system_task_type", SyetemTaskTypeEnum.JOB.getType()) - .eq(queryVO.getJobId() != null, "a.job_id", queryVO.getJobId()) - .eq(StrUtil.isNotBlank(queryVO.getGroupName()), "a.group_name", queryVO.getGroupName()) - .eq(queryVO.getTaskBatchStatus() != null, "task_batch_status", queryVO.getTaskBatchStatus()) - .likeRight(StrUtil.isNotBlank(queryVO.getJobName()), "job_name", queryVO.getJobName()) - .eq("a.deleted", 0) - .orderByDesc("a.id"); + .eq("a.namespace_id", queryDO.getNamespaceId()) + .eq("a.system_task_type", 3) + .eq(queryDO.getJobId() != null, "a.job_id", queryDO.getJobId()) + .in(CollUtil.isNotEmpty(queryDO.getGroupNames()), "a.group_name", queryDO.getGroupNames()) + .eq(queryDO.getTaskBatchStatus() != null, "task_batch_status", queryDO.getTaskBatchStatus()) + .eq(StrUtil.isNotBlank(queryDO.getJobName()), "job_name", queryDO.getJobName()) + .eq("a.deleted", 0) + .orderByDesc("a.id"); List batchResponseDOList = jobTaskBatchMapper.selectJobBatchPageList(pageDTO, wrapper); + List batchResponseVOList = JobBatchResponseVOConverter.INSTANCE.toJobBatchResponseVOs( - batchResponseDOList); + batchResponseDOList); return new PageResult<>(pageDTO, batchResponseVOList); } diff --git a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/util/UserSessionUtils.java b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/util/UserSessionUtils.java index 0a79081db..8e51d5ce5 100644 --- a/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/util/UserSessionUtils.java +++ b/snail-job-server/snail-job-server-web/src/main/java/com/aizuda/snailjob/server/web/util/UserSessionUtils.java @@ -1,12 +1,12 @@ package com.aizuda.snailjob.server.web.util; -import cn.hutool.core.collection.CollUtil; -import cn.hutool.core.util.StrUtil; import com.aizuda.snailjob.server.web.model.request.UserSessionVO; -import jakarta.servlet.http.HttpServletRequest; +import com.aizuda.snailjob.server.web.model.request.UserSessionVO; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes; +import jakarta.servlet.http.HttpServletRequest; + /** * @author opensnail * @date 2023-11-22 23:14:53 @@ -18,23 +18,4 @@ public final class UserSessionUtils { HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); return (UserSessionVO) request.getAttribute("currentUser"); } - - /** - * 判断当前用户是否具备组权限 - * - * @param groupName 组名称 - * @return true, 具备权限,否则返回false - */ - public static boolean hasGroupPermission(String groupName) { - if (StrUtil.isBlank(groupName)) { - return true; - } - - UserSessionVO userSessionVO = currentUserSession(); - if (userSessionVO.isUser() && CollUtil.isNotEmpty(userSessionVO.getGroupNames())) { - return userSessionVO.getGroupNames().contains(groupName); - } - - return false; - } }