1. 修改setDataMap函数为addDataMap以防止swagger将DataMap视为一种属性

2. 当任务未通过审核时,现在会立刻报错而不是返回false
This commit is contained in:
EnderByEndera
2024-01-19 15:09:23 +08:00
parent 1d317eb10f
commit 449c320261
22 changed files with 176 additions and 75 deletions

View File

@@ -2,7 +2,6 @@ package com.realtime.protection;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
public class ProtectionApplication {

View File

@@ -1,18 +0,0 @@
package com.realtime.protection.configuration.cors;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class CorsFilter implements WebMvcConfigurer {
@Override
public void addCorsMappings(CorsRegistry corsRegistry) {
corsRegistry.addMapping("/**")
.allowedOrigins("http://localhost:8000")
.allowCredentials(true)
.allowedMethods("GET", "POST", "DELETE", "PUT")
.allowedHeaders("*")
.exposedHeaders("*");
}
}

View File

@@ -0,0 +1,17 @@
package com.realtime.protection.configuration.response;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import java.util.HashMap;
@EqualsAndHashCode(callSuper = true)
@Data
@Schema(description = "xxx")
public class ResponseData extends HashMap<String, Object> {
public Object put(String key, Object value, String description) {
return super.put(key, value);
}
}

View File

@@ -18,12 +18,12 @@ public class ResponseResult implements Serializable {
private String message;
@Schema(description = "封装数据")
private Map<String, Object> data;
private ResponseData data;
@Schema(description = "返回对象链接的另外一个返回对象")
private ResponseResult another;
public ResponseResult(int code, String message, LinkedHashMap<String, Object> data) {
public ResponseResult(int code, String message, ResponseData data) {
this.code = code;
this.message = message;
this.data = data;
@@ -31,13 +31,13 @@ public class ResponseResult implements Serializable {
public ResponseResult(int code) {
this.code = code;
this.data = new LinkedHashMap<>();
this.data = new ResponseData();
}
public ResponseResult(int code, String message) {
this.code = code;
this.message = message;
this.data = new LinkedHashMap<>();
this.data = new ResponseData();
}
public static ResponseResult ok() {
@@ -83,8 +83,8 @@ public class ResponseResult implements Serializable {
return this;
}
public ResponseResult setDataMap(Map<String, Object> data) {
this.data = data;
public ResponseResult addDataMap(Map<String, Object> data) {
this.data = (ResponseData) data;
return this;
}
}

View File

@@ -23,4 +23,6 @@ public interface CommandMapper {
Boolean setCommandInvalid(@Param("command_id") String commandId);
List<TaskCommandInfo> queryCommandInfoByTaskId(@Param("task_id") Long taskId);
TaskCommandInfo queryCommandInfoByUUID(@Param("uuid") String uuid);
}

View File

@@ -6,8 +6,10 @@ import com.realtime.protection.configuration.entity.task.TaskCommandInfo;
import com.realtime.protection.configuration.utils.SqlSessionWrapper;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.UUID;
import java.util.function.Function;
@Service
@@ -24,14 +26,19 @@ public class CommandService {
this.sqlSessionWrapper = sqlSessionWrapper;
}
public Boolean createCommand(TaskCommandInfo commandInfo) {
return commandMapper.createCommand(commandInfo);
@Transactional
public String createCommand(TaskCommandInfo commandInfo) {
commandInfo.setUUID(UUID.randomUUID().toString());
commandMapper.createCommand(commandInfo);
return commandInfo.getUUID();
}
public void createCommands(List<TaskCommandInfo> taskCommandInfos) {
Function<CommandMapper, Function<List<TaskCommandInfo>, Boolean>> function = mapper -> list -> {
List<TaskCommandInfo> taskCommandInfoBatch = ListUtils.newArrayListWithExpectedSize(BatchSize);
for (TaskCommandInfo info : list) {
info.setUUID(UUID.randomUUID().toString());
taskCommandInfoBatch.add(info);
if (taskCommandInfoBatch.size() < BatchSize) {
continue;
@@ -56,6 +63,10 @@ public class CommandService {
return commandMapper.queryCommandInfoByTaskId(taskId);
}
public TaskCommandInfo queryCommandInfoByUUID(String uuid) {
return commandMapper.queryCommandInfoByUUID(uuid);
}
public Boolean startCommandsByTaskId(Long taskId) {
return commandMapper.startCommandsByTaskId(taskId);
}

View File

@@ -83,14 +83,13 @@ public class ProtectObjectController implements ProtectObjectControllerApi {
@Override
@GetMapping("/{protectObjectId}/query")
public ResponseResult queryProtectObject(@PathVariable Integer protectObjectId) throws IllegalAccessException {
public ResponseResult queryProtectObject(@PathVariable Integer protectObjectId) {
ProtectObject protectObject = protectObjectService.queryProtectObject(protectObjectId);
if (protectObject == null) {
return ResponseResult.invalid()
.setMessage("无效的防护对象ID也许该ID指定的防护对象不存在");
}
return ResponseResult.ok()
.setDataMap(EntityUtils.entityToMap(protectObject));
return ResponseResult.ok().setData("protect_object", protectObject);
}
@Override
@@ -124,7 +123,7 @@ public class ProtectObjectController implements ProtectObjectControllerApi {
public ResponseResult changeProtectObjectAuditStatus(@PathVariable Integer protectObjectId,
@PathVariable Integer auditStatus) {
return ResponseResult.ok()
.setDataMap(protectObjectService.changeProtectObjectAuditStatus(protectObjectId, auditStatus))
.addDataMap(protectObjectService.changeProtectObjectAuditStatus(protectObjectId, auditStatus))
.setData("proobj_id", protectObjectId);
}
}

View File

@@ -55,8 +55,7 @@ public class TemplateController implements TemplateControllerApi {
return ResponseResult.invalid()
.setMessage("无效的策略模板ID也许该模板不存在");
}
return ResponseResult.ok()
.setDataMap(EntityUtils.entityToMap(template));
return ResponseResult.ok().setData("template", template);
}
@Override

View File

@@ -152,7 +152,7 @@ public class StaticRuleController implements StaticRuleControllerApi {
.setData("success", false);
}
return ResponseResult.ok()
.setDataMap(staticRuleService.updateAuditStatus(id, auditStatus))
.addDataMap(staticRuleService.updateAuditStatus(id, auditStatus))
.setData("staticRule_id", id);
}

View File

@@ -87,8 +87,7 @@ public class TaskController implements TaskControllerApi {
return ResponseResult.invalid().setMessage("无效Task ID也许该ID对应的任务不存在");
}
return ResponseResult.ok()
.setDataMap(EntityUtils.entityToMap(task));
return ResponseResult.ok().setData("task", task);
}
@Override

View File

@@ -4,6 +4,7 @@ import com.realtime.protection.configuration.entity.task.Task;
import com.realtime.protection.configuration.entity.task.TaskCommandInfo;
import com.realtime.protection.configuration.exception.DorisStartException;
import com.realtime.protection.configuration.response.ResponseResult;
import io.netty.channel.ChannelHandler;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
@@ -16,6 +17,10 @@ import jakarta.validation.constraints.Min;
import jakarta.validation.constraints.NotNull;
import org.springframework.web.bind.annotation.*;
import java.util.Map;
import static com.fasterxml.jackson.databind.type.LogicalType.Map;
@Tag(name = "任务控制器API", description = "任务管理模块相关的所有接口")
public interface TaskControllerApi {
@PostMapping("/new")
@@ -28,7 +33,8 @@ public interface TaskControllerApi {
content = @Content(
mediaType = "application/json",
schema = @Schema(implementation = ResponseResult.class)
)
),
responseCode = "200"
)
},
requestBody = @io.swagger.v3.oas.annotations.parameters.RequestBody(description = "任务信息")

View File

@@ -35,9 +35,9 @@ public class StateHandler {
throw new IllegalArgumentException("无效的task_id因为task_audit_status为空");
}
// 如果审核状态不为已通过审核,则无效
// 如果审核状态不为已通过审核,则报错
if (taskAuditStatus != AuditStatus.AUDITED.getAuditStatus()) {
return false;
throw new IllegalArgumentException("无效的task_id因为未通过审核");
}
return switch (TaskTypeEnum.getTaskTypeByNum(task.getTaskType())) {

View File

@@ -14,7 +14,8 @@ public class PendingState extends StateHandler implements State {
case FAILED -> handleFailed(commandService, taskId);
case RUNNING -> handleStart(taskService, commandService, taskId);
case FINISHED -> handleFinish(commandService, taskId);
default -> throw new IllegalStateException("Unexpected value: " + StateEnum.getStateEnumByState(newState));
default -> throw new IllegalStateException(taskId + " meets unexpected value: "
+ StateEnum.getStateEnumByState(newState));
};
}
}

View File

@@ -165,7 +165,7 @@ public class WhiteListController implements WhiteListControllerApi {
// }
return ResponseResult.ok()
.setDataMap(whiteListService.updateWhiteListObjectAuditStatus(id, auditStatus))
.addDataMap(whiteListService.updateWhiteListObjectAuditStatus(id, auditStatus))
.setData("whiteobj_id", id);
}