plan.md 3.0 KB

Implementation Plan: 外卖无人接单自动取消与退款

Date: 2026-10-15 | Spec: spec.md | Status: 已提交;数据库部署与联调待执行

Summary

仅处理当前独立外送单。订单首次可履约时写 effective_at;预约单以生效、预约开始、实际开放给骑手三者最晚时间计时。未支付在线单可安全切换到到付。无人接单超过配置阈值时用与骑手接单互斥的条件更新取消,记录退款意图、日志并通知用户和商家。

OMG 正式退款使用支付尝试保存的环境快照和商户 CreditCheckCode 调用信用卡交易查询与 DoAction;测试环境没有退款能力,退款意图保持待处理。正式退款结果不确定时先查询交易事实,再决定下一动作,不盲目重复调用。切换部署环境不会把旧测试流水送到正式接口。

Components

  1. ruoyi-system:pos_order.effective_at 映射、条件支付切换/超时取消 SQL、退款意图持久层。
  2. ruoyi-admin:订单创建和付款写点、切换服务、预约开放与超时任务、退款任务与 OMG 网关、取消通知。
  3. updatesql/sql.md:按时间顺序追加字段、退款表、阈值字典、调度任务;不在此执行数据库迁移。
  4. specs/037-order-no-rider-auto-cancel:规格、计划、任务与验证结果。

Safety and acceptance

  • 支付与切换的条件更新互斥,effective_at 只首次写入;迟到付款产生退款意图。
  • 接单与取消的条件更新互斥,预约单未开放或未到阈值不会取消。
  • LINE 复用现有退款意图;OMG 退款保留尝试、网关状态、动作和错误,重复扫描幂等。
  • 测试环境不调用正式 OMG API,不把测试环境退款失败记作成功。
  • 完成所有接口源码后统一运行 JDK 21 定向测试、模块构建与回归;提交前审计暂存范围,排除已有脏文件。

验证记录

  • JDK 21 定向测试:037 涉及的 9 个测试类、99 个测试通过。
  • mvn -q -pl ruoyi-admin -am -DskipTests package 通过。
  • mvn -q -pl ruoyi-admin -am test 执行 1057 个测试,只有 FlashDeliveryV2Test 的 7 个断言/错误未通过;该文件对应的闪送服务在本任务开始前已有未提交修改,本任务不改动其代码。
  • SQL 仅登记在 updatesql/sql.md,没有执行数据库迁移;测试环境 OMG 无真实信用卡退款接口,正式退款仍待正式凭证和网关联调验收。

2026-10-16 多店接入范围确认

用户已确认在 036 T023 中接入 037 现有无人接单阈值:以父批次统一生效、组首次实际开放和预约开始的最晚值计时,部分取消不续时,未承接组原子取消剩余有效成员并逐交易退款,与整组接单互斥。无组独立配送成员沿独立方式但不早于父批次生效计时。当前本节仅同步规格,扩展源码/时间字段/SQL 和回归待 036 T023 完成;上面的独立订单验证记录不覆盖此扩展,不改变普通单既有行为。