@
loveyu 1. 用户填写地址,咋存储(这里可能有运营需求、统计需求)
第一步,存入 redis ,第二步判断有货,用户进入选择支付方式页面,选择支付方式,进入步骤五,这里落库。具体信息可以步骤五的接口提供,也可以第一步中 redis 信息提取
2. 用户点击购买,这里一般 ABCD 各种灰度测试
abcd 灰度测试是啥。。。对不起
3. 订单号(要给用户看的,不能长、不能短、整个公司多系统唯一)
第一步雪花算法生成的 ID
4. 库存问题(锁定、绑定、取消)
锁定,绑定:第二步的 redis lua 脚本操作
取消:第四步的延时任务,如果到时间不是支付完成状态,或者订单不存在,直接回库存
5. 订单状态
初始(等待支付) - 支付成功 、失败、超时 - (物流状态,不讨论)
第四步判断是未支付或订单不存在
第五步初始状态
第七步支付成功状态
6. 库存状态
库存使用 MySQL - redis 同步去维护,redis 数据结构 :goodsId + addressId : stocks
库存状态是什么意思
7. 支付(支付宝、微信、其他支付),app 支付、小程序支付、网页支付、app 跳网页支付、app 跳小程序支付
对接过支付宝,微信支付,流程都是一样的
其他支付没多大影响
8. MQ (状态、操作、统计、库存、渠道、财务)
没懂
9. 搜索
搜索订单?
入库的时候是根据 userID 分库分表的,对应 c 端用户,方便查询自己订单的状态信息
如果要做其他内部统计,那么应该在做一个数据层
10. 售后
订单状态可以延续
11. 补单
什么情况下要补单?
12. 数据修复
太宽泛了
13. 报表
需要做其他数据层统计
14. 对账
同上
15. 导出
同上
16. 通知
在需要通知的地方异步发延时任务就可以了,要注意幂等
17. 权限
设计后台管理系统了?
18. 数据安全
别人竞争对手通过订单 ID 窥探到你家的体量就行吧,必要时可以对输出订单 ID 再一层加密
19. 第三方订单
一样的逻辑,最好区别于自家订单,另外起表,但是整套的逻辑可以共用
20. 分销
分销分红?步骤八以后操作