package com.nuvole.hnnx.orderQueryTask; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.TaskScheduler; import org.springframework.scheduling.concurrent.DefaultManagedTaskScheduler; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ScheduledFuture; /** * @ClassName OrderQueryUtil * @Author cy * @Date 2024/1/2 * @Description * @Version 1.0 **/ @Slf4j //@Component public class OrderQueryUtil { private static TaskScheduler taskScheduler = new DefaultManagedTaskScheduler(); // @Autowired // public void setTaskScheduler(TaskScheduler taskScheduler) { // OrderQueryUtil.taskScheduler = taskScheduler; // } // 用于取消任务 private static Map taskMap = new ConcurrentHashMap<>(); public static Map getTaskMap() { return taskMap; } private static TaskScheduler getExecutor() { return taskScheduler; } public static ScheduledFuture addTask(OrderQueryTask task) { ScheduledFuture scheduledFuture = getExecutor().schedule(task, new OrderQueryTrigger(task.getOrderPayTime())); taskMap.put(task.getOrderId(), scheduledFuture); log.info("新增订单号为{}, 订单初始支付时间为{}", task.getOrderId(), task.getOrderPayTime()); return scheduledFuture; } public static void cancelTask(ScheduledFuture future) { future.cancel(true); } public static void cancelTask(String taskId) { log.info("取消订单号为{}", taskId); ScheduledFuture future = taskMap.remove(taskId); if (future != null) { future.cancel(true); } } }