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: yanglei * @since: 2025-10-22 16:11 */ @Slf4j @Component public class WxPayScheduledManager { @Resource private WxPayConfig wxPayConfig; @Resource private ThreadPoolTaskScheduler threadPoolTaskScheduler; @Resource private WxPayTask wxPayTask; @PostConstruct public void init() { String payCron = wxPayConfig.getPaySchedule(); String refundCron = wxPayConfig.getRefundSchedule(); // 注册支付状态检查任务 scheduleTask("CheckOrderStatus", wxPayTask::checkOrderStatus, payCron); // 注册退款状态检查任务 scheduleTask("CheckRefundStatus", wxPayTask::checkRefundStatus, refundCron); } private void scheduleTask(String taskName, Runnable task, String cronExpression) { if (cronExpression == null || cronExpression.trim().isEmpty()) { log.warn("定时任务 [{}] 未配置Cron表达式,跳过注册", taskName); return; } threadPoolTaskScheduler.schedule(() -> { try { log.debug("执行定时任务: {}", taskName); task.run(); } catch (Exception e) { log.error("定时任务执行异常: {}", taskName, e); } }, new CronTrigger(cronExpression)); log.info("已注册定时任务: {}, Cron表达式: {}", taskName, cronExpression); } }