fix: 修复订单状态机 claim 机制(HIF-25/HIF-28) #1
Reference in New Issue
Block a user
Delete Branch "agent/agent/36b338b4"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
背景
修复 HIF-25 描述的三个 Bug,并增加 stuck 订单恢复机制。
变更说明
修改 1:OrderStatusClaimed 从 4 改为 6
消除与 OrderStatusFailed(4) 的值冲突。
修改 2:releaseClaim 改为返回 error
调用处检查返回值并记录日志,releaseClaim 失败时由 stuck recovery 兜底。
修改 3:claimAndGetOrder 区分 claimed 状态
claimed 订单返回包含 stuck in claimed 的可重试错误;ProcessTask 区分场景分别处理。
修改 4(关键):修复 finalizeCouponAndOrder 的 claimed→finished 转换
UpdateOrderStatus 使用 WHERE status < target 守卫,claimed(6) < finished(5) 为 false 导致订单永卡。改用直接 DB 更新 WHERE status=6 → SET status=5,再通过 model.Update 刷新缓存。
修改 5:新增 stuck 订单恢复定时任务
每 10 分钟扫描超时 claimed 订单,重置为 paid 并重新入队,不依赖 asynq 原始重试。
View command line instructions
Checkout
From your project repository, check out a new branch and test the changes.