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