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<String, ScheduledFuture> taskMap = new ConcurrentHashMap<>();
|
|
public static Map<String, ScheduledFuture> 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);
|
}
|
}
|
|
}
|