2024-01-12 14:31:34 +08:00
|
|
|
|
package com.realtime.protection.server.task;
|
|
|
|
|
|
|
|
|
|
|
|
import com.realtime.protection.configuration.entity.task.Task;
|
2024-01-15 20:40:55 +08:00
|
|
|
|
import com.realtime.protection.configuration.entity.task.TaskCommandInfo;
|
2024-01-12 14:31:34 +08:00
|
|
|
|
import com.realtime.protection.configuration.exception.DorisStartException;
|
|
|
|
|
|
import com.realtime.protection.configuration.response.ResponseResult;
|
2024-01-19 15:09:23 +08:00
|
|
|
|
import io.netty.channel.ChannelHandler;
|
2024-01-12 14:31:34 +08:00
|
|
|
|
import io.swagger.v3.oas.annotations.Operation;
|
|
|
|
|
|
import io.swagger.v3.oas.annotations.Parameter;
|
|
|
|
|
|
import io.swagger.v3.oas.annotations.media.Content;
|
|
|
|
|
|
import io.swagger.v3.oas.annotations.media.Schema;
|
|
|
|
|
|
import io.swagger.v3.oas.annotations.responses.ApiResponse;
|
|
|
|
|
|
import io.swagger.v3.oas.annotations.tags.Tag;
|
|
|
|
|
|
import jakarta.validation.Valid;
|
|
|
|
|
|
import jakarta.validation.constraints.Max;
|
|
|
|
|
|
import jakarta.validation.constraints.Min;
|
|
|
|
|
|
import jakarta.validation.constraints.NotNull;
|
|
|
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
|
2024-01-19 15:09:23 +08:00
|
|
|
|
import java.util.Map;
|
|
|
|
|
|
|
|
|
|
|
|
import static com.fasterxml.jackson.databind.type.LogicalType.Map;
|
|
|
|
|
|
|
2024-01-12 14:31:34 +08:00
|
|
|
|
@Tag(name = "任务控制器API", description = "任务管理模块相关的所有接口")
|
|
|
|
|
|
public interface TaskControllerApi {
|
|
|
|
|
|
@PostMapping("/new")
|
|
|
|
|
|
@Operation(
|
|
|
|
|
|
summary = "添加任务",
|
|
|
|
|
|
description = "根据任务信息添加任务并返回任务添加结果",
|
|
|
|
|
|
responses = {
|
|
|
|
|
|
@ApiResponse(
|
|
|
|
|
|
description = "返回任务添加结果信息",
|
|
|
|
|
|
content = @Content(
|
|
|
|
|
|
mediaType = "application/json",
|
|
|
|
|
|
schema = @Schema(implementation = ResponseResult.class)
|
2024-01-19 15:09:23 +08:00
|
|
|
|
),
|
|
|
|
|
|
responseCode = "200"
|
2024-01-12 14:31:34 +08:00
|
|
|
|
)
|
|
|
|
|
|
},
|
|
|
|
|
|
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(description = "任务信息")
|
|
|
|
|
|
)
|
|
|
|
|
|
ResponseResult newTask(@RequestBody @Valid Task task);
|
|
|
|
|
|
|
2024-01-15 20:40:55 +08:00
|
|
|
|
// API推送Endpoint
|
|
|
|
|
|
@PostMapping("/api/new")
|
|
|
|
|
|
@Operation(
|
|
|
|
|
|
summary = "任务推送外部API",
|
|
|
|
|
|
description = "提供给外部的任务推送API",
|
|
|
|
|
|
responses = {
|
|
|
|
|
|
@ApiResponse(
|
|
|
|
|
|
description = "返回外部任务推送结果",
|
|
|
|
|
|
content = @Content(
|
|
|
|
|
|
mediaType = "application/json",
|
|
|
|
|
|
schema = @Schema(implementation = ResponseResult.class)
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
},
|
|
|
|
|
|
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(description = "任务推送信息")
|
|
|
|
|
|
)
|
|
|
|
|
|
ResponseResult newTaskWithAPI(@RequestBody @Valid TaskCommandInfo taskCommandInfo) throws DorisStartException;
|
|
|
|
|
|
|
2024-01-12 14:31:34 +08:00
|
|
|
|
@GetMapping("/query")
|
|
|
|
|
|
@Operation(
|
|
|
|
|
|
summary = "查询任务",
|
|
|
|
|
|
description = "按页和搜索内容查询任务相关信息",
|
|
|
|
|
|
responses = {
|
|
|
|
|
|
@ApiResponse(
|
|
|
|
|
|
description = "返回查询到的所有任务",
|
|
|
|
|
|
content = @Content(
|
|
|
|
|
|
mediaType = "application/json",
|
|
|
|
|
|
schema = @Schema(implementation = ResponseResult.class)
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
},
|
|
|
|
|
|
parameters = {
|
|
|
|
|
|
@Parameter(name = "task_status", description = "任务状态(0为未启动,1为生成中,2为运行中,3为暂停中,4为已停止,5为已结束,6为失败)"),
|
|
|
|
|
|
@Parameter(name = "task_type", description = "任务类型(1为静态,2为实时,3为研判后)"),
|
|
|
|
|
|
@Parameter(name = "task_name", description = "任务名称"),
|
|
|
|
|
|
@Parameter(name = "task_creator", description = "任务创建人"),
|
|
|
|
|
|
@Parameter(name = "page", description = "页码", example = "1"),
|
|
|
|
|
|
@Parameter(name = "page_size", description = "每页查询个数", example = "10")
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
ResponseResult queryTasks(@RequestParam(value = "task_status", required = false) Integer taskStatus,
|
|
|
|
|
|
@RequestParam(value = "task_type", required = false) String taskType,
|
|
|
|
|
|
@RequestParam(value = "task_name", required = false) String taskName,
|
|
|
|
|
|
@RequestParam(value = "task_creator", required = false) String taskCreator,
|
|
|
|
|
|
@RequestParam("page") @Min(1) Integer page,
|
|
|
|
|
|
@RequestParam("page_size") @Min(1) Integer pageSize);
|
|
|
|
|
|
|
|
|
|
|
|
@GetMapping("/{id}/query")
|
|
|
|
|
|
@Operation(
|
|
|
|
|
|
summary = "查询单个任务",
|
|
|
|
|
|
description = "根据任务ID查询单个任务的所有详细信息",
|
|
|
|
|
|
responses = {
|
|
|
|
|
|
@ApiResponse(
|
|
|
|
|
|
description = "返回查询到的单个任务",
|
|
|
|
|
|
content = @Content(
|
|
|
|
|
|
mediaType = "application/json",
|
|
|
|
|
|
schema = @Schema(implementation = ResponseResult.class)
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
},
|
|
|
|
|
|
parameters = {@Parameter(name = "id", description = "任务ID", example = "38")}
|
|
|
|
|
|
)
|
|
|
|
|
|
ResponseResult queryTask(@PathVariable @Min(1) Long id) throws IllegalAccessException;
|
|
|
|
|
|
|
|
|
|
|
|
@PostMapping("/{taskId}/update")
|
|
|
|
|
|
@Operation(
|
|
|
|
|
|
summary = "更新任务",
|
|
|
|
|
|
description = "根据任务信息更新任务并返回更新结果",
|
|
|
|
|
|
responses = {
|
|
|
|
|
|
@ApiResponse(
|
|
|
|
|
|
description = "返回任务更新结果信息",
|
|
|
|
|
|
content = @Content(
|
|
|
|
|
|
mediaType = "application/json",
|
|
|
|
|
|
schema = @Schema(implementation = ResponseResult.class)
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
},
|
2024-01-12 19:24:19 +08:00
|
|
|
|
parameters = {
|
|
|
|
|
|
@Parameter(name = "taskId", description = "任务ID")
|
|
|
|
|
|
},
|
2024-01-12 14:31:34 +08:00
|
|
|
|
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(
|
|
|
|
|
|
description = "任务信息,必须包含任务原有的或者添加/删除部分后的static_rule_ids和dynamic_rule_ids"
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
ResponseResult updateTask(@PathVariable Long taskId, @RequestBody @Valid Task task);
|
|
|
|
|
|
|
|
|
|
|
|
@GetMapping("/{taskId}/audit/{auditStatus}")
|
|
|
|
|
|
@Operation(
|
|
|
|
|
|
summary = "任务审核状态修改",
|
|
|
|
|
|
description = "修改ID对应的任务的审核状态",
|
|
|
|
|
|
responses = {
|
|
|
|
|
|
@ApiResponse(
|
|
|
|
|
|
description = "返回任务审核状态修改的信息",
|
|
|
|
|
|
content = @Content(
|
|
|
|
|
|
mediaType = "application/json",
|
|
|
|
|
|
schema = @Schema(implementation = ResponseResult.class)
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
},
|
|
|
|
|
|
parameters = {
|
|
|
|
|
|
@Parameter(name = "taskId", description = "任务ID", example = "38"),
|
|
|
|
|
|
@Parameter(name = "auditStatus", description = "任务欲修改的审核状态(0为未审核,1为已退回,2为审核通过)", example = "2")
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
ResponseResult changeTaskAuditStatus(@PathVariable @NotNull @Max(10) Integer auditStatus,
|
|
|
|
|
|
@PathVariable @NotNull @Min(1) Long taskId);
|
|
|
|
|
|
|
|
|
|
|
|
@DeleteMapping("/{taskId}/delete")
|
|
|
|
|
|
@Operation(
|
|
|
|
|
|
summary = "删除单个任务",
|
|
|
|
|
|
description = "根据任务ID删除对应任务",
|
|
|
|
|
|
responses = {
|
|
|
|
|
|
@ApiResponse(
|
|
|
|
|
|
description = "返回任务删除结果信息",
|
|
|
|
|
|
content = @Content(
|
|
|
|
|
|
mediaType = "application/json",
|
|
|
|
|
|
schema = @Schema(implementation = ResponseResult.class)
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
},
|
|
|
|
|
|
parameters = {
|
|
|
|
|
|
@Parameter(name = "taskId", description = "任务ID")
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
ResponseResult deleteTask(@PathVariable @NotNull @Min(1) Long taskId);
|
|
|
|
|
|
|
|
|
|
|
|
@GetMapping("/{taskId}/running/{stateNum}")
|
|
|
|
|
|
@Operation(
|
|
|
|
|
|
summary = "修改任务运行状态",
|
|
|
|
|
|
description = "修改ID对应的任务的运行状态",
|
|
|
|
|
|
responses = {
|
|
|
|
|
|
@ApiResponse(
|
|
|
|
|
|
description = "返回任务运行状态修改结果",
|
|
|
|
|
|
content = @Content(
|
|
|
|
|
|
mediaType = "application/json",
|
|
|
|
|
|
schema = @Schema(implementation = ResponseResult.class)
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
},
|
|
|
|
|
|
parameters = {
|
|
|
|
|
|
@Parameter(name = "taskId", description = "任务ID"),
|
|
|
|
|
|
@Parameter(name = "stateNum", description = "任务状态编号任务状态(0为未启动,1为生成中,2为运行中,3为暂停中,4为已停止,5为已结束,6为失败)")
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
2024-01-13 10:23:48 +08:00
|
|
|
|
ResponseResult changeTaskStatus(@PathVariable @NotNull @Min(0) @Max(6) Integer stateNum,
|
2024-01-17 19:07:04 +08:00
|
|
|
|
@PathVariable @NotNull @Min(1) Long taskId) throws DorisStartException;
|
2024-01-15 20:40:55 +08:00
|
|
|
|
|
|
|
|
|
|
@GetMapping("/{taskId}/commands")
|
|
|
|
|
|
@Operation(
|
|
|
|
|
|
summary = "获得任务已推送指令的相关数据",
|
|
|
|
|
|
description = "获得任务已推送指令的相关数据,包括最新下发时间、首次下发时间、下发次数、下发成功次数等",
|
|
|
|
|
|
responses = {
|
|
|
|
|
|
@ApiResponse(
|
|
|
|
|
|
description = "返回任务已推送指令的相关数据",
|
|
|
|
|
|
content = @Content(
|
|
|
|
|
|
mediaType = "application/json",
|
|
|
|
|
|
schema = @Schema(implementation = ResponseResult.class)
|
|
|
|
|
|
)
|
|
|
|
|
|
)
|
|
|
|
|
|
},
|
|
|
|
|
|
parameters = {
|
|
|
|
|
|
@Parameter(name = "taskId", description = "任务ID")
|
|
|
|
|
|
}
|
|
|
|
|
|
)
|
|
|
|
|
|
ResponseResult queryCommandInfoByTaskId(@PathVariable Long taskId);
|
2024-01-12 14:31:34 +08:00
|
|
|
|
}
|