拉卡拉开放平台
买一件商品,系统里会同时产生好几张单。它们名字相似,记录的内容却完全不同。分不清这三者,是很多电商系统后期混乱的起点。
| 单据 | 记录内容 | 生命周期 |
|---|---|---|
| 订单 | 买了什么、金额多少、收货信息 | 从下单到售后结束 |
| 支付单 | 这笔钱怎么付的、状态如何 | 从发起支付到终态 |
| 物流单 | 货怎么发、走到哪了 | 从发货到签收 |
合并成一张表,短期看起来省事,但很快就会遇到无法表达的情形:
单据分离的代价是多几张表,收益是能表达真实业务里那些不那么规整的情形。
关系应该单向清晰,避免互相引用:
这样安排之后,从订单出发能找到所有关联单据,而各单据之间互不牵扯,单独变更不会互相影响。
| 场景 | 订单 | 支付单 | 物流单 |
|---|---|---|---|
| 退款 | 转为售后状态 | 生成反向记录 | 可能触发退回 |
| 改单 | 金额或明细调整 | 可能需补差价 | 未发货则可改 |
| 售后 | 进入售后流程 | 视结果决定是否退款 | 可能产生退件单 |
三类单据分清楚之后,定位问题会快很多:
每一种问题对应一类单据,不需要在混合数据里翻找。这就是分离设计最直接的回报。
三类单据各有编号,命名上建议保持可辨识:
售后不是改一下订单状态就结束,它通常会产生自己的单据:
这些单据同样指向原订单,关系结构与正向单据保持一致,查询时才不会出现两套逻辑。
| 单据 | 初始 | 中间 | 终态 |
|---|---|---|---|
| 订单 | 待支付 | 待发货、已发货 | 已完成、已关闭 |
| 支付单 | 待支付 | 处理中 | 已支付、已退款、已关闭 |
| 物流单 | 待发货 | 运输中 | 已签收、已退回 |
三个状态机各自独立推进,但通过订单号保持关联。这种设计让每一类单据都能单独演化,而不会互相牵制。
单据量会随时间增长,查询性能与存储成本都需要提前考虑。
上一篇:平台型业务为什么要先收款再分账
24小时免费咨询
请输入您的联系电话,座机请加区号
