diff --git a/src/main/java/com/realtime/protection/configuration/entity/defense/object/ProtectObject.java b/src/main/java/com/realtime/protection/configuration/entity/defense/object/ProtectObject.java new file mode 100644 index 0000000..11d1cda --- /dev/null +++ b/src/main/java/com/realtime/protection/configuration/entity/defense/object/ProtectObject.java @@ -0,0 +1,45 @@ +package com.realtime.protection.configuration.entity.defense.object; + +import com.fasterxml.jackson.annotation.JsonProperty; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class ProtectObject { + @JsonProperty("proobj_id") + private Integer protectObjectId; + + @JsonProperty("proobj_name") + @NotNull(message = "proobj_name should not be empty.") + private String protectObjectName; + + @JsonProperty("proobj_system_name") + private String protectObjectSystemName; + + @JsonProperty("proobj_ip_address") + private String protectObjectIPAddress; + + @JsonProperty("proobj_port") + @NotNull(message = "proobj_port should not be empty.") + private Integer protectObjectPort; + + @JsonProperty("proobj_url") + @NotNull(message = "proobj_url should not be empty.") + private String protectObjectURL; + + @JsonProperty("proobj_protocol") + @NotNull(message = "proobj_protocol should not be empty.") + private String protectObjectProtocol; + + @JsonProperty("proobj_audit_status") + private Integer protectObjectAuditStatus; + + @JsonProperty("proobj_create_username") + private String protectObjectCreateUsername; + + @JsonProperty("proobj_create_depart") + private String protectObjectCreateDepart; + + @JsonProperty("proobj_create_userid") + private Integer protectObjectCreateUserId; +} diff --git a/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java b/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java index 91f832a..4174e01 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java +++ b/src/main/java/com/realtime/protection/configuration/entity/defense/template/Template.java @@ -4,20 +4,22 @@ import com.fasterxml.jackson.annotation.JsonProperty; import jakarta.validation.constraints.NotNull; import lombok.Data; +import java.util.List; + @Data public class Template { @JsonProperty("template_id") private Integer templateId; @JsonProperty("template_name") - @NotNull(message = "template name should not be empty") + @NotNull(message = "template name should not be empty.") private String templateName; @JsonProperty("template_elements") - private String[] templateElements; + private List templateElements; @JsonProperty("default_op") - @NotNull(message = "default_op should not be empty") + @NotNull(message = "default_op should not be empty.") private String defaultOp; @JsonProperty("template_running_tasks") diff --git a/src/main/java/com/realtime/protection/configuration/entity/task/Task.java b/src/main/java/com/realtime/protection/configuration/entity/task/Task.java index ea5fd00..4731f4c 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/task/Task.java +++ b/src/main/java/com/realtime/protection/configuration/entity/task/Task.java @@ -13,15 +13,15 @@ public class Task { private Integer taskId; @JsonProperty("task_name") - @NotNull(message = "task_name should not be empty") + @NotNull(message = "task_name should not be empty.") private String taskName; @JsonProperty("task_start_time") - @NotNull(message = "task_start_time should not be empty") + @NotNull(message = "task_start_time should not be empty.") private LocalDateTime taskStartTime; @JsonProperty("task_end_time") - @NotNull(message = "task_end_time should not be empty") + @NotNull(message = "task_end_time should not be empty.") private LocalDateTime taskEndTime; @JsonProperty("task_create_time") @@ -31,27 +31,21 @@ public class Task { private LocalDateTime taskModifyTime; @JsonProperty("task_type") - @NotNull(message = "task_type should not be empty") + @NotNull(message = "task_type should not be empty.") private String taskType; @JsonProperty("task_act") - @NotNull(message = "task_act should not be empty") + @NotNull(message = "task_act should not be empty.") private String taskAct; - // These three attributes will be gained by user in the future - // ----------------------------------------------------------- @JsonProperty("task_create_username") - @NotNull(message = "task_create_username should not be empty") private String taskCreateUsername; @JsonProperty("task_create_depart") - @NotNull(message = "task_create_depart should not be empty") private String taskCreateDepart; @JsonProperty("task_create_userid") - @NotNull(message = "task_create_userid should not be empty") private Integer taskCreateUserId; - // ----------------------------------------------------------- @JsonProperty("static_rule_ids") private List staticRuleIds; diff --git a/src/main/java/com/realtime/protection/configuration/exception/GlobalExceptionHandler.java b/src/main/java/com/realtime/protection/configuration/exception/GlobalExceptionHandler.java index 77ceb74..c3b85ba 100644 --- a/src/main/java/com/realtime/protection/configuration/exception/GlobalExceptionHandler.java +++ b/src/main/java/com/realtime/protection/configuration/exception/GlobalExceptionHandler.java @@ -3,13 +3,13 @@ package com.realtime.protection.configuration.exception; import cn.dev33.satoken.exception.NotLoginException; import cn.dev33.satoken.exception.SaTokenException; import com.realtime.protection.configuration.response.ResponseResult; -import io.swagger.v3.oas.annotations.ExternalDocumentation; import org.apache.ibatis.exceptions.PersistenceException; import org.springframework.context.support.DefaultMessageSourceResolvable; import org.springframework.core.annotation.Order; import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RestControllerAdvice; +import org.springframework.web.method.annotation.HandlerMethodValidationException; import java.util.stream.Collectors; @@ -47,6 +47,12 @@ public class GlobalExceptionHandler { ); } + @Order(2) + @ExceptionHandler(value = HandlerMethodValidationException.class) + public ResponseResult handleHandlerMethodValidationException(HandlerMethodValidationException e) { + return ResponseResult.invalid().setMessage(e.getMessage()); + } + @Order(2) @ExceptionHandler(value = SaTokenException.class) public ResponseResult handleSaTokenException(SaTokenException e) { diff --git a/src/main/java/com/realtime/protection/server/defense/object/ProtectObjectController.java b/src/main/java/com/realtime/protection/server/defense/object/ProtectObjectController.java new file mode 100644 index 0000000..c92b40c --- /dev/null +++ b/src/main/java/com/realtime/protection/server/defense/object/ProtectObjectController.java @@ -0,0 +1,4 @@ +package com.realtime.protection.server.defense.object; + +public class ProtectObjectController { +} diff --git a/src/main/java/com/realtime/protection/server/defense/object/ProtectObjectMapper.java b/src/main/java/com/realtime/protection/server/defense/object/ProtectObjectMapper.java new file mode 100644 index 0000000..54bbb4b --- /dev/null +++ b/src/main/java/com/realtime/protection/server/defense/object/ProtectObjectMapper.java @@ -0,0 +1,25 @@ +package com.realtime.protection.server.defense.object; + +import com.realtime.protection.configuration.entity.defense.object.ProtectObject; +import org.apache.ibatis.annotations.Mapper; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +@Mapper +public interface ProtectObjectMapper { + void newProtectObject(@Param("proobj") ProtectObject protectObject); + + List queryProtectObjects(@Param("proobj_name") String protectObjectName, + @Param("proobj_id") Integer protectObjectId, + @Param("page") Integer page, + @Param("page_size") Integer pageSize); + + ProtectObject queryProtectObject(@Param("proobj_id") Integer protectObjectId); + + Boolean updateProtectObject(@Param("proobj") ProtectObject protectObject); + + Boolean deleteProtectObject(@Param("proobj_id") Integer protectObjectId); + + Boolean changeProtectObjectAuditStatus(@Param("proobj_audit_status") Integer protectObjectAuditStatus); +} diff --git a/src/main/java/com/realtime/protection/server/defense/object/ProtectObjectService.java b/src/main/java/com/realtime/protection/server/defense/object/ProtectObjectService.java new file mode 100644 index 0000000..0d5a4bf --- /dev/null +++ b/src/main/java/com/realtime/protection/server/defense/object/ProtectObjectService.java @@ -0,0 +1,53 @@ +package com.realtime.protection.server.defense.object; + +import com.realtime.protection.configuration.entity.defense.object.ProtectObject; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class ProtectObjectService { + private final ProtectObjectMapper protectObjectMapper; + + public ProtectObjectService(ProtectObjectMapper protectObjectMapper) { + this.protectObjectMapper = protectObjectMapper; + } + + public Integer newProtectObject(ProtectObject protectObject) { + protectObjectMapper.newProtectObject(protectObject); + + if (protectObject.getProtectObjectId() == null) { + return 0; + } + return protectObject.getProtectObjectId(); + } + + @Transactional + public List newProtectObjects(List protectObjectList) { + protectObjectList.forEach(protectObjectMapper::newProtectObject); + return protectObjectList.stream().map(ProtectObject::getProtectObjectId).collect(Collectors.toList()); + } + + public List queryProtectObjects(String protectObjectName, Integer protectObjectId, Integer page, Integer pageSize) { + return protectObjectMapper.queryProtectObjects(protectObjectName, protectObjectId, page, pageSize); + } + + public ProtectObject queryProtectObject(Integer protectObjectId) { + return protectObjectMapper.queryProtectObject(protectObjectId); + } + + public Boolean updateProtectObject(ProtectObject protectObject) { + return protectObjectMapper.updateProtectObject(protectObject); + } + + public Boolean deleteProtectObject(Integer protectObjectId) { + return protectObjectMapper.deleteProtectObject(protectObjectId); + } + + @Transactional + public Boolean deleteProtectObjects(List protectObjectIds) { + return protectObjectIds.stream().allMatch(protectObjectMapper::deleteProtectObject); + } +} diff --git a/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java b/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java index d9a789b..ea1448e 100644 --- a/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java +++ b/src/main/java/com/realtime/protection/server/defense/template/TemplateController.java @@ -3,6 +3,7 @@ package com.realtime.protection.server.defense.template; import com.realtime.protection.configuration.entity.defense.template.Template; import com.realtime.protection.configuration.response.ResponseResult; import jakarta.validation.Valid; +import jakarta.validation.constraints.Min; import org.springframework.web.bind.annotation.*; import java.util.List; @@ -41,16 +42,32 @@ public class TemplateController { } @GetMapping("/query") - public ResponseResult queryTemplate(@RequestParam(value = "template_name", required = false) String templateName, - @RequestParam("page") Integer page, - @RequestParam("page_size") Integer pageSize) { - if (page <= 0 || pageSize <= 0) { - return ResponseResult.invalid() - .setData("template_list", null); - } + public ResponseResult queryTemplates(@RequestParam(value = "template_name", required = false) String templateName, + @RequestParam("page") @Min(1) Integer page, + @RequestParam("page_size") @Min(1) Integer pageSize) { List