From 776c7c0f6d806de8434231e2ba164c606647fa9d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=BE=E5=B2=B3=20=E9=99=88?= Date: Fri, 5 Jan 2024 09:32:19 +0800 Subject: [PATCH] =?UTF-8?q?1.=20=E6=B7=BB=E5=8A=A0HandlerMethodValidationE?= =?UTF-8?q?xception=E5=85=A8=E5=B1=80=E5=BC=82=E5=B8=B8=E5=99=A8=202.=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E9=98=B2=E6=8A=A4=E5=AF=B9=E8=B1=A1=E7=B1=BB?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0Service=E3=80=81Mapper=E3=80=81Contr?= =?UTF-8?q?oller=EF=BC=88Controller=E4=BB=8D=E7=84=B6=E5=9C=A8=E5=BC=80?= =?UTF-8?q?=E5=8F=91=E4=B8=AD=EF=BC=89=203.=20page=E5=92=8CpageSize?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0@Min=E6=B3=A8=E8=A7=A3=EF=BC=8C=E9=99=90?= =?UTF-8?q?=E5=AE=9A=E6=9C=80=E4=BD=8E=E6=95=B4=E6=95=B0=E5=A4=A7=E5=B0=8F?= =?UTF-8?q?=204.=20=E5=B0=86=E6=89=80=E6=9C=89=E7=9A=84=E6=89=B9=E9=87=8F?= =?UTF-8?q?=E7=B1=BB=E5=9E=8B=E6=96=B9=E6=B3=95=E4=BF=AE=E6=94=B9=E4=B8=BA?= =?UTF-8?q?forEach=EF=BC=8C=E5=9C=A8SpringBoot=E4=B8=AD=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E6=89=A7=E8=A1=8C=E5=B9=B6=E6=95=B4=E5=90=88=E4=B8=BA=E4=BA=8B?= =?UTF-8?q?=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/defense/object/ProtectObject.java | 45 ++++++++++++++++ .../entity/defense/template/Template.java | 8 +-- .../configuration/entity/task/Task.java | 16 ++---- .../exception/GlobalExceptionHandler.java | 8 ++- .../object/ProtectObjectController.java | 4 ++ .../defense/object/ProtectObjectMapper.java | 25 +++++++++ .../defense/object/ProtectObjectService.java | 53 +++++++++++++++++++ .../defense/template/TemplateController.java | 31 ++++++++--- .../defense/template/TemplateMapper.java | 6 +++ .../defense/template/TemplateService.java | 34 ++++++++---- .../server/task/TaskController.java | 14 ++--- .../protection/server/task/TaskMapper.java | 2 +- .../protection/server/task/TaskService.java | 40 +++++--------- .../resources/mappers/ProtectObjectMapper.xml | 10 ++++ src/main/resources/mappers/TaskMapper.xml | 30 +++++++---- src/main/resources/mappers/TemplateMapper.xml | 29 ++++++++++ .../object/ProtectObjectServiceTest.java | 26 +++++++++ .../defense/template/TemplateServiceTest.java | 22 +++++++- .../server/task/TaskServiceTest.java | 6 +-- 19 files changed, 327 insertions(+), 82 deletions(-) create mode 100644 src/main/java/com/realtime/protection/configuration/entity/defense/object/ProtectObject.java create mode 100644 src/main/java/com/realtime/protection/server/defense/object/ProtectObjectController.java create mode 100644 src/main/java/com/realtime/protection/server/defense/object/ProtectObjectMapper.java create mode 100644 src/main/java/com/realtime/protection/server/defense/object/ProtectObjectService.java create mode 100644 src/main/resources/mappers/ProtectObjectMapper.xml create mode 100644 src/test/java/com/realtime/protection/server/defense/object/ProtectObjectServiceTest.java 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