From 8322d510fe3669493d4eb093c31c8d7d2302247c Mon Sep 17 00:00:00 2001
From: dhb52 <dhb52@126.com>
Date: Sun, 5 May 2024 21:59:34 +0800
Subject: [PATCH] =?UTF-8?q?refactor:=20=E7=AE=80=E5=8C=96JobBatchServiceIm?=
=?UTF-8?q?pl.getJobBatchPage=E4=BB=A3=E7=A0=81=EF=BC=8C=E6=8A=BD=E5=8F=96?=
=?UTF-8?q?UserSessionUtils.hasGroupPermission=E5=87=BD=E6=95=B0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../web/service/impl/JobBatchServiceImpl.java | 49 +++++--------------
.../server/web/util/UserSessionUtils.java | 25 ++++++++--
2 files changed, 33 insertions(+), 41 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 1efd7fd6..9230a0e0 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,6 +1,5 @@
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;
@@ -15,7 +14,6 @@ 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;
@@ -23,15 +21,12 @@ 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;
@@ -52,46 +47,24 @@ public class JobBatchServiceImpl implements JobBatchService {
@Override
public PageResult<List<JobBatchResponseVO>> getJobBatchPage(final JobBatchQueryVO queryVO) {
-
PageDTO<JobTaskBatch> pageDTO = new PageDTO<>(queryVO.getPage(), queryVO.getSize());
-
UserSessionVO userSessionVO = UserSessionUtils.currentUserSession();
- List<String> groupNames = Lists.newArrayList();
- if (userSessionVO.isUser()) {
- groupNames = userSessionVO.getGroupNames();
+ if (!UserSessionUtils.hasGroupPermission(queryVO.getGroupName())) {
+ return new PageResult<>(pageDTO, Lists.newArrayList());
}
- 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<JobTaskBatch> wrapper = new QueryWrapper<JobTaskBatch>()
- .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");
+ .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");
List<JobBatchResponseDO> batchResponseDOList = jobTaskBatchMapper.selectJobBatchPageList(pageDTO, wrapper);
-
List<JobBatchResponseVO> 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 8e51d5ce..0a79081d 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 com.aizuda.snailjob.server.web.model.request.UserSessionVO;
+import jakarta.servlet.http.HttpServletRequest;
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,4 +18,23 @@ 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;
+ }
}