data-model.md 2.4 KB

Data Model: 闪送订单状态变更消息推送

Date: 2026-09-17 | Spec: spec.md

本特性不新增任何表、字段或实体。数据面完全复用既有结构:

消费的既有实体

FlashDeliveryOrder(闪送订单,既有)

推送触发与接收人判定只读以下字段:

字段 类型 用途
orderNo String 推送正文 ,NO: 后缀与 payload ddId(FR-007)
userId Long 寄件用户 → ACCEPTED/PICKED_UP/DELIVERED 推送对象
riderId Long 接单骑手 → CANCELLED 推送对象;null 表示未接单,跳过推送
status String 仅用于触发点判定(由状态流转代码自身保证,推送不重复判状态)

InfoUser(用户,既有)

字段 用途
cid 设备推送标识;为空时云端推送跳过、消息记录仍生成
语言设置 PayPush.*HandleLocalLocaleUtils.getUserLocale 决定文案语言

push_message(消息记录表,既有,不修改)

PayPush 通道内 PushEventService.PublisherEvent(userId, title, content, body) 落库,即 spec FR-008 的"消息中心记录"。通知服务不直接操作该表。

触发事件矩阵(状态流转 → 推送)

状态流转 触发方法(FlashDeliveryApplicationService) 通知调用 接收人 content key
WAITING_ACCEPTANCE → ACCEPTED accept(锁内条件更新成功后) notifyAccepted(order) userId ...receiving.order
ACCEPTED → PICKED_UP pickuptransitionWithProof notifyPickedUp(order) userId ...qspsz.order
PICKED_UP → DELIVERED delivertransitionWithProof notifyDelivered(order) userId ...qsysd.order
→ CANCELLED(用户取消) userCancel notifyCancelled(order)(riderId 非空时) riderId order.cancelled
→ CANCELLED(平台取消) adminCancel notifyCancelled(order)(riderId 非空时) riderId order.cancelled

明确不触发(FR-010):订单创建、加小费(tipAdd)、DELIVERED → COMPLETED(complete / 自动完成 task)、WAITING_ACCEPTANCE 过期自动取消(cancelExpiredScheduledOrder)。

传递给推送通道的 payload 契约

contracts/push.md