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 b22c34c..c522c8e 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 @@ -109,11 +109,12 @@ public class StaticRuleService { @Transactional public Object deleteStaticRules(List staticRuleIds) { //判断当前静态规则是否能够删除---是否存在任务选择的静态规则?? - - //删除静态规则 -// for (Integer id : staticRuleIds) { -// staticRuleMapper.deleteStaticRule(id); -// } + List staticRuleObjects = staticRuleMapper.queryStaticRuleByIds(staticRuleIds); + for (StaticRuleObject staticRuleObject : staticRuleObjects) { + if (Objects.equals(staticRuleObject.getAuditStatus(), AuditStatusEnum.USING.getNum())) { + throw new IllegalArgumentException("当前静态规则正在使用,无法删除"); + } + } Function, Boolean>> deleteStaticRulesFunction = mapper -> list -> { if (list == null || list.isEmpty()) { diff --git a/src/main/java/com/realtime/protection/server/task/TaskMapper.java b/src/main/java/com/realtime/protection/server/task/TaskMapper.java index 9e6141a..6e6011a 100644 --- a/src/main/java/com/realtime/protection/server/task/TaskMapper.java +++ b/src/main/java/com/realtime/protection/server/task/TaskMapper.java @@ -18,10 +18,12 @@ public interface TaskMapper { void newTask(@Param("task") Task task); void newTaskStaticRuleConcat(@Param("task_id") Long taskId, - @Param("rule_ids") List staticRuleIds); + @Param("rule_ids") List staticRuleIds, + @Param("status") Integer usingStatusNum); void newTaskDynamicRuleConcat(@Param("task_id") Long taskId, - @Param("rule_ids") List dynamicRuleIds); + @Param("rule_ids") List dynamicRuleIds, + @Param("status") Integer usingStatusNum); void newTaskUsingCommandInfo(@Param("info") TaskCommandInfo taskCommandInfo); @@ -40,9 +42,9 @@ public interface TaskMapper { void updateTask(@Param("task") Task task); - void clearTaskConnectedStaticRule(@Param("task_id") Long taskId); + void clearTaskConnectedStaticRule(@Param("task_id") Long taskId, @Param("status")Integer num); - void clearTaskConnectedDynamicRule(@Param("task_id") Long taskId); + void clearTaskConnectedDynamicRule(@Param("task_id") Long taskId, @Param("status")Integer num); void changeTaskAuditStatusWithAudior(@Param("task_id") Long taskId, @Param("audit_status") Integer auditStatus, @Param("auditUserName")String auditUserName, diff --git a/src/main/java/com/realtime/protection/server/task/TaskService.java b/src/main/java/com/realtime/protection/server/task/TaskService.java index fd02677..f432fba 100644 --- a/src/main/java/com/realtime/protection/server/task/TaskService.java +++ b/src/main/java/com/realtime/protection/server/task/TaskService.java @@ -76,7 +76,7 @@ public class TaskService { throw new IllegalArgumentException("部分静态规则已被其他任务使用"); } }); - taskMapper.newTaskStaticRuleConcat(task.getTaskId(), task.getStaticRuleIds()); + taskMapper.newTaskStaticRuleConcat(task.getTaskId(), task.getStaticRuleIds(), AuditStatusEnum.USING.getNum()); } if (task.getDynamicRuleIds() != null && !task.getDynamicRuleIds().isEmpty()) { @@ -89,7 +89,7 @@ public class TaskService { throw new IllegalArgumentException("部分动态规则已被其他任务使用"); } }); - taskMapper.newTaskDynamicRuleConcat(task.getTaskId(), task.getDynamicRuleIds()); + taskMapper.newTaskDynamicRuleConcat(task.getTaskId(), task.getDynamicRuleIds(), AuditStatusEnum.USING.getNum()); } if (task.getTaskType() != TaskTypeEnum.STATIC.getTaskType()) { if (task.getProtectObjectIds() != null && !task.getProtectObjectIds().isEmpty()) { @@ -300,17 +300,16 @@ public class TaskService { //更新task taskMapper.updateTask(task); //重新关联task和protectObjects - taskMapper.newTaskProtectObjectConcat(task.getTaskId(), task.getProtectObjectIds()); - taskMapper.clearTaskConnectedStaticRule(task.getTaskId()); - taskMapper.clearTaskConnectedDynamicRule(task.getTaskId()); + taskMapper.clearTaskConnectedStaticRule(task.getTaskId(), AuditStatusEnum.AUDITED.getNum()); + taskMapper.clearTaskConnectedDynamicRule(task.getTaskId(), AuditStatusEnum.AUDITED.getNum()); if (task.getStaticRuleIds() != null && !task.getStaticRuleIds().isEmpty()) - taskMapper.newTaskStaticRuleConcat(task.getTaskId(), task.getStaticRuleIds()); + taskMapper.newTaskStaticRuleConcat(task.getTaskId(), task.getStaticRuleIds(), AuditStatusEnum.USING.getNum()); if (task.getDynamicRuleIds() != null && !task.getDynamicRuleIds().isEmpty()) - taskMapper.newTaskDynamicRuleConcat(task.getTaskId(), task.getDynamicRuleIds()); + taskMapper.newTaskDynamicRuleConcat(task.getTaskId(), task.getDynamicRuleIds(),AuditStatusEnum.USING.getNum()); return true; } @@ -349,11 +348,12 @@ public class TaskService { if (task == null) { return true; } - +//有的规则被任务选择了,但任务还没有启动,此时规则的状态不是已使用,但used_task_id已经被设置 + //所以应该选择任务的时候就 updateStaticRuleAuditStatusInTask(taskId, AuditStatusEnum.AUDITED); updateDynamicRuleAuditStatusInTask(taskId, AuditStatusEnum.AUDITED); - taskMapper.clearTaskConnectedStaticRule(task.getTaskId()); - taskMapper.clearTaskConnectedDynamicRule(task.getTaskId()); + taskMapper.clearTaskConnectedStaticRule(task.getTaskId(), AuditStatusEnum.AUDITED.getNum()); + taskMapper.clearTaskConnectedDynamicRule(task.getTaskId(), AuditStatusEnum.AUDITED.getNum()); commandMapper.removeCommandsByTaskId(taskId); diff --git a/src/main/resources/mappers/TaskMapper.xml b/src/main/resources/mappers/TaskMapper.xml index 48ca727..6f8681e 100644 --- a/src/main/resources/mappers/TaskMapper.xml +++ b/src/main/resources/mappers/TaskMapper.xml @@ -24,6 +24,7 @@ UPDATE t_static_rule SET static_rule_used_task_id = #{task_id} + static_rule_audit_status = #{status} WHERE static_rule_id IN @@ -36,6 +37,7 @@ UPDATE t_dynamic_rule SET dynamic_rule_used_task_id = #{task_id} + audit_status = #{status} WHERE dynamic_rule_id IN @@ -329,6 +331,7 @@ + @@ -497,6 +500,7 @@ t_task.task_start_time, t_task.task_end_time, + t_task.event_type, INET_NTOA(tsr.static_rule_sip) as static_rule_sip, tsr.static_rule_sport,