diff --git a/src/main/java/com/realtime/protection/configuration/entity/defense/template/TemplateNew.java b/src/main/java/com/realtime/protection/configuration/entity/defense/template/TemplateNew.java new file mode 100644 index 0000000..2563e67 --- /dev/null +++ b/src/main/java/com/realtime/protection/configuration/entity/defense/template/TemplateNew.java @@ -0,0 +1,110 @@ +package com.realtime.protection.configuration.entity.defense.template; + +import com.fasterxml.jackson.annotation.JsonProperty; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class TemplateNew { + @JsonProperty("template_id") + @Schema(description = "防御策略模板ID", example = "2", accessMode = Schema.AccessMode.READ_ONLY) + private Integer templateId; + + @JsonProperty("template_name") + @NotNull(message = "template_name字段不能为空。") + @Schema(description = "防御策略模板名称(事件类型)", example = "APT攻击事件") + private String templateName; + + @JsonProperty("source_system") + @NotNull(message = "source_system字段不能为空。") + @Schema(description = "防御策略模板数据来源系统", example = "BW系统") + private String sourceSystem; + + @JsonProperty("event_type") + @NotNull(message = "事件类型字段不能为空。") + @Schema(description = "防御策略模板数据来源系统", example = "BW系统") + private String eventType; + + @JsonProperty("protect_level") + @NotNull(message = "防护等级字段不能为空。") + @Schema(description = "防御策略模板数据来源系统", example = "BW系统") + private String protectLevel; + + @JsonProperty("description") + @Schema(description = "对策略模板的文字描述。方便用户使用", example = "zd防护对象的全流量") + private String description; + + @Schema(description = "该防护等级是否需要提取防护对象IP地址字段") + private Boolean hasProtectObjectIP = false; + + @Schema(description = "该防护等级是否需要提取防护对象端口字段") + private Boolean hasProtectObjectPort = false; + + @Schema(description = "该防护等级是否需要提取对端IP地址字段") + private Boolean hasPeerIP = false; + + @Schema(description = "该防护等级是否需要提取对端端口字段") + private Boolean hasPeerPort = false; + + @Schema(description = "该防护等级是否需要提取网络协议字段") + private Boolean hasProtocol = false; + + @Schema(description = "该防护等级是否需要提取URL字段") + private Boolean hasURL = false; + + @Schema(description = "该防护等级是否需要提取DNS") + private Boolean hasDNS = false; + + @Schema(description = "该防护等级是处置防护对象的全流量or单向流量") + private Boolean isFullFlow = false; + + @Schema(description = "该防护等级防护对象ip地址是否作为源ip地址") + private Boolean isProtectObjectIPSrc = false; + + @JsonProperty("template_used_times") + @Schema(description = "防御策略模板使用次数", example = "20", accessMode = Schema.AccessMode.READ_ONLY) + private Integer usedTimes; + + @JsonProperty("running_tasks") + @Schema(description = "防御策略模板已运行的任务数量", example = "30", accessMode = Schema.AccessMode.READ_ONLY) + private Integer runningTasks; + + @JsonProperty("create_user_id") + @Schema(description = "防御策略模板创建人ID", example = "1", accessMode = Schema.AccessMode.READ_ONLY) + private Integer createUserId; + + @JsonProperty("create_user_name") + @Schema(description = "防御策略模板创建人名称", example = "xxx", accessMode = Schema.AccessMode.READ_ONLY) + private String createUsername; + + @JsonProperty("create_user_depart") + @Schema(description = "防御策略模板创建人处室", example = "xxx", accessMode = Schema.AccessMode.READ_ONLY) + private String createDepart; + + @JsonProperty("audit_status") + @Schema(description = "防御策略模板审核状态(0为未审核,1为已退回,2为审核通过)", example = "1", accessMode = Schema.AccessMode.READ_ONLY) + private String auditStatus; + + @JsonProperty("template_display_id") + @Schema(description = "策略模板展示id", accessMode = Schema.AccessMode.READ_ONLY) + private String templateDisplayId; + + @JsonProperty("audit_user_name") + @Schema(description = "审核用户名称", example = "user11") + private String auditUserName; + @JsonProperty("audit_user_id") + @Schema(description = "审核用户id", example = "11111") + private String auditUserId; + @JsonProperty("audit_user_depart") + @Schema(description = "审核用户部门", example = "部门1") + private String auditUserDepart; + + @JsonProperty("create_time") + @Schema(description = "新建时间") + private String createTime; + + @JsonProperty("update_time") + @Schema(description = "更新时间") + private String updateTime; +} diff --git a/src/main/java/com/realtime/protection/server/defense/templatenew/TemplateController.java b/src/main/java/com/realtime/protection/server/defense/templatenew/TemplateController.java new file mode 100644 index 0000000..f1fc607 --- /dev/null +++ b/src/main/java/com/realtime/protection/server/defense/templatenew/TemplateController.java @@ -0,0 +1,208 @@ +package com.realtime.protection.server.defense.templatenew; + +import com.realtime.protection.configuration.entity.defense.template.TemplateNew; +import com.realtime.protection.configuration.response.ResponseResult; +import com.realtime.protection.configuration.utils.enums.audit.AuditStatusEnum; +import jakarta.validation.Valid; +import jakarta.validation.constraints.Min; +import org.springframework.web.bind.annotation.*; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +@RestController +@RequestMapping("/templatenew/") +public class TemplateController implements TemplateNewCpntrollerApi{ + private final TemplateService templateService; + + public TemplateController(TemplateService templateService) { + this.templateService = templateService; + } + + + // @Override + @PostMapping("/new") + public ResponseResult newTemplate(@RequestBody @Valid TemplateNew template) { + + Integer templateId = templateService.newTemplate(template); + + if (templateId > 0) { + return ResponseResult.ok() + .setData("template_id", templateId) + .setData("success", true); + } + + return ResponseResult.error() + .setData("template_id", null) + .setData("success", false); + } + + /* + 删 改 查 审核。。。 + */ + + @Override + @GetMapping("/query") + public ResponseResult queryTemplates(@RequestParam(value = "template_name", required = false) String templateName, + @RequestParam(value = "source_system", required = false) String sourceSystem, + @RequestParam(value = "create_user_name", required = false) String createUserName, + @RequestParam(value = "template_id", required = false) Integer templateId, + @RequestParam(value = "audit_status", required = false) Integer auditStatus, + @RequestParam(value = "event_type", required = false) String eventType, + @RequestParam(value = "protect_level", required = false) Integer protectLevel, + + @RequestParam("page") @Min(1) Integer page, + @RequestParam("page_size") @Min(1) Integer pageSize) { + List templates = templateService.queryTemplates( + templateName, sourceSystem, createUserName, templateId, + auditStatus,eventType,protectLevel, + page, pageSize + ); + + return ResponseResult.ok() + .setData("templates", templates) + .setData("total_num", templateService.queryTemplateTotalNum( + templateName, sourceSystem, createUserName, templateId, + auditStatus, eventType, protectLevel)); + } + + @Override + @GetMapping("/{templateId}/query") + public ResponseResult queryTemplate(@PathVariable Integer templateId) { + TemplateNew template = templateService.queryTemplate(templateId); + if (template == null) { + return ResponseResult.invalid() + .setMessage("无效的策略模板ID,也许该模板不存在?"); + } + return ResponseResult.ok().setData("template", template); + } + +// @Override +// @GetMapping("/query/level") +// public ResponseResult queryTemplateProtectLevels() { +// List