mirror of
https://github.com/continew-org/continew-admin.git
synced 2025-09-08 11:00:52 +08:00
refactor(schedule): 暂时下线查询日志详情功能(Snail Job 日志详情 API 变更为 WebSocket 模式)
This commit is contained in:
@@ -19,7 +19,10 @@ package top.continew.admin.schedule.api;
|
||||
import com.aizuda.snailjob.common.core.model.Result;
|
||||
import org.springframework.cloud.openfeign.FeignClient;
|
||||
import org.springframework.cloud.openfeign.SpringQueryMap;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import org.springframework.web.bind.annotation.PutMapping;
|
||||
import org.springframework.web.bind.annotation.RequestBody;
|
||||
import top.continew.admin.schedule.config.FeignRequestInterceptor;
|
||||
import top.continew.admin.schedule.model.JobPageResult;
|
||||
import top.continew.admin.schedule.model.query.JobQuery;
|
||||
@@ -28,7 +31,6 @@ import top.continew.admin.schedule.model.req.JobTriggerReq;
|
||||
import top.continew.admin.schedule.model.resp.JobResp;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 任务 REST API
|
||||
@@ -67,15 +69,6 @@ public interface JobApi {
|
||||
@PutMapping
|
||||
Result<Boolean> update(@RequestBody JobReq req);
|
||||
|
||||
/**
|
||||
* 删除
|
||||
*
|
||||
* @param ids ID 列表
|
||||
* @return 响应信息
|
||||
*/
|
||||
@DeleteMapping("/ids")
|
||||
Result<Boolean> delete(@RequestBody Set<Long> ids);
|
||||
|
||||
/**
|
||||
* 执行
|
||||
*
|
||||
|
@@ -23,12 +23,8 @@ import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.PathVariable;
|
||||
import org.springframework.web.bind.annotation.PostMapping;
|
||||
import top.continew.admin.schedule.config.FeignRequestInterceptor;
|
||||
import top.continew.admin.schedule.model.JobInstanceLogPageResult;
|
||||
import top.continew.admin.schedule.model.JobPageResult;
|
||||
import top.continew.admin.schedule.model.query.JobInstanceLogQuery;
|
||||
import top.continew.admin.schedule.model.query.JobInstanceQuery;
|
||||
import top.continew.admin.schedule.model.query.JobLogQuery;
|
||||
import top.continew.admin.schedule.model.resp.JobInstanceResp;
|
||||
import top.continew.admin.schedule.model.resp.JobLogResp;
|
||||
|
||||
import java.util.List;
|
||||
@@ -69,22 +65,4 @@ public interface JobBatchApi {
|
||||
*/
|
||||
@PostMapping("/batch/retry/{id}")
|
||||
Result<Boolean> retry(@PathVariable("id") Long id);
|
||||
|
||||
/**
|
||||
* 分页查询任务实例列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 响应信息
|
||||
*/
|
||||
@GetMapping("/task/list")
|
||||
JobPageResult<List<JobInstanceResp>> pageTask(@SpringQueryMap JobInstanceQuery query);
|
||||
|
||||
/**
|
||||
* 分页查询任务实例日志列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 响应信息
|
||||
*/
|
||||
@GetMapping("/log/list")
|
||||
Result<JobInstanceLogPageResult> pageLog(@SpringQueryMap JobInstanceLogQuery query);
|
||||
}
|
||||
|
@@ -31,6 +31,7 @@ import top.continew.admin.schedule.model.req.JobStatusReq;
|
||||
import top.continew.admin.schedule.model.req.JobTriggerReq;
|
||||
import top.continew.admin.schedule.model.resp.JobResp;
|
||||
import top.continew.admin.schedule.service.JobService;
|
||||
import top.continew.starter.core.util.validation.CheckUtils;
|
||||
import top.continew.starter.extension.crud.model.resp.PageResp;
|
||||
import top.continew.starter.extension.crud.validation.CrudValidationGroup;
|
||||
import top.continew.starter.log.annotation.Log;
|
||||
@@ -64,7 +65,7 @@ public class JobController {
|
||||
@PostMapping
|
||||
@Validated(CrudValidationGroup.Create.class)
|
||||
public void create(@RequestBody @Valid JobReq req) {
|
||||
baseService.create(req);
|
||||
CheckUtils.throwIf(!baseService.create(req), "任务创建失败");
|
||||
}
|
||||
|
||||
@Operation(summary = "修改任务", description = "修改任务")
|
||||
@@ -73,14 +74,14 @@ public class JobController {
|
||||
@PutMapping("/{id}")
|
||||
@Validated(CrudValidationGroup.Update.class)
|
||||
public void update(@RequestBody @Valid JobReq req, @PathVariable Long id) {
|
||||
baseService.update(req, id);
|
||||
CheckUtils.throwIf(!baseService.update(req, id), "任务修改失败");
|
||||
}
|
||||
|
||||
@Operation(summary = "修改任务状态", description = "修改任务状态")
|
||||
@SaCheckPermission("schedule:job:update")
|
||||
@PatchMapping("/{id}/status")
|
||||
public void updateStatus(@RequestBody @Valid JobStatusReq req, @PathVariable Long id) {
|
||||
baseService.updateStatus(req, id);
|
||||
CheckUtils.throwIf(!baseService.updateStatus(req, id), "任务状态修改失败");
|
||||
}
|
||||
|
||||
@Operation(summary = "删除任务", description = "删除任务")
|
||||
@@ -88,7 +89,7 @@ public class JobController {
|
||||
@SaCheckPermission("schedule:job:delete")
|
||||
@DeleteMapping("/{id}")
|
||||
public void delete(@PathVariable Long id) {
|
||||
baseService.delete(id);
|
||||
CheckUtils.throwIf(!baseService.delete(id), "任务删除失败");
|
||||
}
|
||||
|
||||
@Operation(summary = "执行任务", description = "执行任务")
|
||||
@@ -98,7 +99,7 @@ public class JobController {
|
||||
public void trigger(@PathVariable Long id) {
|
||||
JobTriggerReq req = new JobTriggerReq();
|
||||
req.setJobId(id);
|
||||
baseService.trigger(req);
|
||||
CheckUtils.throwIf(!baseService.trigger(req), "任务执行失败");
|
||||
}
|
||||
|
||||
@Log(ignore = true)
|
||||
|
@@ -24,17 +24,11 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||
import jakarta.validation.Valid;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import top.continew.admin.schedule.model.JobInstanceLogPageResult;
|
||||
import top.continew.admin.schedule.model.query.JobInstanceLogQuery;
|
||||
import top.continew.admin.schedule.model.query.JobInstanceQuery;
|
||||
import top.continew.admin.schedule.model.query.JobLogQuery;
|
||||
import top.continew.admin.schedule.model.resp.JobInstanceResp;
|
||||
import top.continew.admin.schedule.model.resp.JobLogResp;
|
||||
import top.continew.admin.schedule.service.JobLogService;
|
||||
import top.continew.starter.extension.crud.model.resp.PageResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 任务日志 API
|
||||
*
|
||||
@@ -72,18 +66,4 @@ public class JobLogController {
|
||||
public void retry(@PathVariable Long id) {
|
||||
baseService.retry(id);
|
||||
}
|
||||
|
||||
@Operation(summary = "查询任务实例列表", description = "查询任务实例列表")
|
||||
@SaCheckPermission("schedule:log:list")
|
||||
@GetMapping("/instance")
|
||||
public List<JobInstanceResp> listInstance(@Valid JobInstanceQuery query) {
|
||||
return baseService.listInstance(query);
|
||||
}
|
||||
|
||||
@Operation(summary = "分页查询任务实例日志列表", description = "分页查询任务实例日志列表")
|
||||
@SaCheckPermission("schedule:log:list")
|
||||
@GetMapping("/instance/log")
|
||||
public JobInstanceLogPageResult pageInstanceLog(@Valid JobInstanceLogQuery query) {
|
||||
return baseService.pageInstanceLog(query);
|
||||
}
|
||||
}
|
||||
|
@@ -1,77 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.continew.admin.schedule.model.query;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import jakarta.validation.constraints.Min;
|
||||
import lombok.Data;
|
||||
import org.hibernate.validator.constraints.Range;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 任务实例日志查询条件
|
||||
*
|
||||
* @author KAI
|
||||
* @since 2024/6/28 16:58
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "任务实例日志查询条件")
|
||||
public class JobInstanceLogQuery implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 任务 ID
|
||||
*/
|
||||
@Schema(description = "任务ID", example = "1")
|
||||
private Long jobId;
|
||||
|
||||
/**
|
||||
* 任务批次 ID
|
||||
*/
|
||||
@Schema(description = "任务批次ID", example = "1")
|
||||
private Long taskBatchId;
|
||||
|
||||
/**
|
||||
* 任务实例 ID
|
||||
*/
|
||||
@Schema(description = "任务实例ID", example = "1")
|
||||
private Long taskId;
|
||||
|
||||
/**
|
||||
* 开始 ID
|
||||
*/
|
||||
@Schema(description = "开始ID", example = "2850")
|
||||
private Integer startId;
|
||||
|
||||
/**
|
||||
* 起始索引
|
||||
*/
|
||||
@Schema(description = "起始索引", example = "0")
|
||||
@Min(value = 0, message = "起始索引最小值为 {value}")
|
||||
private Integer fromIndex = 0;
|
||||
|
||||
/**
|
||||
* 每页条数
|
||||
*/
|
||||
@Schema(description = "每页条数", example = "50")
|
||||
@Range(min = 1, max = 1000, message = "每页条数(取值范围 {min}-{max})")
|
||||
private Integer size = 50;
|
||||
}
|
@@ -1,49 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.continew.admin.schedule.model.query;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 任务实例查询条件
|
||||
*
|
||||
* @author KAI
|
||||
* @since 2024/6/28 16:58
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "任务实例查询条件")
|
||||
public class JobInstanceQuery implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* 任务 ID
|
||||
*/
|
||||
@Schema(description = "任务ID", example = "1")
|
||||
private Long jobId;
|
||||
|
||||
/**
|
||||
* 任务批次 ID
|
||||
*/
|
||||
@Schema(description = "任务批次ID", example = "1")
|
||||
private Long taskBatchId;
|
||||
}
|
@@ -1,86 +0,0 @@
|
||||
/*
|
||||
* Copyright (c) 2022-present Charles7c Authors. All Rights Reserved.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package top.continew.admin.schedule.model.resp;
|
||||
|
||||
import io.swagger.v3.oas.annotations.media.Schema;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serial;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* 任务实例响应参数
|
||||
*
|
||||
* @author KAI
|
||||
* @author Charles7c
|
||||
* @since 2024/6/28 16:58
|
||||
*/
|
||||
@Data
|
||||
@Schema(description = "任务实例响应参数")
|
||||
public class JobInstanceResp implements Serializable {
|
||||
|
||||
@Serial
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* ID
|
||||
*/
|
||||
@Schema(description = "ID", example = "1")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 任务组
|
||||
*/
|
||||
@Schema(description = "任务组", example = "continew-admin")
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* 任务 ID
|
||||
*/
|
||||
@Schema(description = "任务ID", example = "1")
|
||||
private Long jobId;
|
||||
|
||||
/**
|
||||
* 任务批次 ID
|
||||
*/
|
||||
@Schema(description = "任务批次ID", example = "1")
|
||||
private Long taskBatchId;
|
||||
|
||||
/**
|
||||
* 执行状态
|
||||
*/
|
||||
@Schema(description = "执行状态", example = "1")
|
||||
private Integer taskStatus;
|
||||
|
||||
/**
|
||||
* 重试次数
|
||||
*/
|
||||
@Schema(description = "重试次数", example = "1")
|
||||
private Integer retryCount;
|
||||
|
||||
/**
|
||||
* 执行结果
|
||||
*/
|
||||
@Schema(description = "执行结果", example = "")
|
||||
private String resultMessage;
|
||||
|
||||
/**
|
||||
* 客户端信息
|
||||
*/
|
||||
@Schema(description = "客户端信息", example = "1812406095098114048@192.168.138.48:1789")
|
||||
private String clientInfo;
|
||||
}
|
@@ -16,16 +16,10 @@
|
||||
|
||||
package top.continew.admin.schedule.service;
|
||||
|
||||
import top.continew.admin.schedule.model.JobInstanceLogPageResult;
|
||||
import top.continew.admin.schedule.model.query.JobInstanceLogQuery;
|
||||
import top.continew.admin.schedule.model.query.JobInstanceQuery;
|
||||
import top.continew.admin.schedule.model.query.JobLogQuery;
|
||||
import top.continew.admin.schedule.model.resp.JobInstanceResp;
|
||||
import top.continew.admin.schedule.model.resp.JobLogResp;
|
||||
import top.continew.starter.extension.crud.model.resp.PageResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 任务日志业务接口
|
||||
*
|
||||
@@ -58,20 +52,4 @@ public interface JobLogService {
|
||||
* @return 重试结果
|
||||
*/
|
||||
boolean retry(Long id);
|
||||
|
||||
/**
|
||||
* 查询任务实例列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 列表信息
|
||||
*/
|
||||
List<JobInstanceResp> listInstance(JobInstanceQuery query);
|
||||
|
||||
/**
|
||||
* 分页查询任务实例日志列表
|
||||
*
|
||||
* @param query 查询条件
|
||||
* @return 分页列表信息
|
||||
*/
|
||||
JobInstanceLogPageResult pageInstanceLog(JobInstanceLogQuery query);
|
||||
}
|
||||
|
@@ -20,17 +20,11 @@ import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.stereotype.Service;
|
||||
import top.continew.admin.schedule.api.JobBatchApi;
|
||||
import top.continew.admin.schedule.api.JobClient;
|
||||
import top.continew.admin.schedule.model.JobInstanceLogPageResult;
|
||||
import top.continew.admin.schedule.model.query.JobInstanceLogQuery;
|
||||
import top.continew.admin.schedule.model.query.JobInstanceQuery;
|
||||
import top.continew.admin.schedule.model.query.JobLogQuery;
|
||||
import top.continew.admin.schedule.model.resp.JobInstanceResp;
|
||||
import top.continew.admin.schedule.model.resp.JobLogResp;
|
||||
import top.continew.admin.schedule.service.JobLogService;
|
||||
import top.continew.starter.extension.crud.model.resp.PageResp;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 任务日志业务实现
|
||||
*
|
||||
@@ -59,14 +53,4 @@ public class JobLogServiceImpl implements JobLogService {
|
||||
public boolean retry(Long id) {
|
||||
return Boolean.TRUE.equals(jobClient.request(() -> jobBatchApi.retry(id)));
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<JobInstanceResp> listInstance(JobInstanceQuery query) {
|
||||
return jobClient.requestPage(() -> jobBatchApi.pageTask(query)).getList();
|
||||
}
|
||||
|
||||
@Override
|
||||
public JobInstanceLogPageResult pageInstanceLog(JobInstanceLogQuery query) {
|
||||
return jobClient.request(() -> jobBatchApi.pageLog(query));
|
||||
}
|
||||
}
|
||||
|
@@ -32,8 +32,8 @@ import top.continew.admin.schedule.model.resp.JobResp;
|
||||
import top.continew.admin.schedule.service.JobService;
|
||||
import top.continew.starter.extension.crud.model.resp.PageResp;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
|
||||
/**
|
||||
* 任务业务实现
|
||||
@@ -75,7 +75,7 @@ public class JobServiceImpl implements JobService {
|
||||
|
||||
@Override
|
||||
public boolean delete(Long id) {
|
||||
return Boolean.TRUE.equals(jobClient.request(() -> jobApi.delete(Collections.singleton(id))));
|
||||
return SnailJobOpenApi.deleteJob(Set.of(id)).execute();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@@ -17,6 +17,5 @@ VALUES
|
||||
|
||||
(8020, '任务日志', 8000, 2, '/schedule/log', 'ScheduleLog', 'schedule/log/index', NULL, 'find-replace', b'0', b'0', b'0', NULL, 2, 1, 1, NOW()),
|
||||
(8021, '列表', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:list', 1, 1, 1, NOW()),
|
||||
(8022, '详情', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:get', 2, 1, 1, NOW()),
|
||||
(8023, '停止', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:stop', 3, 1, 1, NOW()),
|
||||
(8024, '重试', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:retry', 4, 1, 1, NOW());
|
||||
(8022, '停止', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:stop', 3, 1, 1, NOW()),
|
||||
(8023, '重试', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:retry', 4, 1, 1, NOW());
|
||||
|
@@ -17,6 +17,5 @@ VALUES
|
||||
|
||||
(8020, '任务日志', 8000, 2, '/schedule/log', 'ScheduleLog', 'schedule/log/index', NULL, 'find-replace', false, false, false, NULL, 2, 1, 1, NOW()),
|
||||
(8021, '列表', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:list', 1, 1, 1, NOW()),
|
||||
(8022, '详情', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:get', 2, 1, 1, NOW()),
|
||||
(8023, '停止', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:stop', 3, 1, 1, NOW()),
|
||||
(8024, '重试', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:retry', 4, 1, 1, NOW());
|
||||
(8022, '停止', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:stop', 3, 1, 1, NOW()),
|
||||
(8023, '重试', 8020, 3, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, 'schedule:log:retry', 4, 1, 1, NOW());
|
||||
|
Reference in New Issue
Block a user