data-model.md 2.7 KB

Data Model: 订单状态四字段分离

变更的实体

PosOrder(pos_order 表)

新增字段

字段名 Java 类型 数据库列 数据库类型 默认值 说明
deliveryStatus Long delivery_status BIGINT NULL 配送状态:0待接单,1骑手已接单,2配送中,3已送达。自取/堂食为 NULL
payStatus Long pay_status BIGINT 0 支付状态:0未支付,1已支付,2已退款
afterSaleStatus Long after_sale_status BIGINT 0 售后状态:0无售后,1申请中,2退款中,3已退款,4退款拒绝,5客服介入,6售后完成

重新定义的字段

字段名 旧值 → 新值 说明
state 0-13 → 0-4 旧值废弃,新值:0待处理,1已接单,2已出餐,3已完成,4已取消

废弃但保留的字段

字段名 替代方案
diningStatus 由 state=2(已出餐)替代
isAccepted 由 state=1(已接单)替代

状态机定义

state(订单状态)— 所有类型共用

0(待处理) → 1(已接单) → 2(已出餐) → 3(已完成)
0(待处理) → 4(已取消)
1(已接单) → 4(已取消)

转换规则:

  • 0→1:商家接单
  • 1→2:商家出餐
  • 2→3:骑手送达(外送) / 商家确认完成(自取/堂食) / 自动完成兜底
  • *→4:取消(商家/系统/用户超时/全额退款)

deliveryStatus(配送状态)— 仅 type=0 外送

0(待接单) → 1(骑手已接单) → 2(配送中) → 3(已送达)
  • 商家出餐时设 deliveryStatus=0
  • 自取/堂食始终为 NULL

payStatus(支付状态)— 所有类型共用

0(未支付) → 1(已支付)
1(已支付) → 2(已退款)
  • 外送到付:创建时直接 payStatus=1
  • 自取/堂食现金:创建时 payStatus=0,商家收款+完成时设 1
  • 在线支付:支付回调后设 1

afterSaleStatus(售后状态)— 独立状态机

0(无售后) → 1(申请中) → 2(退款中) → 3(已退款) → 6(售后完成)
                       → 4(退款拒绝) → 5(客服介入) → 6(售后完成)
  • 本次不实现退款流程(afterSaleStatus 预留,值保持 0)
  • 用户/商家取消订单时 afterSaleStatus 保持 0

各类型订单字段使用

订单类型 state deliveryStatus payStatus afterSaleStatus
外送(type=0) 0→1→2→3 0→1→2→3 0→1 或 创建时1 0(预留)
自取(type=1) 0→1→2→3 NULL 0→1(完成时) 0(预留)
堂食(type=2) 0→1→2→3 NULL 0→1(完成时) 0(预留)