Просмотр исходного кода

补充自取配送费与出餐推送设计

明确自取订单配送费由后端统一归零,并为商家出餐增加包含取餐码的多语言专属用户推送。`n补充覆盖三个有效下单入口的验收场景和实施任务。
qmj 2 дней назад
Родитель
Сommit
9c19408ce2
3 измененных файлов с 48 добавлено и 0 удалено
  1. 16 0
      specs/006-orderstate/plan.md
  2. 24 0
      specs/006-orderstate/spec.md
  3. 8 0
      specs/006-orderstate/tasks.md

+ 16 - 0
specs/006-orderstate/plan.md

@@ -84,3 +84,19 @@ E:\QtwCode\foodie\foodie-admin-vue\
 | Violation | Why Needed | Simpler Alternative Rejected Because |
 |-----------|------------|-------------------------------------|
 | 四字段拆分增加查询复杂度 | 自取/堂食订单无配送状态,单字段无法表达 | 单 state 字段混用已导致无法支持新订单类型 |
+
+## 2026-08-24 增量实施设计
+
+### 配送费归零
+
+在三个有效下单入口构造 `PosOrder` 时按订单类型归一化配送费:`type=1` 固定写入 `0D`,其他类型沿用请求值。规则在 Controller 边界落库前执行,不修改数据库结构,也不回写请求 DTO。
+
+### 推送文案分流
+
+复用 `PosOrderShOprateController.dispatchOrder()` 的现有 `chuCan(...)` 推送链路。根据订单 `type` 选择内容 key:自取使用新增专属 i18n key,并把 `pickUpNum` 作为消息参数;其他类型继续使用 `no.message.push.merchant.ready.content`。复用 `PayPush` 的用户语言解析、App 推送和 `PushEvent -> push_message` 入库能力。
+
+### 测试策略
+
+- 定向测试三个下单入口的自取配送费归零,并保留至少一个非自取配送费不变用例。
+- 定向测试出餐推送内容选择:自取使用专属 key 和取餐码参数,非自取使用原通用 key。
+- 修改完成后运行受影响定向测试及 `ruoyi-admin` 模块构建;完整回归结果单独记录。

+ 24 - 0
specs/006-orderstate/spec.md

@@ -668,6 +668,30 @@ wrapper.last("ORDER BY ST_Distance_Sphere(point(longitude, latitude), " +
 
 核心原则:**商家/骑手操作是主触发器,用户确认是可选的,自动完成是兜底。** 用户不确认不会导致订单永远"挂着"。
 
+## 2026-08-24 增量:自取配送费与出餐推送
+
+### 自取配送费
+
+- `type=1` 的自取订单配送费必须由后端固定为 `0`,不得信任或保存客户端传入的非零 `freight`。
+- 该规则覆盖当前仍有效的全部下单入口:用户聚合下单、商家端下单及 `/system/order/addorder`。
+- `type=0` 外送和 `type=2` 堂食订单保持现有配送费处理,不在本次调整中改变计价方式。
+- 本项目不新增包装费字段或包装费计算规则。
+
+### 自取出餐推送
+
+- 商家将 `type=1` 自取订单从 `state=1` 推进到 `state=2` 时,必须通过当前用户推送通道发送专属通知。
+- 专属文案含义为“您的餐品已备好,请凭取餐码 {0} 到店领取”,其中 `{0}` 使用订单当前 `pickUpNum`,不改变现有按门店、按天递增的取餐码生成方式。
+- 专属文案必须覆盖简体中文、繁体中文、英文、越南语以及默认资源文件。
+- 外送和堂食继续使用现有通用出餐通知,不改变既有推送行为。
+- 本次只使用项目当前 App 推送及 `push_message` 入库通道,不新增短信通知,也不新增取餐码核销接口。
+
+### 验收场景
+
+1. 自取订单无论客户端传入 `freight=null`、`0` 或非零值,最终保存的 `freight` 均为 `0`。
+2. 外送和堂食订单仍保存各自原有配送费值。
+3. 自取订单出餐时,用户收到包含当前取餐码的专属到店领取通知。
+4. 外送和堂食订单出餐时,仍收到原有通用出餐通知。
+
 ## 参考资源
 
 - [美团外卖开放平台 — 订单状态](https://developer.waimai.meituan.com/home/doc/market/100)

+ 8 - 0
specs/006-orderstate/tasks.md

@@ -152,6 +152,14 @@
 - [x] T028 [P] 清理旧代码中的注释:在 PosOrder.java 中为废弃字段(diningStatus、isAccepted)添加 @Deprecated 注解
 - [ ] T029 完整流程验证:外送在线支付全流程→外送到付全流程→自取现金全流程→堂食现金全流程→取消订单→定时任务触发
 
+## Phase 10:自取配送费与专属出餐推送(2026-08-24 增量)
+
+- [ ] T030 为三个有效下单入口补充回归测试:自取订单忽略客户端配送费并保存为 `0D`,非自取订单保持原值
+- [ ] T031 在用户聚合下单、商家端下单和 `/system/order/addorder` 中统一强制自取订单配送费为 `0D`
+- [ ] T032 为自取出餐推送补充文案分流测试,验证专属 key 携带当前 `pickUpNum`,其他订单继续使用通用 key
+- [ ] T033 增加五套后端 i18n 自取出餐文案,并接入现有用户 App 推送与 `push_message` 入库链路
+- [ ] T034 运行定向测试、`ruoyi-admin` 模块构建并记录未执行的完整回归项
+
 ---
 
 ## Dependencies & Execution Order