2025-05-06 09:06:17 +08:00
|
|
|
|
package com.cdzy.payment.task;
|
|
|
|
|
|
|
2025-05-14 17:47:36 +08:00
|
|
|
|
import com.cdzy.payment.config.WxPayConfig;
|
2025-05-06 09:06:17 +08:00
|
|
|
|
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
|
2025-05-14 17:47:36 +08:00
|
|
|
|
private WxPayConfig wxPayConfig;
|
|
|
|
|
|
@Resource
|
2025-05-06 09:06:17 +08:00
|
|
|
|
private ThreadPoolTaskScheduler threadPoolTaskScheduler;
|
|
|
|
|
|
@Resource
|
|
|
|
|
|
private WsPayTask wxPayTask;
|
|
|
|
|
|
|
|
|
|
|
|
@PostConstruct
|
|
|
|
|
|
public void init() {
|
2025-05-14 17:47:36 +08:00
|
|
|
|
String CRON_EXPRESSION = wxPayConfig.getCronExpression();
|
2025-05-06 09:06:17 +08:00
|
|
|
|
// 启动定时任务
|
|
|
|
|
|
// 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));
|
|
|
|
|
|
|
2025-05-14 17:47:36 +08:00
|
|
|
|
//========支付系统自动关闭,不主动关闭,每次发起请求的时候检测是否关闭========
|
|
|
|
|
|
//// 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));
|
2025-05-06 09:06:17 +08:00
|
|
|
|
|
|
|
|
|
|
// 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));
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|