ebike-share/ebike-payment/src/main/java/com/cdzy/payment/task/ScheduledTaskManager.java

70 lines
2.2 KiB
Java
Raw Normal View History

package com.cdzy.payment.task;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import lombok.extern.slf4j.Slf4j;
import org.springframework.scheduling.concurrent.ThreadPoolTaskScheduler;
import org.springframework.scheduling.support.CronTrigger;
import org.springframework.stereotype.Component;
/**
* 定时作业调度器
*
* @author dingchao
* @date 2025/5/2
* @modified by:
*/
@Slf4j
@Component
public class ScheduledTaskManager {
// 每隔30秒执行1次
private final static String CRON_EXPRESSION = "0/30 * * * *?";
// @Scheduled任务线程默认串行执行需要考虑并发问题
@Resource
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
@Resource
private WsPayTask wxPayTask;
@PostConstruct
public void init() {
// 启动定时任务
// 1. 每隔30秒执行1次查询创建未超过5分钟并且未支付的订单
threadPoolTaskScheduler.schedule(new Runnable() {
@Override
public void run() {
try {
wxPayTask.checkOrderStatus();
}catch (Exception e) {
log.error("checkOrderStatus 执行异常", e);
}
}
}, new CronTrigger(CRON_EXPRESSION));
// 2. 每隔30秒执行1次查询创建超过5分钟并且未支付的订单
threadPoolTaskScheduler.schedule(new Runnable() {
@Override
public void run() {
try {
wxPayTask.closeOrder();
} catch (Exception e) {
log.error("closeOrder 执行异常", e);
}
}
}, new CronTrigger(CRON_EXPRESSION));
// 3. 每隔30秒执行1次查询创建未超过5分钟并且未成功的退款单
threadPoolTaskScheduler.schedule(new Runnable() {
@Override
public void run() {
try {
wxPayTask.checkRefundStatus();
} catch (Exception e) {
log.error("checkRefundStatus 执行异常", e);
}
}
}, new CronTrigger(CRON_EXPRESSION));
}
}