75 lines
2.5 KiB
Java
75 lines
2.5 KiB
Java
package com.cdzy.payment.task;
|
||
|
||
import com.cdzy.payment.config.WxPayConfig;
|
||
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 {
|
||
|
||
// @Scheduled任务线程默认串行执行,需要考虑并发问题
|
||
@Resource
|
||
private WxPayConfig wxPayConfig;
|
||
@Resource
|
||
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
|
||
@Resource
|
||
private WsPayTask wxPayTask;
|
||
|
||
@PostConstruct
|
||
public void init() {
|
||
String CRON_EXPRESSION_PAY = wxPayConfig.getPaySchedule();
|
||
String CRON_EXPRESSION_REFUND = wxPayConfig.getRefundSchedule();
|
||
|
||
// 启动定时任务
|
||
// 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_PAY));
|
||
|
||
//========支付系统自动关闭,不主动关闭,每次发起请求的时候检测是否关闭========
|
||
//// 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_REFUND));
|
||
}
|
||
|
||
}
|