package com.realtime.protection.server.task; import com.baomidou.dynamic.datasource.annotation.DS; import com.realtime.protection.configuration.entity.task.Task; import com.realtime.protection.configuration.entity.task.TaskCommandInfo; import com.realtime.protection.configuration.utils.status.AuditStatusValidator; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.List; @Service @DS("mysql") public class TaskService { private final TaskMapper taskMapper; public TaskService(TaskMapper taskMapper) { this.taskMapper = taskMapper; } @Transactional public Long newTask(Task task) { task.setTaskCreateUserId(1); task.setTaskCreateUsername("xxx"); task.setTaskCreateDepart("xxx"); taskMapper.newTask(task); if (task.getStaticRuleIds() != null && !task.getStaticRuleIds().isEmpty()) taskMapper.newTaskStaticRuleConcat(task.getTaskId(), task.getStaticRuleIds()); if (task.getDynamicRuleIds() != null && !task.getDynamicRuleIds().isEmpty()) taskMapper.newTaskDynamicRuleConcat(task.getTaskId(), task.getDynamicRuleIds()); return task.getTaskId(); } @Transactional public List queryTasks(Integer taskStatus, String taskType, String taskName, String taskCreator, Integer page, Integer pageSize) { List tasks = taskMapper.queryTasks(taskStatus, taskType, taskName, taskCreator, page, pageSize); for (Task task : tasks) { if (task == null) { continue; } task.setStaticRuleIds(taskMapper.queryStaticRuleIdsFromTaskId(task.getTaskId())); task.setDynamicRuleIds(taskMapper.queryDynamicRuleIdsFromTaskId(task.getTaskId())); } return tasks; } @Transactional public Task queryTask(Long id) { Task task = taskMapper.queryTask(id); if (task == null) { return null; } task.setStaticRuleIds(taskMapper.queryStaticRuleIdsFromTaskId(task.getTaskId())); task.setDynamicRuleIds(taskMapper.queryDynamicRuleIdsFromTaskId(task.getTaskId())); return task; } @Transactional public Boolean updateTask(Task task) { taskMapper.updateTask(task); taskMapper.clearTaskConnectedStaticRule(task.getTaskId()); taskMapper.clearTaskConnectedDynamicRule(task.getTaskId()); if (task.getStaticRuleIds() != null && !task.getStaticRuleIds().isEmpty()) taskMapper.newTaskStaticRuleConcat(task.getTaskId(), task.getStaticRuleIds()); if (task.getDynamicRuleIds() != null && !task.getDynamicRuleIds().isEmpty()) taskMapper.newTaskDynamicRuleConcat(task.getTaskId(), task.getDynamicRuleIds()); return true; } @Transactional public Boolean changeTaskAuditStatus(Long taskId, Integer taskAuditStatus) { Integer originalAuditStatus = taskMapper.queryTaskAuditStatus(taskId); if (originalAuditStatus == null) { throw new IllegalArgumentException("无法找到任务ID为" + taskId + "的任务,也许任务不存在?"); } if (AuditStatusValidator.setOriginal(originalAuditStatus).checkValidate(taskAuditStatus)) taskMapper.changeTaskAuditStatus(taskId, taskAuditStatus); else return false; return true; } public Boolean deleteTask(Long taskId) { return taskMapper.deleteTask(taskId); } public Boolean changeTaskStatus(Long taskId, Integer stateNum) { return taskMapper.changeTaskStatus(taskId, stateNum); } public List getStaticCommandInfos(Long taskId) { return taskMapper.getStaticCommandInfos(taskId); } public Integer queryTaskAuditStatus(Long taskId) { return taskMapper.queryTaskAuditStatus(taskId); } public Integer queryTaskStatus(Long taskId) { return taskMapper.queryTaskStatus(taskId); } public Long newTaskUsingCommandInfo(TaskCommandInfo taskCommandInfo) { taskMapper.newTaskUsingCommandInfo(taskCommandInfo); return taskCommandInfo.getTaskId(); } }