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 6900943..bd38141 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 @@ -1,8 +1,6 @@ package com.realtime.protection.configuration.entity.rule.dynamicrule; -import com.alibaba.excel.annotation.ExcelIgnore; import com.fasterxml.jackson.annotation.JsonProperty; -import com.realtime.protection.configuration.entity.defense.object.ProtectObject; import com.realtime.protection.configuration.utils.enums.audit.AuditStatusEnum; import com.realtime.protection.configuration.utils.enums.audit.AuditStatusValidator; import io.swagger.v3.oas.annotations.media.Schema; @@ -46,19 +44,7 @@ public class DynamicRuleObject { @Schema(description = "动态规则创建用户所属部门", accessMode = Schema.AccessMode.READ_ONLY) private String dynamicRuleCreateDepart; - //动态规则选择的防护对象ids? - @NotNull(message = "防护对象不能为NULL") - @NotEmpty(message = "防护对象不能为空") - @JsonProperty("protect_object_ids") - @Schema(description = "请求时发送防护对象ID", accessMode = Schema.AccessMode.WRITE_ONLY, requiredMode = Schema.RequiredMode.REQUIRED) - private List protectObjectIds; - @JsonProperty("protect_objects") - @Schema(description = "响应时回复防护对象完整信息", accessMode = Schema.AccessMode.READ_ONLY) - private List protectObjects; - @JsonProperty("strategy_template_name") - @Schema(description = "动态规则选择的策略模板", accessMode = Schema.AccessMode.READ_ONLY) - private String templateName; //还没有建立外键 @@ -73,40 +59,23 @@ public class DynamicRuleObject { @JsonProperty("dynamic_rule_source_system") @Schema(description = "动态规则数据来源系统", example = "bw系统", requiredMode = Schema.RequiredMode.REQUIRED) private String dynamicRuleSourceSystem; - @JsonProperty("dynamic_rule_event_type") - @Schema(description = "动态规则事件类型", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) - private String dynamicRuleEventType; - @NotNull - @JsonProperty("template_id") - @Schema(description = "策略模板id", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) - private Integer templateId; -// @NotNull - @JsonProperty("dynamic_rule_protect_level") - @Max(value = 3) - @Min(value = 1) - @Schema(description = "防护等级:1代表日常态、2代表应急态、3代表紧急态", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) - private Integer dynamicRuleProtectLevel; - @NotNull +// @NotNull @JsonProperty("dynamic_rule_priority") - @Schema(description = "优先级", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) +// @Schema(description = "优先级", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) private Integer dynamicRulePriority; - @NotNull +// @NotNull // @JsonProperty("dynamic_rule_range") // @Schema(description = "范围", example = "北京", requiredMode = Schema.RequiredMode.REQUIRED) // private String dynamicRuleRange; // @NotNull @JsonProperty("dynamic_rule_frequency") - @Schema(description = "频率", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) +// @Schema(description = "频率", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) private Integer dynamicRuleFrequency; - @NotNull - @JsonProperty("log_rule_id") - @Schema(description = "筛选条件-日志规则id", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) - private Long logRuleId; +// @NotNull @JsonProperty("dynamic_rule_audit_status") - @ExcelIgnore @Schema(description = "动态规则审核状态(0为未审核,1为已退回,2为审核通过)", example = "2", accessMode = Schema.AccessMode.READ_ONLY) private Integer auditStatus; @@ -120,6 +89,14 @@ public class DynamicRuleObject { @Schema(description = "审核用户部门", example = "部门1") private String auditUserDepart; + @JsonProperty("bw_sql") + @Schema(description = "BW系统所需sql", example = "select * from table1 where rule_id=12222") + private String bwSql; + + @JsonProperty("description") + @Schema(description = "动态规则描述", example = "动态规则描述") + private String description; + public void checkAuditStatusValidate(AuditStatusEnum newAuditStatus) { if (!List.of(AuditStatusEnum.AUDITED.getNum(), AuditStatusEnum.USING.getNum()).contains(this.getAuditStatus())) { throw new IllegalArgumentException("规则《" + this.getDynamicRuleName() + "》原审批状态非法"); diff --git a/src/main/java/com/realtime/protection/configuration/entity/rule/staticrule/StaticRuleObject.java b/src/main/java/com/realtime/protection/configuration/entity/rule/staticrule/StaticRuleObject.java index 02836fb..fd8c315 100644 --- a/src/main/java/com/realtime/protection/configuration/entity/rule/staticrule/StaticRuleObject.java +++ b/src/main/java/com/realtime/protection/configuration/entity/rule/staticrule/StaticRuleObject.java @@ -138,8 +138,8 @@ public class StaticRuleObject { @ExcelProperty("优先级") @Max(value = 3) @Min(value = 1) - @Schema(description = "优先级,1代表高2代表中3代表低", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) - private Integer staticRulePriority; + @Schema(description = "优先级,1代表高2代表中3代表低", example = "1") + private Integer staticRulePriority = 1; // @JsonProperty("static_rule_range") // @ExcelProperty("范围") // @Schema(description = "范围", example = "北京", requiredMode = Schema.RequiredMode.REQUIRED) @@ -147,7 +147,7 @@ public class StaticRuleObject { @JsonProperty("static_rule_frequency") @ExcelIgnore @Min(value = 1) - @Schema(description = "频率,最低为1", example = "1", requiredMode = Schema.RequiredMode.REQUIRED) + @Schema(description = "频率,最低为1", example = "1") private Integer staticRuleFrequency = 2; @JsonProperty("audit_user_name") 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 4b60c74..099ad41 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 @@ -1,6 +1,7 @@ package com.realtime.protection.configuration.entity.task; import com.fasterxml.jackson.annotation.JsonProperty; +import com.realtime.protection.configuration.entity.defense.object.ProtectObject; import io.swagger.v3.oas.annotations.media.Schema; import jakarta.validation.constraints.Future; import jakarta.validation.constraints.NotNull; @@ -101,4 +102,40 @@ public class Task { @JsonProperty("audit_user_depart") @Schema(description = "审核用户部门", example = "部门1") private String auditUserDepart; + + + /* + 策略模板(事件类型、防护等级)都移动到任务表中 + */ + @JsonProperty("event_type") + @Schema(description = "事件类型", example = "反射型ddos") + private String eventType; + + @JsonProperty("protect_level") + @Schema(description = "防护等级", example = "低=1,中=2,高=3") + private Integer protectLevel; + + @JsonProperty("template_id") + @Schema(description = "策略模板ID", example = "1") + private Integer templateId; + + @JsonProperty("template_name") + @Schema(description = "策略模板名称", example = "策略模板1") + private String templateName; + + @JsonProperty("source_system") + @Schema(description = "数据来源系统", example = "bw系统") + private String sourceSystem; + + @JsonProperty("protect_object_ids") + @Schema(description = "防护对象ID列表", example = "[1, 2, 3]") + private List protectObjectIds; + + @JsonProperty("protect_objects") + @Schema(description = "完整防护对象列表", example = "[{protect_object_id: 1, protect_object_name: '北京'}, {protect_object_id: 2, protect_object_name: '上海'}]", + accessMode = Schema.AccessMode.READ_ONLY) + private List protectObjects; + + + } 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 53ef8c1..32d9900 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 @@ -61,9 +61,9 @@ public class TaskCommandInfo { private String eventType; @Schema(description = "指令下发频率", example = "30") - @NotNull(message = "指令下发频率不能为空。") +// @NotNull(message = "指令下发频率不能为空。") @JsonProperty("frequency") - private Integer frequency; + private Integer frequency = 3; @Schema(description = "任务开始时间", example = "2025-10-14T10:23:33") @NotNull(message = "任务开始时间不能为空。") 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 a4c8389..585fe03 100644 --- a/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java +++ b/src/main/java/com/realtime/protection/server/alertmessage/AlertMessageService.java @@ -22,8 +22,7 @@ public class AlertMessageService { private final AlertMessageMapper alertMessageMapper; public AlertMessageService( - CommandService commandService, - AlertMessageMapper alertMessageMapper) { + CommandService commandService, AlertMessageMapper alertMessageMapper) { this.commandService = commandService; this.alertMessageMapper = alertMessageMapper; } 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 bb05eb8..ff2d536 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 @@ -15,14 +15,10 @@ public interface DynamicRuleMapper { //新建动态规则 void newDynamicRule(@Param("object") DynamicRuleObject dynamicRuleObject); - //新建动态规则与保护对象关联 - Boolean newDynamicRulProtectObjectConcat(long dynamicRuleId, Integer protectObjectId); - void deleteDynamicRuleObject(Integer dynamicRuleId); DynamicRuleObject queryDynamicRuleById(Integer dynamicRuleId); - List queryProtectObjectByRuleId(Integer dynamicRuleId); Boolean updateDynamicRuleObject(@Param("dynamicRuleId") Integer dynamicRuleId, @Param("object") DynamicRuleObject dynamicRuleObject); @@ -36,12 +32,6 @@ public interface DynamicRuleMapper { String auditUserName, String createDate, Integer page, Integer pageSize); - void deleteDynamicRuleProtectObjectConcat(Integer dynamicRuleId); - - TemplateNew queryTemplateByRuleId(Integer dynamicRuleId); - - boolean newDynamicRulProtectObjectsConcat(Integer dynamicRuleId, List protectObjectIds); - boolean queryProtectObjectById(Integer protectObjectId); Integer queryDynamicRuleTotalNum(String dynamicRuleName, 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 989543c..5b4ee73 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 @@ -1,7 +1,6 @@ package com.realtime.protection.server.rule.dynamicrule; import com.alibaba.excel.util.ListUtils; -import com.realtime.protection.configuration.entity.defense.template.TemplateNew; import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject; import com.realtime.protection.configuration.utils.Counter; import com.realtime.protection.configuration.utils.SqlSessionWrapper; @@ -33,13 +32,6 @@ public class DynamicRuleService { @Transactional public Integer newDynamicRuleObject(DynamicRuleObject dynamicRule) { - //判断protectObject id是否有效 - boolean ProtectObjIdValid = dynamicRule.getProtectObjectIds().stream() - .allMatch(dynamicRuleMapper::queryProtectObjectById); - if (!ProtectObjIdValid) { - throw new IllegalArgumentException("protect object id is invalid"); - } - dynamicRule.setDynamicRuleDisplayId( "DTGZ-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) @@ -48,11 +40,8 @@ public class DynamicRuleService { ); dynamicRuleMapper.newDynamicRule(dynamicRule); - Integer dynamicRuleId = dynamicRule.getDynamicRuleId(); - dynamicRule.getProtectObjectIds().forEach( - protectObjectId -> dynamicRuleMapper.newDynamicRulProtectObjectConcat(dynamicRuleId, protectObjectId)); - return dynamicRuleId; + return dynamicRule.getDynamicRuleId(); } //批量新建多个动态规则 @@ -117,20 +106,7 @@ public class DynamicRuleService { //查询DynamicRule DynamicRuleObject dynamicRuleObject = dynamicRuleMapper.queryDynamicRuleById(dynamicRuleId); if (dynamicRuleObject == null){ - throw new IllegalArgumentException("dynamic rule id is invalid"); - } - //查询DynamicRule关联的ProtectObject - dynamicRuleObject.setProtectObjects(dynamicRuleMapper.queryProtectObjectByRuleId(dynamicRuleId)); - //查询DynamicRule关联的template详细信息 - TemplateNew template = dynamicRuleMapper.queryTemplateByRuleId(dynamicRuleId); - if (template == null){ - //template在表中删除了,需要重新设置template(感觉这种情况不多见) - dynamicRuleObject.setDynamicRuleSourceSystem(null); - dynamicRuleObject.setDynamicRuleEventType(null); - }else{ - dynamicRuleObject.setDynamicRuleSourceSystem(template.getSourceSystem()); - dynamicRuleObject.setDynamicRuleEventType(template.getTemplateName()); - dynamicRuleObject.setDynamicRuleProtectLevel(Integer.valueOf(template.getProtectLevel())); + throw new IllegalArgumentException("动态规则不存在"); } return dynamicRuleObject; @@ -139,22 +115,24 @@ public class DynamicRuleService { @Transactional public boolean updateDynamicRuleObject(Integer dynamicRuleId, DynamicRuleObject dynamicRuleObject) { //更新DynamicRule - dynamicRuleObject.setDynamicRuleModifyTime(LocalDateTime.now()); + +// dynamicRuleMapper Boolean idValid = dynamicRuleMapper.updateDynamicRuleObject(dynamicRuleId, dynamicRuleObject); if (!idValid) { - throw new IllegalArgumentException("dynamic rule id is invalid"); + throw new IllegalArgumentException("动态规则id无效"); } + /* //删除DynamicRule关联的ProtectObject dynamicRuleMapper.deleteDynamicRuleProtectObjectConcat(dynamicRuleId); //新增DynamicRule关联的ProtectObject boolean ProtectObjIdValid = dynamicRuleObject.getProtectObjectIds().stream() .allMatch(dynamicRuleMapper::queryProtectObjectById); if (!ProtectObjIdValid) { - throw new IllegalArgumentException("protect object id is invalid"); + throw new IllegalArgumentException("防护对象id无效"); } - - return dynamicRuleMapper.newDynamicRulProtectObjectsConcat(dynamicRuleId, dynamicRuleObject.getProtectObjectIds()); +*/ + return idValid; } // 批量删除 @@ -233,11 +211,7 @@ public class DynamicRuleService { return resultMap; } - /** - * 用于任务状态修改时,内部批量更新任务所属动态规则的状态,不需要修改审批人信息 - * @param idsWithAuditStatusMap - * @return - */ + public Object updateAuditStatusBatch(Map idsWithAuditStatusMap) { //校验id和status是否合法 List originalAuditStatusList = dynamicRuleMapper.queryAuditStatusByIds(idsWithAuditStatusMap); diff --git a/src/main/java/com/realtime/protection/server/task/TaskController.java b/src/main/java/com/realtime/protection/server/task/TaskController.java index fd1e8c1..3e1fec1 100644 --- a/src/main/java/com/realtime/protection/server/task/TaskController.java +++ b/src/main/java/com/realtime/protection/server/task/TaskController.java @@ -98,6 +98,7 @@ public class TaskController implements TaskControllerApi { @RequestParam(value = "event_type", required = false) String eventType, @RequestParam(value = "create_time", required = false) LocalDate createTime, @RequestParam(value = "start_time", required = false) LocalDate startTime, + @RequestParam(value = "protect_level", required = false) Integer protectLevel, @RequestParam("page") @Min(1) Integer page, @RequestParam("page_size") @Min(1) Integer pageSize) { @@ -112,11 +113,11 @@ public class TaskController implements TaskControllerApi { } List tasks = taskService.queryTasks(taskStatus, taskType, taskName, taskCreator, auditStatus, taskAct, taskAuditor, taskSource, ruleName, - eventType, createDateStr, startTimeStr, page, pageSize); + eventType, createDateStr, startTimeStr,protectLevel, page, pageSize); return ResponseResult.ok() .setData("task_list", tasks) .setData("total_num", taskService.queryTaskTotalNum(taskStatus, taskType, taskName, taskCreator, auditStatus, - taskAct, taskAuditor, taskSource, ruleName,eventType, createDateStr, startTimeStr)); + taskAct, taskAuditor, taskSource, ruleName,eventType, createDateStr, startTimeStr,protectLevel)); } @Override @@ -140,6 +141,8 @@ public class TaskController implements TaskControllerApi { .setData("success", taskService.updateTask(task)); } + + @Override @GetMapping("/{taskId}/audit/{auditStatus}") public ResponseResult changeTaskAuditStatus(@PathVariable @NotNull @Max(10) Integer auditStatus, @@ -254,11 +257,11 @@ public class TaskController implements TaskControllerApi { public ResponseResult statistics() { return ResponseResult.ok() .setData("total_num", taskService.queryTaskTotalNum(null, null, null, null, null, - null, null, null, null,null,null,null)) + null, null, null, null,null,null,null,null)) .setData("running_num", taskService.queryTaskTotalNum(StateEnum.RUNNING.getStateNum(), null, null, null, null, - null, null, null, null,null,null,null)) + null, null, null, null,null,null,null,null)) .setData("finished_num", taskService.queryTaskTotalNum(StateEnum.FINISHED.getStateNum(), null, null, null, null, - null, null, null, null,null,null,null)) + null, null, null, null,null,null,null,null)) .setData("unaudit_num", taskService.queryAuditTaskTotalNum( AuditStatusEnum.PENDING.getNum() )); diff --git a/src/main/java/com/realtime/protection/server/task/TaskControllerApi.java b/src/main/java/com/realtime/protection/server/task/TaskControllerApi.java index d2f27c8..752efb1 100644 --- a/src/main/java/com/realtime/protection/server/task/TaskControllerApi.java +++ b/src/main/java/com/realtime/protection/server/task/TaskControllerApi.java @@ -193,6 +193,7 @@ public interface TaskControllerApi { @Parameter(name = "task_source", description = "任务来源系统"), @Parameter(name = "rule_name", description = "规则名称"), @Parameter(name = "event_type", description = "事件类型"), + @Parameter(name = "protect_level", description = "防护等级"), @Parameter(name = "create_time", description = "任务创建时间",example = "2021-01-01" ), @Parameter(name = "start_time", description = "任务开始时间",example = "2024-04-25" ), @@ -212,6 +213,7 @@ public interface TaskControllerApi { @RequestParam(value = "event_type", required = false) String eventType, @RequestParam(value = "create_time", required = false) LocalDate createTime, @RequestParam(value = "start_time", required = false) LocalDate startTime, + @RequestParam(value = "protect_level", required = false) Integer protectLevel, @RequestParam("page") @Min(1) Integer page, @RequestParam("page_size") @Min(1) Integer pageSize); 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 de0439a..a13b0ce 100644 --- a/src/main/java/com/realtime/protection/server/task/TaskMapper.java +++ b/src/main/java/com/realtime/protection/server/task/TaskMapper.java @@ -1,5 +1,6 @@ package com.realtime.protection.server.task; +import com.realtime.protection.configuration.entity.defense.object.ProtectObject; import com.realtime.protection.configuration.entity.task.DynamicTaskInfo; import com.realtime.protection.configuration.entity.task.Task; import com.realtime.protection.configuration.entity.task.TaskCommandInfo; @@ -31,6 +32,7 @@ public interface TaskMapper { @Param("event_type")String eventType, @Param("create_date") String createDateStr, @Param("start_date")String startDateStr, + @Param("protect_level")Integer protectLevel, @Param("page") Integer page, @Param("page_size") Integer pageSize); Task queryTask(@Param("task_id") Long taskId); @@ -78,7 +80,8 @@ public interface TaskMapper { @Param("task_create_time") LocalDateTime taskCreateTime, @Param("event_type")String eventType, @Param("create_date")String createDate, - @Param("start_date")String startDate); + @Param("start_date")String startDate, + @Param("protect_level")Integer protectLevel); void updateAuditStatusByIdBatch(@Param("idWithAuditStatusBatch") Map idWithAuditStatusBatch); @@ -94,4 +97,11 @@ public interface TaskMapper { @Param("auditUserName")String auditUserName, @Param("auditUserId")String auditUserId, @Param("auditUserDepart")String auditUserDepart); + + void newTaskProtectObjectConcat(@Param("taskId")Long taskId, + @Param("protectObjectIds")List protectObjectIds); + + void deleteTaskProtectObjectConcat(Long taskId); + + List queryProtectObjectsByTaskId(Long id); } 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 643708d..79e970b 100644 --- a/src/main/java/com/realtime/protection/server/task/TaskService.java +++ b/src/main/java/com/realtime/protection/server/task/TaskService.java @@ -2,6 +2,7 @@ package com.realtime.protection.server.task; import com.alibaba.excel.util.MapUtils; import com.baomidou.dynamic.datasource.annotation.DS; +import com.realtime.protection.configuration.entity.defense.object.ProtectObject; import com.realtime.protection.configuration.entity.rule.dynamicrule.DynamicRuleObject; import com.realtime.protection.configuration.entity.rule.staticrule.StaticRuleObject; import com.realtime.protection.configuration.entity.task.DynamicTaskInfo; @@ -10,6 +11,7 @@ import com.realtime.protection.configuration.entity.task.TaskCommandInfo; import com.realtime.protection.configuration.utils.Counter; import com.realtime.protection.configuration.utils.SqlSessionWrapper; import com.realtime.protection.configuration.utils.enums.StateEnum; +import com.realtime.protection.configuration.utils.enums.TaskTypeEnum; import com.realtime.protection.configuration.utils.enums.audit.AuditStatusEnum; import com.realtime.protection.configuration.utils.enums.audit.AuditStatusValidator; import com.realtime.protection.server.rule.dynamicrule.DynamicRuleMapper; @@ -54,6 +56,7 @@ public class TaskService { // task.setTaskCreateUsername("xxx"); // task.setTaskCreateDepart("xxx"); + task.setTaskDisplayId( "RW-" + LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMdd")) @@ -61,7 +64,6 @@ public class TaskService { + String.format("%06d", counter.generateId("task"))); taskMapper.newTask(task); - if (task.getStaticRuleIds() != null && !task.getStaticRuleIds().isEmpty()) { staticRuleMapper.queryStaticRuleByIds(task.getStaticRuleIds()).forEach(staticRuleObject -> { if (!staticRuleObject.getAuditStatus().equals(AuditStatusEnum.AUDITED.getNum())) { @@ -86,6 +88,17 @@ public class TaskService { }); taskMapper.newTaskDynamicRuleConcat(task.getTaskId(), task.getDynamicRuleIds()); } + if (task.getTaskType() != TaskTypeEnum.STATIC.getTaskType()){ + //校验防护对象是否存在 + boolean ProtectObjIdValid = task.getProtectObjectIds().stream() + .allMatch(dynamicRuleMapper::queryProtectObjectById); + if (!ProtectObjIdValid) { + throw new IllegalArgumentException("部分防护对象不存在"); + } + //任务和防护对象多对多关联建立 + taskMapper.newTaskProtectObjectConcat(task.getTaskId(), task.getProtectObjectIds()); + } + return task.getTaskId(); } @@ -219,10 +232,11 @@ public class TaskService { String taskAct, String taskAuditor, String taskSource, String ruleName, String eventType,String createDateStr, String startDateStr, + Integer protectLevel, Integer page, Integer pageSize) { List tasks = taskMapper.queryTasks(taskStatus, taskType, taskName, taskCreator, auditStatus, - taskAct, taskAuditor, taskSource, ruleName,eventType, createDateStr, startDateStr, page, pageSize); + taskAct, taskAuditor, taskSource, ruleName,eventType, createDateStr, startDateStr,protectLevel, page, pageSize); for (Task task : tasks) { if (task == null) { continue; @@ -243,6 +257,8 @@ public class TaskService { if (task == null) { return null; } + List protectObjects = taskMapper.queryProtectObjectsByTaskId(id); + task.setProtectObjects(protectObjects); task.setStaticRuleIds(taskMapper.queryStaticRuleIdsFromTaskId(task.getTaskId(), List.of(AuditStatusEnum.AUDITED.getNum(), AuditStatusEnum.USING.getNum()))); @@ -260,7 +276,20 @@ public class TaskService { task.setTaskAuditStatus(AuditStatusEnum.PENDING.getNum()); + //校验防护对象是否存在 + boolean ProtectObjIdValid = task.getProtectObjectIds().stream() + .allMatch(dynamicRuleMapper::queryProtectObjectById); + if (!ProtectObjIdValid) { + throw new IllegalArgumentException("部分防护对象不存在"); + } + + //删除task关联的protectObjects + taskMapper.deleteTaskProtectObjectConcat(task.getTaskId()); + //更新task taskMapper.updateTask(task); + //重新关联task和protectObjects + + taskMapper.newTaskProtectObjectConcat(task.getTaskId(), task.getProtectObjectIds()); taskMapper.clearTaskConnectedStaticRule(task.getTaskId()); taskMapper.clearTaskConnectedDynamicRule(task.getTaskId()); @@ -354,9 +383,9 @@ public class TaskService { public Integer queryTaskTotalNum(Integer taskStatus, Integer taskType, String taskName, String taskCreator, Integer auditStatus ,String taskAct, String taskAuditor, String taskSource, String ruleName, - String eventType, String createDate, String startDate) { + String eventType, String createDate, String startDate,Integer protectLevel) { return taskMapper.queryTaskTotalNum(taskStatus, taskType, taskName, taskCreator, auditStatus, - taskAct, taskAuditor, taskSource, ruleName,null, eventType, createDate, startDate); + taskAct, taskAuditor, taskSource, ruleName,null, eventType, createDate, startDate, protectLevel); } public Boolean updateAuditStatusBatch(Map idsWithAuditStatusMap) { diff --git a/src/main/resources/mappers/AlertMessageMapper.xml b/src/main/resources/mappers/AlertMessageMapper.xml index 1505295..9b22ddd 100644 --- a/src/main/resources/mappers/AlertMessageMapper.xml +++ b/src/main/resources/mappers/AlertMessageMapper.xml @@ -163,14 +163,14 @@ t_task.task_type, t_task.task_act, - t_dr.dynamic_rule_frequency, +-- t_dr.dynamic_rule_frequency, t_task.task_start_time, t_task.task_end_time, - t_dr.template_id, + t_task.template_id, t_task.task_range, - t_dr.dynamic_rule_protect_level, + t_task.protect_level, t_task.task_status, t_tmplate.strategy_template_name @@ -179,7 +179,7 @@ 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_new t_tmplate on - ( t_dr.template_id = t_tmplate.strategy_template_id ) + ( t_task.template_id = t_tmplate.strategy_template_id ) where t_task.task_id = #{taskId} diff --git a/src/main/resources/mappers/DynamicRuleMapper.xml b/src/main/resources/mappers/DynamicRuleMapper.xml index 53beabf..9247db8 100644 --- a/src/main/resources/mappers/DynamicRuleMapper.xml +++ b/src/main/resources/mappers/DynamicRuleMapper.xml @@ -11,53 +11,38 @@ insert into t_dynamic_rule (dynamic_rule_name, create_time, modify_time, dynamic_rule_create_username, - dynamic_rule_create_depart, template_id, dynamic_rule_protect_level, - dynamic_rule_priority, - dynamic_rule_frequency, dynamic_rule_create_user_id, log_rule_id, dynamic_rule_display_id) + dynamic_rule_create_depart, + dynamic_rule_create_user_id, bw_sql, dynamic_rule_display_id) values (#{object.dynamicRuleName}, - NOW(), #{object.dynamicRuleModifyTime}, + NOW(), NOW(), #{object.dynamicRuleCreateUsername}, #{object.dynamicRuleCreateDepart}, - #{object.templateId}, #{object.dynamicRuleProtectLevel}, - #{object.dynamicRulePriority}, - #{object.dynamicRuleFrequency}, - #{object.dynamicRuleCreateUserId}, #{object.logRuleId}, #{object.dynamicRuleDisplayId}) - + #{object.dynamicRuleCreateUserId}, #{object.bwSql}, #{object.dynamicRuleDisplayId}) - - insert into t_protect_object_dynamic_rule_conn(dynamic_rule_id, protect_object_id) - values (#{dynamicRuleId}, #{protectObjectId}) - + + + + insert into t_dynamic_rule (dynamic_rule_name, create_time, modify_time, dynamic_rule_create_username, - dynamic_rule_create_depart, template_id, dynamic_rule_protect_level, - dynamic_rule_priority, - dynamic_rule_frequency, dynamic_rule_create_user_id, log_rule_id, dynamic_rule_display_id - ) + dynamic_rule_create_depart, + dynamic_rule_create_user_id, bw_sql, dynamic_rule_display_id) values - (#{object.dynamicRuleName}, - NOW(),#{object.dynamicRuleModifyTime}, - #{object.dynamicRuleCreateUsername},#{object.dynamicRuleCreateDepart}, - #{object.templateId}, #{object.dynamicRuleProtectLevel}, - #{object.dynamicRulePriority}, #{object.dynamicRuleRange}, - #{object.dynamicRuleFrequency}, - #{object.dynamicRuleCreateUserId},#{object.logRuleId}, #{object.dynamicRuleDisplayId}) - - - - insert into - t_protect_object_dynamic_rule_conn(dynamic_rule_id, protect_object_id) - values - - (#{dynamicRuleId}, #{protectObjectId}) + ( + #{object.dynamicRuleName}, + NOW(), NOW(), + #{object.dynamicRuleCreateUsername}, #{object.dynamicRuleCreateDepart}, + #{object.dynamicRuleCreateUserId}, #{object.bwSql}, #{object.dynamicRuleDisplayId} + ) + @@ -70,11 +55,7 @@ where dynamic_rule_id = #{dynamicRuleId} - - delete - from t_protect_object_dynamic_rule_conn - where dynamic_rule_id = #{dynamicRuleId} - + delete from t_dynamic_rule @@ -89,13 +70,10 @@ update t_dynamic_rule set dynamic_rule_name = #{object.dynamicRuleName}, - modify_time = #{object.dynamicRuleModifyTime}, - template_id = #{object.templateId}, - dynamic_rule_protect_level = - #{object.dynamicRuleProtectLevel}, - - dynamic_rule_priority = #{object.dynamicRulePriority}, - dynamic_rule_frequency = #{object.dynamicRuleFrequency}, + + description = #{object.description}, + source_system = #{object.dynamicRuleSourceSystem}, + bw_sql = #{object.bwSql}, modify_time = NOW() where dynamic_rule_id = #{dynamicRuleId} @@ -160,11 +138,19 @@ - - - - + + + + + + + + + + + + @@ -174,24 +160,24 @@ - + - - + + - - + + - + + - - - + + @@ -213,23 +199,13 @@ - + - select * - from t_strategy_template_new - inner join t_dynamic_rule - on t_strategy_template_new.strategy_template_id = t_dynamic_rule.template_id - where t_dynamic_rule.dynamic_rule_id = #{dynamicRuleId} - + SELECT COUNT(*) FROM t_dynamic_rule - left join t_strategy_template_new - on t_dynamic_rule.template_id = t_strategy_template_new.strategy_template_id + t_dynamic_rule.dynamic_rule_name like concat('%', #{dynamicRuleName}, '%') @@ -310,7 +274,7 @@ and t_dynamic_rule.dynamic_rule_id = #{dynamicRuleId} - and t_strategy_template_new.strategy_template_source_system = #{sourceSystem} + and t_dynamic_rule.source_system = #{sourceSystem} and t_dynamic_rule.dynamic_rule_create_username = #{creator} @@ -318,12 +282,7 @@ and t_dynamic_rule.audit_status = #{auditStatus} - - and t_strategy_template_new.strategy_template_name = #{eventType} - - - and t_strategy_template_new.protect_level = #{protectLevel} - + AND audit_user_name like concat('%', #{auditUserName}, '%') @@ -337,8 +296,8 @@ resultMap="dynamicRulePageQueryMap"> select * from t_dynamic_rule - left join t_strategy_template_new - on t_dynamic_rule.template_id = t_strategy_template_new.strategy_template_id +-- left join t_strategy_template_new +-- on t_dynamic_rule.template_id = t_strategy_template_new.strategy_template_id where dynamic_rule_id in #{id} diff --git a/src/main/resources/mappers/ProtectObjectMapper.xml b/src/main/resources/mappers/ProtectObjectMapper.xml index 19c9909..4841441 100644 --- a/src/main/resources/mappers/ProtectObjectMapper.xml +++ b/src/main/resources/mappers/ProtectObjectMapper.xml @@ -138,7 +138,7 @@ SELECT t_task.* FROM t_task LEFT JOIN t_static_rule ON t_task.task_id = t_static_rule.static_rule_used_task_id LEFT JOIN t_dynamic_rule ON t_task.task_id = t_dynamic_rule.dynamic_rule_used_task_id - - LEFT JOIN t_static_rule ON t_task.task_id = t_static_rule.static_rule_used_task_id - LEFT JOIN t_dynamic_rule ON t_task.task_id = t_dynamic_rule.dynamic_rule_used_task_id - LEFT JOIN t_strategy_template_new ON t_dynamic_rule.template_id = t_strategy_template_new.strategy_template_id - + + + + + @@ -107,7 +118,7 @@ AND task_source LIKE CONCAT('%', #{task_source}, '%') - AND t_strategy_template_new.event_type LIKE CONCAT('%', #{event_type}, '%') + AND event_type LIKE CONCAT('%', #{event_type}, '%') AND task_crate_time LIKE CONCAT('%', #{create_date}, '%') @@ -115,6 +126,9 @@ AND task_start_time LIKE CONCAT('%', #{start_date}, '%') + + AND protect_level = #{protect_level} + @@ -180,6 +194,11 @@ task_start_time = #{task.taskStartTime}, task_end_time = #{task.taskEndTime}, task_range = #{task.taskRange}, + event_type = #{task.eventType}, + protect_level = #{task.protectLevel}, + template_id = #{task.templateId}, + template_name = #{task.templateName}, + source_system = #{task.sourceSystem}, task_modify_time = NOW(), WHERE task_id = #{task.taskId} @@ -238,7 +257,7 @@ UPDATE t_task - SET task_status = #{state}, + SET task_status = #{audit_status}, task_modify_time = NOW(), task_audit_username = #{auditUserName}, task_audit_userid = #{auditUserId}, @@ -270,6 +289,12 @@ WHERE task_id = #{task_id} + + DELETE + FROM t_task_protectobject_conn + WHERE task_id = #{taskId} + + @@ -313,6 +338,15 @@ #{info.distributePoint},#{info.taskDisplayId} ); + + INSERT INTO t_task_protectobject_conn(task_id, protect_object_id) + VALUES + + ( + #{taskId}, #{protectObjectId} + ) + + @@ -465,4 +497,25 @@ FROM t_task WHERE task_id = #{taskId} + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/main/resources/mappers/TemplateMapper.xml b/src/main/resources/mappers/TemplateMapper.xml index 808ded0..b030fcc 100644 --- a/src/main/resources/mappers/TemplateMapper.xml +++ b/src/main/resources/mappers/TemplateMapper.xml @@ -163,7 +163,7 @@