diff --git a/src/main/java/com/realtime/protection/configuration/entity/task/TaskCommandInfo.java b/src/main/java/com/realtime/protection/configuration/entity/task/TaskCommandInfo.java index 1218dbc..d6b060e 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/task/TaskCommandInfo.java +++ b/src/main/java/com/realtime/protection/configuration/entity/task/TaskCommandInfo.java @@ -50,7 +50,7 @@ public class TaskCommandInfo { @Schema(description = "局点", example = "123456") @JsonProperty("distribute_point") - private Integer distributePoint; + private String distributePoint; @Schema(description = "事件类型(策略模板名称)", example = "DDOS") @JsonProperty("event_type") @@ -123,6 +123,7 @@ public class TaskCommandInfo { this.taskType = original.taskType; this.taskAct = original.taskAct; this.distributePoint = original.distributePoint; + this.eventType = original.eventType; this.frequency = original.frequency; this.startTime = original.startTime; this.endTime = original.endTime; 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 c93897d..cb6cbcf 100644 --- a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java +++ b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java @@ -32,7 +32,7 @@ public class AlertMessageService { public void processAlertMessage(AlertMessage alertMessage) { //根据告警信息——>生成指令 List dynamicTaskCommandInfoList = generateDynamicCommand(alertMessage); - //获取任务状态,设置指令的isValid字段,且是否生成指令入库(除了RUNING\PAUSED状态,其他都不入库)。 + //获取任务状态,设置指令的isValid字段,且是否生成指令入库(除了RUNING\PAUSED状态,其他都不入command库)。 Integer taskStatus = dynamicTaskCommandInfoList.get(0).getTaskStatus(); //获取任务类型,设置指令的isJudged字段。 Integer taskType = dynamicTaskCommandInfoList.get(0).getTaskType(); @@ -89,7 +89,7 @@ public class AlertMessageService { alertMessage.getProtectIsSrcOrDst(), templateProtectLevel); //根据fiveTuple生成动态指令信息 - List dynamicCommandInfoList = new ArrayList(); + List dynamicCommandInfoList = new ArrayList<>(); if (fiveTupleWithMaskNew.size() == 2){ TaskCommandInfo dynamicCommandInfo_bi = new TaskCommandInfo(); dynamicCommandInfo_bi.copyTaskCommandInfo(dynamicCommandInfo); @@ -203,7 +203,7 @@ public class AlertMessageService { peer.setPort(null); peer.setMaskPort(null); } - List newFiveTupleWithMask = new ArrayList(); + List newFiveTupleWithMask = new ArrayList<>(); //生成指令 FiveTupleWithMask command1 = new FiveTupleWithMask(); command1.setSourceIP(peer.getIP()); diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java index 9d6ff73..0a95937 100644 --- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java +++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleController.java @@ -14,7 +14,9 @@ import org.springframework.web.multipart.MultipartFile; import java.io.IOException; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; +import java.util.ArrayList; import java.util.List; +import java.util.Map; @RestController @@ -163,7 +165,7 @@ public class StaticRuleController implements StaticRuleControllerApi { public ResponseResult updateStaticRuleAuditStatus(@PathVariable Integer id, @PathVariable Integer auditStatus) { if (id <= 0 || auditStatus < 0 || auditStatus > 2) { return new ResponseResult(400, "id or status is invalid") - .setData("whiteobj_id", id) + .setData("staticRule_id", id) .setData("success", false); } return ResponseResult.ok() @@ -173,4 +175,29 @@ public class StaticRuleController implements StaticRuleControllerApi { } + /** + * 批量修改审核状态 + */ + @PostMapping("/auditbatch") + public ResponseResult updateStaticRuleAuditStatusBatch(@RequestBody Map idsWithAuditStatusMap) { + List errorIds = new ArrayList<>(); + for (Map.Entry entry: idsWithAuditStatusMap.entrySet()) { + Integer id = entry.getKey(); + Integer auditStatus = entry.getValue(); + if (id <= 0 || auditStatus < 0 || auditStatus > 2) { + errorIds.add(id); + } + } + if (!errorIds.isEmpty()){ + return new ResponseResult(400, "id or status is invalid") + .setData("staticRule_id", errorIds) + .setData("success", false); + } + + return ResponseResult.ok() + .setData("success", staticRuleService.updateAuditStatusBatch(idsWithAuditStatusMap)); + } + + + } diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java index d0d71c0..8cdc9e1 100644 --- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java +++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleMapper.java @@ -6,6 +6,7 @@ import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; import java.util.List; +import java.util.Map; @Mapper public interface StaticRuleMapper { @@ -43,4 +44,6 @@ public interface StaticRuleMapper { String static_rule_create_username, String ip); List queryStaticRuleByIds(List ids); + + void updateAuditStatusByIdBatch(@Param("idWithAuditStatusBatch")Map idWithAuditStatusBatch); } diff --git a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java index 5cb2477..2d51188 100644 --- a/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java +++ b/src/main/java/com/realtime/protection/server/rule/staticrule/StaticRuleService.java @@ -155,7 +155,7 @@ public class StaticRuleService { } List StaticRuleBatch = ListUtils.newArrayListWithExpectedSize(100); - for (StaticRuleObject staticRule : staticRuleList) { + for (StaticRuleObject staticRule : list) { staticRule.setStaticRuleCreateTime(LocalDateTime.now()); StaticRuleBatch.add(staticRule); if (StaticRuleBatch.size() < 100) { @@ -215,4 +215,31 @@ public class StaticRuleService { public List queryStaticRuleByIds(List ids) { return staticRuleMapper.queryStaticRuleByIds(ids); } + + public Object updateAuditStatusBatch(Map idsWithAuditStatusMap) { + + Function, Boolean>> updateStaticRuleAuditStatusFunction = + mapper -> map -> { + if (map == null || map.isEmpty()) { + return false; + } + + Map idWithAuditStatusBatch = new HashMap<>(); + for (Map.Entry item : map.entrySet()) { + idWithAuditStatusBatch.put(item.getKey(), item.getValue()); + if (idWithAuditStatusBatch.size() < 100) { + continue; + } + //mapper指的就是外层函数输入的参数,也就是WhiteListMapper + mapper.updateAuditStatusByIdBatch(idWithAuditStatusBatch); + idWithAuditStatusBatch.clear(); + } + if (!idWithAuditStatusBatch.isEmpty()) { + mapper.updateAuditStatusByIdBatch(idWithAuditStatusBatch); + } + return true; + }; + //实现事务操作 + return sqlSessionWrapper.startBatchSession(StaticRuleMapper.class, updateStaticRuleAuditStatusFunction, idsWithAuditStatusMap); + } } diff --git a/src/main/resources/mappers/AlertMessageMapper.xml b/src/main/resources/mappers/AlertMessageMapper.xml index 39f68d3..e4376d2 100644 --- a/src/main/resources/mappers/AlertMessageMapper.xml +++ b/src/main/resources/mappers/AlertMessageMapper.xml @@ -20,6 +20,10 @@ + + + + @@ -149,12 +153,17 @@ t_task.task_end_time, t_dr.template_id, + t_dr.dynamic_rule_range, t_dr.dynamic_rule_protect_level, - t_task.task_status + t_task.task_status, + + t_tmplate.strategy_template_name from t_task left join realtime_protection.t_dynamic_rule t_dr on (t_task.task_id = t_dr.dynamic_rule_used_task_id and t_dr.dynamic_rule_id = #{dynamicRuleId}) + left join realtime_protection.t_strategy_template t_tmplate on + ( t_dr.template_id = t_tmplate.strategy_template_id ) where t_task.task_id = #{taskId} diff --git a/src/main/resources/mappers/CommandMapper.xml b/src/main/resources/mappers/CommandMapper.xml index 092d9fe..d65fa20 100644 --- a/src/main/resources/mappers/CommandMapper.xml +++ b/src/main/resources/mappers/CommandMapper.xml @@ -9,7 +9,7 @@ MASK_SRC_IP, MASK_SRC_PORT, MASK_DST_IP, MASK_DST_PORT, MASK_PROTOCOL, VALID_TIME, INVALID_TIME, IS_VALID, IS_JUDGED, SEND_TIMES, SUCCESS_TIMES, CREATE_TIME, LAST_UPDATE, IS_DELETED) - values (#{info.UUID}, #{info.taskId}, #{info.taskAct}, #{info.taskName}, #{info.eventType}, #{info.department}, #{info.distributePoint}, + values (#{info.UUID}, #{info.taskId}, #{info.taskAct}, #{info.taskName}, #{info.eventType}, #{info.taskCreateDepart}, #{info.distributePoint}, #{info.frequency}, DEFAULT, #{info.fiveTupleWithMask.sourceIP}, #{info.fiveTupleWithMask.sourcePort}, diff --git a/src/main/resources/mappers/StaticRuleMapper.xml b/src/main/resources/mappers/StaticRuleMapper.xml index 4fe88cd..2025944 100644 --- a/src/main/resources/mappers/StaticRuleMapper.xml +++ b/src/main/resources/mappers/StaticRuleMapper.xml @@ -84,6 +84,20 @@ set static_rule_audit_status = #{auditStatus} where static_rule_id = #{id} + + update t_static_rule + set static_rule_audit_status = CASE static_rule_id + + WHEN #{id} THEN #{auditStatus} + + ELSE static_rule_audit_status + END + WHERE static_rule_id IN + + #{id} + + + delete from t_static_rule where static_rule_id in diff --git a/src/main/resources/mappers/TaskMapper.xml b/src/main/resources/mappers/TaskMapper.xml index 81740b4..ec70a18 100644 --- a/src/main/resources/mappers/TaskMapper.xml +++ b/src/main/resources/mappers/TaskMapper.xml @@ -164,7 +164,7 @@ - + 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 56ae63b..b5f4870 100644 --- a/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java +++ b/src/test/java/com/realtime/protection/server/alertmessage/AlertMessageTest.java @@ -57,6 +57,7 @@ public class AlertMessageTest { object.setDynamicRulePriority(1); object.setDynamicRuleRange("北京"); object.setDynamicRuleProtectLevel(1); + object.setLogRuleId(1L); object.setTemplateId(templates.get(0).getTemplateId()); object.setProtectObjectIds(List.of(new Integer[]{protectObject.get(0).getProtectObjectId()})); Integer dynamicRuleId = dynamicRuleService.newDynamicRuleObject(object); @@ -81,7 +82,7 @@ public class AlertMessageTest { //启动任务 stateChangeService.changeState(2, taskId, false); - for (int i = 0 ; i< 10; i++) { + for (int i = 0 ; i< 5; i++) { AlertMessage alert = new AlertMessage(); FiveTupleWithMask fiveTupleWithMask = new FiveTupleWithMask(); fiveTupleWithMask.setSourceIP("111.1.1." + i); diff --git a/src/test/java/com/realtime/protection/server/rule/staticrule/StaticRuleServiceTest.java b/src/test/java/com/realtime/protection/server/rule/staticrule/StaticRuleServiceTest.java index c829b99..ec25643 100644 --- a/src/test/java/com/realtime/protection/server/rule/staticrule/StaticRuleServiceTest.java +++ b/src/test/java/com/realtime/protection/server/rule/staticrule/StaticRuleServiceTest.java @@ -8,7 +8,9 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; import static org.junit.jupiter.api.Assertions.assertTrue; @@ -101,7 +103,15 @@ public class StaticRuleServiceTest extends ProtectionApplicationTests { List staticRuleObjects = staticRuleService.queryStaticRule(null, null, null, null, 1, 10); System.out.println(staticRuleObjects); } + @Test + void testUpdateStaticRuleAuditStatusBatch(){ + Map map = new HashMap<>(); + map.put(1299, 0); + map.put(1300, 1); + map.put(1301, 1); + System.out.println(staticRuleService.updateAuditStatusBatch(map)); + } }