From e9313f24205851923a8c4f1278b309562a9f7edf Mon Sep 17 00:00:00 2001 From: Hao Miao <47212914+PushM@users.noreply.github.com> Date: Thu, 25 Jan 2024 17:29:54 +0800 Subject: [PATCH] =?UTF-8?q?1=E3=80=81AlertMessage=E7=B1=BB=E7=A7=BB?= =?UTF-8?q?=E5=8A=A8=E4=BD=8D=E7=BD=AE=202=E3=80=81=E5=8A=A8=E6=80=81?= =?UTF-8?q?=E8=A7=84=E5=88=99=E5=A2=9E=E5=8A=A0=E5=88=A0=E9=99=A4=E5=88=A4?= =?UTF-8?q?=E6=96=AD=EF=BC=8C=E5=A6=82=E6=9E=9C=E4=BD=BF=E7=94=A8=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=A4=84=E4=BA=8E=E8=BF=90=E8=A1=8C=E3=80=81=E6=9A=82?= =?UTF-8?q?=E5=81=9C=EF=BC=8C=E4=B8=8D=E5=85=81=E8=AE=B8=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=99=E3=80=82(=E9=9D=99?= =?UTF-8?q?=E6=80=81=E8=A7=84=E5=88=99=E4=B8=8D=E9=9C=80=E8=A6=81=E5=88=A0?= =?UTF-8?q?=E9=99=A4=E5=88=A4=E6=96=AD=EF=BC=8C=E5=9B=A0=E4=B8=BA=E6=8C=87?= =?UTF-8?q?=E4=BB=A4=E5=B7=B2=E7=BB=8F=E4=B8=8B=E5=8F=91=E3=80=82=E4=BD=86?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=99=E9=85=8D=E7=BD=AE=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E5=88=A0=E9=99=A4=EF=BC=8C=E5=91=8A=E8=AD=A6=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E8=BF=87=E6=9D=A5=E4=BC=9A=E6=89=BE=E4=B8=8D=E5=88=B0?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=A7=84=E5=88=99)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dynamicrule => alert}/AlertMessage.java | 7 +-- .../rule/dynamicrule/DynamicRuleObject.java | 2 +- .../alertmessage/AlertMessageController.java | 2 +- .../alertmessage/AlertMessageMapper.java | 2 +- .../alertmessage/AlertMessageService.java | 2 +- .../rule/dynamicrule/DynamicRuleMapper.java | 2 + .../rule/dynamicrule/DynamicRuleService.java | 14 ++++- .../resources/mappers/AlertMessageMapper.xml | 2 +- .../resources/mappers/DynamicRuleMapper.xml | 8 +++ .../server/alertmessage/AlertMessageTest.java | 3 -- .../rule/dynamic/DynamicRuleServiceTest.java | 52 +++++++++++++++++-- 11 files changed, 80 insertions(+), 16 deletions(-) rename src/main/java/com/realtime/protection/configuration/entity/{rule/dynamicrule => alert}/AlertMessage.java (80%) diff --git a/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/AlertMessage.java b/src/main/java/com/realtime/protection/configuration/entity/alert/AlertMessage.java similarity index 80% rename from src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/AlertMessage.java rename to src/main/java/com/realtime/protection/configuration/entity/alert/AlertMessage.java index 076689d..c9c36cf 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/AlertMessage.java +++ b/src/main/java/com/realtime/protection/configuration/entity/alert/AlertMessage.java @@ -1,11 +1,13 @@ -package com.realtime.protection.configuration.entity.rule.dynamicrule; +package com.realtime.protection.configuration.entity.alert; + import com.fasterxml.jackson.annotation.JsonProperty; import com.realtime.protection.configuration.entity.task.FiveTupleWithMask; +import com.realtime.protection.configuration.kafka.KafkaMessage; import lombok.Data; @Data -public class AlertMessage { +public class AlertMessage implements KafkaMessage { @JsonProperty("task_id") private Long taskId; @@ -31,4 +33,3 @@ public class AlertMessage { private String alertMessageUUID; } - diff --git a/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/DynamicRuleObject.java b/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/DynamicRuleObject.java index 42771c8..f9f4590 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/DynamicRuleObject.java +++ b/src/main/java/com/realtime/protection/configuration/entity/rule/dynamicrule/DynamicRuleObject.java @@ -58,7 +58,7 @@ public class DynamicRuleObject { private Integer dynamicRuleCreateUserId; @JsonProperty("dynamic_rule_used_task_id") @Schema(description = "使用该动态规则的任务ID", accessMode = Schema.AccessMode.READ_ONLY) - private Integer dynamicRuleUsedTaskId; + private Long dynamicRuleUsedTaskId; //前端不发送事件类型和来源系统了,而是根据事件类型和来源系统确定策略模板id,发过来template_id @JsonProperty("dynamic_rule_source_system") diff --git a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageController.java b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageController.java index 9784461..f08a42d 100644 --- a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageController.java +++ b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageController.java @@ -1,6 +1,6 @@ package com.realtime.protection.server.alertmessage; -import com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage; +import com.realtime.protection.configuration.entity.alert.AlertMessage; import com.realtime.protection.configuration.response.ResponseResult; import jakarta.validation.Valid; import lombok.extern.slf4j.Slf4j; diff --git a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageMapper.java b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageMapper.java index e4ac9c0..212d801 100644 --- a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageMapper.java +++ b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageMapper.java @@ -2,7 +2,7 @@ package com.realtime.protection.server.alertmessage; import com.baomidou.dynamic.datasource.annotation.DS; import com.realtime.protection.configuration.entity.defense.template.ProtectLevel; -import com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage; +import com.realtime.protection.configuration.entity.alert.AlertMessage; import com.realtime.protection.configuration.entity.task.TaskCommandInfo; import org.apache.ibatis.annotations.Mapper; diff --git a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java index 2f11849..bb325e8 100644 --- a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java +++ b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java @@ -2,7 +2,7 @@ package com.realtime.protection.server.alertmessage; import com.baomidou.dynamic.datasource.annotation.DSTransactional; import com.realtime.protection.configuration.entity.defense.template.ProtectLevel; -import com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage; +import com.realtime.protection.configuration.entity.alert.AlertMessage; import com.realtime.protection.configuration.entity.task.FiveTupleWithMask; import com.realtime.protection.configuration.entity.task.TaskCommandInfo; import com.realtime.protection.configuration.utils.enums.StateEnum; diff --git a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleMapper.java b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleMapper.java index 2d85c29..04b9e73 100644 --- a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleMapper.java +++ b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleMapper.java @@ -45,4 +45,6 @@ public interface DynamicRuleMapper { String sourceSystem, String creator); List queryDynamicRuleByIds(List ids); + + Integer queryTaskStatusBydynamicRuleId(Integer dynamicRuleId); } diff --git a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleService.java b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleService.java index 326d3e7..6b56bfa 100644 --- a/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleService.java +++ b/src/main/java/com/realtime/protection/server/rule/dynamicrule/DynamicRuleService.java @@ -4,6 +4,7 @@ import com.alibaba.excel.util.ListUtils; import com.realtime.protection.configuration.entity.defense.template.Template; import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject; import com.realtime.protection.configuration.utils.SqlSessionWrapper; +import com.realtime.protection.configuration.utils.enums.StateEnum; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -72,8 +73,17 @@ public class DynamicRuleService { public void deleteDynamicRuleObject(Integer dynamicRuleId) { - //不需要使用 join - //在数据库中设置了级联删除 ON DELETE CASCADE,在删除在从父表中删除数据时自动删除子表中的数据 + //根据任务状态判断能否删除 + Integer taskStatus = dynamicRuleMapper.queryTaskStatusBydynamicRuleId(dynamicRuleId); + switch (StateEnum.getStateEnumByNum(taskStatus)){ + case RUNNING: + throw new IllegalArgumentException("使用该动态规则的任务处于运行状态"); + case PAUSED: + throw new IllegalArgumentException("使用该动态规则的任务处于暂停状态"); + default: + break; + } + //不需要使用 join,在数据库中设置了级联删除 ON DELETE CASCADE,在删除在从父表中删除数据时自动删除子表中的数据 dynamicRuleMapper.deleteDynamicRuleObject(dynamicRuleId); } diff --git a/src/main/resources/mappers/AlertMessageMapper.xml b/src/main/resources/mappers/AlertMessageMapper.xml index 6f12b7d..f111079 100644 --- a/src/main/resources/mappers/AlertMessageMapper.xml +++ b/src/main/resources/mappers/AlertMessageMapper.xml @@ -34,7 +34,7 @@ - + diff --git a/src/main/resources/mappers/DynamicRuleMapper.xml b/src/main/resources/mappers/DynamicRuleMapper.xml index dc5bac6..c4759d3 100644 --- a/src/main/resources/mappers/DynamicRuleMapper.xml +++ b/src/main/resources/mappers/DynamicRuleMapper.xml @@ -237,5 +237,13 @@ + + \ No newline at end of file diff --git a/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java b/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java index 2e4161f..e03833e 100644 --- a/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java +++ b/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java @@ -1,8 +1,5 @@ package com.realtime.protection.server.alertmessage; -import com.github.xiaoymin.knife4j.annotations.Ignore; -import com.realtime.protection.configuration.entity.rule.dynamicrule.AlertMessage; -import com.realtime.protection.configuration.entity.task.FiveTupleWithMask; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; diff --git a/src/test/java/com/realtime/protection/server/rule/dynamic/DynamicRuleServiceTest.java b/src/test/java/com/realtime/protection/server/rule/dynamic/DynamicRuleServiceTest.java index 54aa742..7945e15 100644 --- a/src/test/java/com/realtime/protection/server/rule/dynamic/DynamicRuleServiceTest.java +++ b/src/test/java/com/realtime/protection/server/rule/dynamic/DynamicRuleServiceTest.java @@ -1,21 +1,36 @@ package com.realtime.protection.server.rule.dynamic; -import com.github.xiaoymin.knife4j.annotations.Ignore; import com.realtime.protection.ProtectionApplicationTests; +import com.realtime.protection.configuration.entity.defense.object.ProtectObject; +import com.realtime.protection.configuration.entity.defense.template.Template; import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject; +import com.realtime.protection.configuration.entity.task.Task; +import com.realtime.protection.server.defense.object.ProtectObjectService; +import com.realtime.protection.server.defense.template.TemplateService; import com.realtime.protection.server.rule.dynamicrule.DynamicRuleService; +import com.realtime.protection.server.task.TaskService; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; +import java.time.LocalDateTime; import java.util.List; @SpringBootTest public class DynamicRuleServiceTest extends ProtectionApplicationTests { private final DynamicRuleService dynamicRuleService; + private final TaskService taskService; + + private final ProtectObjectService protectObjectService; + + private final TemplateService templateService; @Autowired - public DynamicRuleServiceTest(DynamicRuleService dynamicRuleService) { + public DynamicRuleServiceTest(DynamicRuleService dynamicRuleService,TaskService taskService, + ProtectObjectService protectObjectService,TemplateService templateService) { this.dynamicRuleService = dynamicRuleService; + this.taskService = taskService; + this.protectObjectService = protectObjectService; + this.templateService = templateService; } @Test @@ -36,7 +51,38 @@ public class DynamicRuleServiceTest extends ProtectionApplicationTests { @Test void testDeleteDynamicRule() { - // dynamicRuleService.deleteDynamicRuleObject(8); + List protectObject = protectObjectService.queryProtectObjects(null, null, 1, 1); + List