訂單狀態:NORMAL → REFUND_APPLIED(用戶申請) →
SELLER_AGREED(同意) → REFUND_SUCCESS
SELLER_REJECTED(拒絕) → REFUND_FAILED
AUTO_AGREED(7天自動同意) → REFUND_SUCCESS
runAt = applyTime + 7天,執行「自動同意退款」邏輯(檢查狀態仍為 APPLIED 才執行)。runAt = applyTime + 7天,執行「用戶申請超時關閉」邏輯(若狀態非 APPLIED 則忽略)。// 添加自動同意 Job
JobDetail job = JobBuilder.newJob(AutoAgreeRefundJob.class)
.withIdentity("autoAgree_" + orderId)
.usingJobData("orderId", orderId)
.build();
Trigger trigger = TriggerBuilder.newTrigger()
.startAt(Date.from(applyTime.plusDays(7).atZone(ZoneId.systemDefault()).toInstant()))
.build();
scheduler.scheduleJob(job, trigger);
// 賣家同意時刪除
scheduler.deleteJob(new JobKey("autoAgree_" + orderId));
ZADD refund:timeout orderId ,消費者輪詢 ZRANGEBYSCORE 執行,輕量無依賴。**推薦 Quartz**:功能全、持久化可靠、支持 Cron/Calendar、集群成熟,官網 https://www.oschina.net/p/quartz。