feat(sj_1.1.0-beta3): 新增删除功能
This commit is contained in:
parent
638d15ec0f
commit
7321b6fb79
@ -12,6 +12,8 @@ import com.aizuda.snailjob.server.web.model.response.GroupConfigResponseVO;
|
|||||||
import com.aizuda.snailjob.server.web.service.GroupConfigService;
|
import com.aizuda.snailjob.server.web.service.GroupConfigService;
|
||||||
import com.aizuda.snailjob.server.web.util.ExportUtils;
|
import com.aizuda.snailjob.server.web.util.ExportUtils;
|
||||||
import com.aizuda.snailjob.server.web.util.ImportUtils;
|
import com.aizuda.snailjob.server.web.util.ImportUtils;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@ -21,6 +23,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重试组接口
|
* 重试组接口
|
||||||
@ -102,4 +105,10 @@ public class GroupConfigController {
|
|||||||
public ResponseEntity<String> exportGroup(@RequestBody ExportGroupVO exportGroupVO) {
|
public ResponseEntity<String> exportGroup(@RequestBody ExportGroupVO exportGroupVO) {
|
||||||
return ExportUtils.doExport(groupConfigService.exportGroup(exportGroupVO));
|
return ExportUtils.doExport(groupConfigService.exportGroup(exportGroupVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@LoginRequired(role = RoleEnum.ADMIN)
|
||||||
|
@DeleteMapping("{id}")
|
||||||
|
public boolean deleteByIds(@PathVariable("id") Long id) {
|
||||||
|
return groupConfigService.deleteByIds(id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,10 +5,13 @@ import com.aizuda.snailjob.server.web.model.base.PageResult;
|
|||||||
import com.aizuda.snailjob.server.web.model.request.JobBatchQueryVO;
|
import com.aizuda.snailjob.server.web.model.request.JobBatchQueryVO;
|
||||||
import com.aizuda.snailjob.server.web.model.response.JobBatchResponseVO;
|
import com.aizuda.snailjob.server.web.model.response.JobBatchResponseVO;
|
||||||
import com.aizuda.snailjob.server.web.service.JobBatchService;
|
import com.aizuda.snailjob.server.web.service.JobBatchService;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: opensnail
|
* @author: opensnail
|
||||||
@ -46,4 +49,9 @@ public class JobBatchController {
|
|||||||
return jobBatchService.retry(taskBatchId);
|
return jobBatchService.retry(taskBatchId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/ids")
|
||||||
|
@LoginRequired
|
||||||
|
public Boolean deleteJobBatchById(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set<Long> ids) {
|
||||||
|
return jobBatchService.deleteJobBatchById(ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@ import com.aizuda.snailjob.server.web.model.response.JobResponseVO;
|
|||||||
import com.aizuda.snailjob.server.web.service.JobService;
|
import com.aizuda.snailjob.server.web.service.JobService;
|
||||||
import com.aizuda.snailjob.server.web.util.ExportUtils;
|
import com.aizuda.snailjob.server.web.util.ExportUtils;
|
||||||
import com.aizuda.snailjob.server.web.util.ImportUtils;
|
import com.aizuda.snailjob.server.web.util.ImportUtils;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@ -20,6 +22,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author opensnail
|
* @author opensnail
|
||||||
@ -72,10 +75,17 @@ public class JobController {
|
|||||||
|
|
||||||
@DeleteMapping("{id}")
|
@DeleteMapping("{id}")
|
||||||
@LoginRequired
|
@LoginRequired
|
||||||
|
@Deprecated
|
||||||
public Boolean deleteJobById(@PathVariable("id") Long id) {
|
public Boolean deleteJobById(@PathVariable("id") Long id) {
|
||||||
return jobService.deleteJobById(id);
|
return jobService.deleteJobById(id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/ids")
|
||||||
|
@LoginRequired
|
||||||
|
public Boolean deleteJobById(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set<Long> ids) {
|
||||||
|
return jobService.deleteJobByIds(ids);
|
||||||
|
}
|
||||||
|
|
||||||
@GetMapping("/cron")
|
@GetMapping("/cron")
|
||||||
@LoginRequired
|
@LoginRequired
|
||||||
public List<String> getTimeByCron(@RequestParam("cron") String cron) {
|
public List<String> getTimeByCron(@RequestParam("cron") String cron) {
|
||||||
|
@ -6,12 +6,13 @@ import com.aizuda.snailjob.server.web.model.base.PageResult;
|
|||||||
import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO;
|
import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO;
|
||||||
import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO;
|
import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO;
|
||||||
import com.aizuda.snailjob.server.web.service.JobTaskService;
|
import com.aizuda.snailjob.server.web.service.JobTaskService;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.*;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: opensnail
|
* @author: opensnail
|
||||||
@ -36,4 +37,9 @@ public class JobTaskController {
|
|||||||
return jobTaskService.getTreeJobTask(jobTaskQueryVO);
|
return jobTaskService.getTreeJobTask(jobTaskQueryVO);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@DeleteMapping("/ids")
|
||||||
|
@LoginRequired
|
||||||
|
public Boolean deleteJobTaskById(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set<Long> ids) {
|
||||||
|
return jobTaskService.deleteJobTaskById(ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@ import com.aizuda.snailjob.server.web.model.request.RetryTaskLogQueryVO;
|
|||||||
import com.aizuda.snailjob.server.web.model.response.RetryTaskLogMessageResponseVO;
|
import com.aizuda.snailjob.server.web.model.response.RetryTaskLogMessageResponseVO;
|
||||||
import com.aizuda.snailjob.server.web.model.response.RetryTaskLogResponseVO;
|
import com.aizuda.snailjob.server.web.model.response.RetryTaskLogResponseVO;
|
||||||
import com.aizuda.snailjob.server.web.service.RetryTaskLogService;
|
import com.aizuda.snailjob.server.web.service.RetryTaskLogService;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
@ -52,7 +54,7 @@ public class RetryTaskLogController {
|
|||||||
|
|
||||||
@LoginRequired
|
@LoginRequired
|
||||||
@DeleteMapping("ids")
|
@DeleteMapping("ids")
|
||||||
public Boolean batchDelete(@RequestBody Set<Long> ids) {
|
public Boolean batchDelete(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set<Long> ids) {
|
||||||
return retryTaskLogService.batchDelete(ids);
|
return retryTaskLogService.batchDelete(ids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@ import com.aizuda.snailjob.server.web.model.response.SceneConfigResponseVO;
|
|||||||
import com.aizuda.snailjob.server.web.service.SceneConfigService;
|
import com.aizuda.snailjob.server.web.service.SceneConfigService;
|
||||||
import com.aizuda.snailjob.server.web.util.ExportUtils;
|
import com.aizuda.snailjob.server.web.util.ExportUtils;
|
||||||
import com.aizuda.snailjob.server.web.util.ImportUtils;
|
import com.aizuda.snailjob.server.web.util.ImportUtils;
|
||||||
|
import jakarta.validation.Valid;
|
||||||
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.http.ResponseEntity;
|
import org.springframework.http.ResponseEntity;
|
||||||
@ -19,6 +21,7 @@ import org.springframework.web.multipart.MultipartFile;
|
|||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 重试场景接口
|
* 重试场景接口
|
||||||
@ -82,4 +85,9 @@ public class SceneConfigController {
|
|||||||
return ExportUtils.doExport(sceneConfigService.exportSceneConfig(exportSceneVO));
|
return ExportUtils.doExport(sceneConfigService.exportSceneConfig(exportSceneVO));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@LoginRequired
|
||||||
|
@DeleteMapping("/ids")
|
||||||
|
public boolean deleteByIds(@RequestBody @Valid @NotEmpty(message = "ids不能为空") Set<Long> ids) {
|
||||||
|
return sceneConfigService.deleteByIds(ids);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -68,7 +68,7 @@ public class WorkflowController {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@DeleteMapping("/{id}")
|
@DeleteMapping("/{id}")
|
||||||
@LoginRequired(role = RoleEnum.ADMIN)
|
@LoginRequired(role = RoleEnum.USER)
|
||||||
public Boolean deleteById(@PathVariable("id") Long id) {
|
public Boolean deleteById(@PathVariable("id") Long id) {
|
||||||
return workflowService.deleteById(id);
|
return workflowService.deleteById(id);
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import jakarta.validation.Valid;
|
|||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: opensnail
|
* @author: opensnail
|
||||||
@ -37,4 +38,6 @@ public interface GroupConfigService {
|
|||||||
void importGroup(@Valid @NotEmpty(message = "导入数据不能为空") List<GroupConfigRequestVO> requestVOS);
|
void importGroup(@Valid @NotEmpty(message = "导入数据不能为空") List<GroupConfigRequestVO> requestVOS);
|
||||||
|
|
||||||
String exportGroup(ExportGroupVO exportGroupVO);
|
String exportGroup(ExportGroupVO exportGroupVO);
|
||||||
|
|
||||||
|
boolean deleteByIds(Long id);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.aizuda.snailjob.server.web.model.request.JobBatchQueryVO;
|
|||||||
import com.aizuda.snailjob.server.web.model.response.JobBatchResponseVO;
|
import com.aizuda.snailjob.server.web.model.response.JobBatchResponseVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: opensnail
|
* @author: opensnail
|
||||||
@ -20,4 +21,6 @@ public interface JobBatchService {
|
|||||||
boolean stop(Long taskBatchId);
|
boolean stop(Long taskBatchId);
|
||||||
|
|
||||||
Boolean retry(Long taskBatchId);
|
Boolean retry(Long taskBatchId);
|
||||||
|
|
||||||
|
Boolean deleteJobBatchById(Set<Long> ids);
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,7 @@ import jakarta.validation.Valid;
|
|||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author opensnail
|
* @author opensnail
|
||||||
@ -41,4 +42,5 @@ public interface JobService {
|
|||||||
|
|
||||||
String exportJobs(ExportJobVO exportJobVO);
|
String exportJobs(ExportJobVO exportJobVO);
|
||||||
|
|
||||||
|
Boolean deleteJobByIds(Set<Long> ids);
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO;
|
|||||||
import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO;
|
import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: opensnail
|
* @author: opensnail
|
||||||
@ -17,4 +18,6 @@ public interface JobTaskService {
|
|||||||
PageResult<List<JobTaskResponseVO>> getJobTaskPage(JobTaskQueryVO jobTaskQueryVO);
|
PageResult<List<JobTaskResponseVO>> getJobTaskPage(JobTaskQueryVO jobTaskQueryVO);
|
||||||
|
|
||||||
List<JobTaskResponseVO> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO);
|
List<JobTaskResponseVO> getTreeJobTask(JobTaskQueryVO jobTaskQueryVO);
|
||||||
|
|
||||||
|
Boolean deleteJobTaskById(Set<Long> ids);
|
||||||
}
|
}
|
||||||
|
@ -9,6 +9,7 @@ import jakarta.validation.Valid;
|
|||||||
import jakarta.validation.constraints.NotEmpty;
|
import jakarta.validation.constraints.NotEmpty;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: opensnail
|
* @author: opensnail
|
||||||
@ -32,4 +33,5 @@ public interface SceneConfigService {
|
|||||||
|
|
||||||
String exportSceneConfig(ExportSceneVO exportSceneVO);
|
String exportSceneConfig(ExportSceneVO exportSceneVO);
|
||||||
|
|
||||||
|
boolean deleteByIds(Set<Long> ids);
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import cn.hutool.core.lang.Assert;
|
|||||||
import cn.hutool.core.util.HashUtil;
|
import cn.hutool.core.util.HashUtil;
|
||||||
import cn.hutool.core.util.ReUtil;
|
import cn.hutool.core.util.ReUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.aizuda.snailjob.common.core.enums.StatusEnum;
|
||||||
import com.aizuda.snailjob.common.core.util.JsonUtil;
|
import com.aizuda.snailjob.common.core.util.JsonUtil;
|
||||||
import com.aizuda.snailjob.common.core.util.StreamUtils;
|
import com.aizuda.snailjob.common.core.util.StreamUtils;
|
||||||
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
import com.aizuda.snailjob.server.common.config.SystemProperties;
|
||||||
@ -444,6 +445,26 @@ public class GroupConfigServiceImpl implements GroupConfigService {
|
|||||||
return JsonUtil.toJsonString(allRequestList);
|
return JsonUtil.toJsonString(allRequestList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteByIds(Long id) {
|
||||||
|
// 前置检查
|
||||||
|
// 1. 定时任务是否删除
|
||||||
|
// 2. 工作流是否删除
|
||||||
|
// 3. 重试场景是否删除
|
||||||
|
// 4. 是否存在已分配的权限
|
||||||
|
// 5. 检查是否存活的客户端节点
|
||||||
|
|
||||||
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
|
Assert.isTrue(1 == accessTemplate.getGroupConfigAccess().delete(
|
||||||
|
new LambdaQueryWrapper<GroupConfig>()
|
||||||
|
.eq(GroupConfig::getNamespaceId, namespaceId)
|
||||||
|
.eq(GroupConfig::getGroupStatus, StatusEnum.NO.getStatus())
|
||||||
|
.eq(GroupConfig::getId, id)),
|
||||||
|
() -> new SnailJobServerException("删除组失败, 请检查状态是否关闭状态"));
|
||||||
|
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Getter
|
@Getter
|
||||||
private static class GroupConfigPartitionTask extends PartitionTask {
|
private static class GroupConfigPartitionTask extends PartitionTask {
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package com.aizuda.snailjob.server.web.service.impl;
|
package com.aizuda.snailjob.server.web.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.ObjUtil;
|
import cn.hutool.core.util.ObjUtil;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
import com.aizuda.snailjob.common.core.constant.SystemConstants;
|
import com.aizuda.snailjob.common.core.constant.SystemConstants;
|
||||||
@ -8,6 +9,7 @@ import com.aizuda.snailjob.common.core.util.JsonUtil;
|
|||||||
import com.aizuda.snailjob.server.common.dto.CallbackConfig;
|
import com.aizuda.snailjob.server.common.dto.CallbackConfig;
|
||||||
import com.aizuda.snailjob.server.common.dto.DecisionConfig;
|
import com.aizuda.snailjob.server.common.dto.DecisionConfig;
|
||||||
import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum;
|
import com.aizuda.snailjob.server.common.enums.SyetemTaskTypeEnum;
|
||||||
|
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
||||||
import com.aizuda.snailjob.server.web.model.base.PageResult;
|
import com.aizuda.snailjob.server.web.model.base.PageResult;
|
||||||
import com.aizuda.snailjob.server.web.model.request.JobBatchQueryVO;
|
import com.aizuda.snailjob.server.web.model.request.JobBatchQueryVO;
|
||||||
import com.aizuda.snailjob.server.web.model.request.UserSessionVO;
|
import com.aizuda.snailjob.server.web.model.request.UserSessionVO;
|
||||||
@ -23,6 +25,7 @@ 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.Job;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.JobTaskBatch;
|
import com.aizuda.snailjob.template.datasource.persistence.po.JobTaskBatch;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.WorkflowNode;
|
import com.aizuda.snailjob.template.datasource.persistence.po.WorkflowNode;
|
||||||
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@ -32,6 +35,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: opensnail
|
* @author: opensnail
|
||||||
@ -119,5 +123,15 @@ public class JobBatchServiceImpl implements JobBatchService {
|
|||||||
return jobHandler.retry(taskBatchId);
|
return jobHandler.retry(taskBatchId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean deleteJobBatchById(Set<Long> ids) {
|
||||||
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
|
|
||||||
|
Assert.isTrue(ids.size() == jobTaskBatchMapper.delete(
|
||||||
|
new LambdaQueryWrapper<JobTaskBatch>()
|
||||||
|
.eq(JobTaskBatch::getNamespaceId, namespaceId)
|
||||||
|
.in(JobTaskBatch::getId, ids)
|
||||||
|
), () -> new SnailJobServerException("删除任务批次失败"));
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,6 +33,7 @@ import com.aizuda.snailjob.template.datasource.access.AccessTemplate;
|
|||||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig;
|
import com.aizuda.snailjob.template.datasource.persistence.po.GroupConfig;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.Job;
|
import com.aizuda.snailjob.template.datasource.persistence.po.Job;
|
||||||
|
import com.aizuda.snailjob.template.datasource.persistence.po.RetrySceneConfig;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
@ -44,10 +45,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
import org.springframework.validation.annotation.Validated;
|
import org.springframework.validation.annotation.Validated;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
import java.util.Objects;
|
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author opensnail
|
* @author opensnail
|
||||||
@ -295,6 +293,20 @@ public class JobServiceImpl implements JobService {
|
|||||||
return JsonUtil.toJsonString(requestList);
|
return JsonUtil.toJsonString(requestList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean deleteJobByIds(Set<Long> ids) {
|
||||||
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
|
|
||||||
|
Assert.isTrue(ids.size() == jobMapper.delete(
|
||||||
|
new LambdaQueryWrapper<Job>()
|
||||||
|
.eq(Job::getNamespaceId, namespaceId)
|
||||||
|
.eq(Job::getJobStatus, StatusEnum.NO.getStatus())
|
||||||
|
.in(Job::getId, ids)
|
||||||
|
), () -> new SnailJobServerException("删除定时任务失败, 请检查任务状态是否关闭状态"));
|
||||||
|
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
@EqualsAndHashCode(callSuper = true)
|
@EqualsAndHashCode(callSuper = true)
|
||||||
@Getter
|
@Getter
|
||||||
private static class JobPartitionTask extends PartitionTask {
|
private static class JobPartitionTask extends PartitionTask {
|
||||||
|
@ -1,26 +1,28 @@
|
|||||||
package com.aizuda.snailjob.server.web.service.impl;
|
package com.aizuda.snailjob.server.web.service.impl;
|
||||||
|
|
||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.lang.tree.Tree;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.lang.tree.TreeNode;
|
|
||||||
import cn.hutool.core.lang.tree.TreeNodeConfig;
|
|
||||||
import cn.hutool.core.lang.tree.TreeUtil;
|
|
||||||
import com.aizuda.snailjob.common.core.util.JsonUtil;
|
|
||||||
import com.aizuda.snailjob.common.core.util.StreamUtils;
|
import com.aizuda.snailjob.common.core.util.StreamUtils;
|
||||||
|
import com.aizuda.snailjob.server.common.exception.SnailJobServerException;
|
||||||
import com.aizuda.snailjob.server.web.model.base.PageResult;
|
import com.aizuda.snailjob.server.web.model.base.PageResult;
|
||||||
import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO;
|
import com.aizuda.snailjob.server.web.model.request.JobTaskQueryVO;
|
||||||
import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO;
|
import com.aizuda.snailjob.server.web.model.response.JobTaskResponseVO;
|
||||||
import com.aizuda.snailjob.server.web.service.JobTaskService;
|
import com.aizuda.snailjob.server.web.service.JobTaskService;
|
||||||
import com.aizuda.snailjob.server.web.service.convert.JobTaskResponseVOConverter;
|
import com.aizuda.snailjob.server.web.service.convert.JobTaskResponseVOConverter;
|
||||||
|
import com.aizuda.snailjob.server.web.util.UserSessionUtils;
|
||||||
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobLogMessageMapper;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobTaskMapper;
|
import com.aizuda.snailjob.template.datasource.persistence.mapper.JobTaskMapper;
|
||||||
|
import com.aizuda.snailjob.template.datasource.persistence.po.JobLogMessage;
|
||||||
import com.aizuda.snailjob.template.datasource.persistence.po.JobTask;
|
import com.aizuda.snailjob.template.datasource.persistence.po.JobTask;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.PageDTO;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.ArrayList;
|
||||||
import java.util.stream.Collectors;
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author: opensnail
|
* @author: opensnail
|
||||||
@ -28,10 +30,10 @@ import java.util.stream.Collectors;
|
|||||||
* @since :2.4.0
|
* @since :2.4.0
|
||||||
*/
|
*/
|
||||||
@Service
|
@Service
|
||||||
|
@RequiredArgsConstructor
|
||||||
public class JobTaskServiceImpl implements JobTaskService {
|
public class JobTaskServiceImpl implements JobTaskService {
|
||||||
|
private final JobTaskMapper jobTaskMapper;
|
||||||
@Autowired
|
private final JobLogMessageMapper jobLogMessageMapper;
|
||||||
private JobTaskMapper jobTaskMapper;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public PageResult<List<JobTaskResponseVO>> getJobTaskPage(final JobTaskQueryVO queryVO) {
|
public PageResult<List<JobTaskResponseVO>> getJobTaskPage(final JobTaskQueryVO queryVO) {
|
||||||
@ -64,6 +66,25 @@ public class JobTaskServiceImpl implements JobTaskService {
|
|||||||
return convertJobTaskList(taskList);
|
return convertJobTaskList(taskList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Boolean deleteJobTaskById(Set<Long> ids) {
|
||||||
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
|
|
||||||
|
Assert.isTrue(ids.size() == jobTaskMapper.delete(
|
||||||
|
new LambdaQueryWrapper<JobTask>()
|
||||||
|
.eq(JobTask::getNamespaceId, namespaceId)
|
||||||
|
.in(JobTask::getId, ids)
|
||||||
|
), () -> new SnailJobServerException("删除任务批次失败"));
|
||||||
|
|
||||||
|
// 删除日志信息
|
||||||
|
jobLogMessageMapper.delete(new LambdaQueryWrapper<JobLogMessage>()
|
||||||
|
.eq(JobLogMessage::getNamespaceId, namespaceId)
|
||||||
|
.eq(JobLogMessage::getTaskId, ids)
|
||||||
|
);
|
||||||
|
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
private List<JobTaskResponseVO> convertJobTaskList(List<JobTask> taskList) {
|
private List<JobTaskResponseVO> convertJobTaskList(List<JobTask> taskList) {
|
||||||
if (CollUtil.isEmpty(taskList)) {
|
if (CollUtil.isEmpty(taskList)) {
|
||||||
return new ArrayList<>();
|
return new ArrayList<>();
|
||||||
|
@ -205,6 +205,6 @@ public class RetryTaskLogServiceImpl implements RetryTaskLogService {
|
|||||||
.eq(RetryTaskLogMessage::getGroupName, retryTaskLog.getGroupName())
|
.eq(RetryTaskLogMessage::getGroupName, retryTaskLog.getGroupName())
|
||||||
.eq(RetryTaskLogMessage::getUniqueId, retryTaskLog.getUniqueId()));
|
.eq(RetryTaskLogMessage::getUniqueId, retryTaskLog.getUniqueId()));
|
||||||
}
|
}
|
||||||
return 1 == retryTaskLogMapper.deleteBatchIds(ids);
|
return 1 == retryTaskLogMapper.deleteByIds(ids);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.aizuda.snailjob.server.web.service.impl;
|
|||||||
import cn.hutool.core.collection.CollUtil;
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.lang.Assert;
|
import cn.hutool.core.lang.Assert;
|
||||||
import cn.hutool.core.util.StrUtil;
|
import cn.hutool.core.util.StrUtil;
|
||||||
|
import com.aizuda.snailjob.common.core.enums.StatusEnum;
|
||||||
import com.aizuda.snailjob.common.core.util.JsonUtil;
|
import com.aizuda.snailjob.common.core.util.JsonUtil;
|
||||||
import com.aizuda.snailjob.common.core.util.StreamUtils;
|
import com.aizuda.snailjob.common.core.util.StreamUtils;
|
||||||
import com.aizuda.snailjob.server.common.dto.PartitionTask;
|
import com.aizuda.snailjob.server.common.dto.PartitionTask;
|
||||||
@ -218,6 +219,20 @@ public class SceneConfigServiceImpl implements SceneConfigService {
|
|||||||
return JsonUtil.toJsonString(requestList);
|
return JsonUtil.toJsonString(requestList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean deleteByIds(Set<Long> ids) {
|
||||||
|
String namespaceId = UserSessionUtils.currentUserSession().getNamespaceId();
|
||||||
|
|
||||||
|
Assert.isTrue(ids.size() == accessTemplate.getSceneConfigAccess().delete(
|
||||||
|
new LambdaQueryWrapper<RetrySceneConfig>()
|
||||||
|
.eq(RetrySceneConfig::getNamespaceId, namespaceId)
|
||||||
|
.eq(RetrySceneConfig::getSceneStatus, StatusEnum.NO.getStatus())
|
||||||
|
.in(RetrySceneConfig::getId, ids)
|
||||||
|
), () -> new SnailJobServerException("删除重试场景失败, 请检查场景状态是否关闭状态"));
|
||||||
|
|
||||||
|
return Boolean.TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
private void batchSaveSceneConfig(final List<SceneConfigRequestVO> requests, final String namespaceId) {
|
private void batchSaveSceneConfig(final List<SceneConfigRequestVO> requests, final String namespaceId) {
|
||||||
|
|
||||||
Set<String> groupNameSet = Sets.newHashSet();
|
Set<String> groupNameSet = Sets.newHashSet();
|
||||||
|
Loading…
Reference in New Issue
Block a user