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)); } }