申请售后
待发货状态
同步(主逻辑):
- 退款
- 创建售后记录
- 获取商品,更新状态
- 更新拆分表
异步(拆单):
如果是一个,直接更新订单主状态
如果是多个,复制一个售后的订单,记录订单主键和复制订单主键关系
复制拆分的商品,挂载副订单
维护副商品和商品的关系(Id:复制的,Parent Id :真的的商品主键)
当全部拆单,删除副订单挂载的商品,主订单状态变更,删除副订单,删除订单主键和复制订单主键关系
删除副商品和商品的关系。
异步(订单历史):
当全部跑到售后的时候,如果是待发货触发,则更新待发货 -> 售后;如果是待收货触发,则更新待收货- >售后
注意,这里的异步必须先执行,拿到当前订单的状态,不然执行异步拆单,状态会变。
异步(订单商品历史)
- 记录当前商品售后记录,状态待处理
待收货状态
同上逻辑,售后增加换货,退货退款,退款逻辑
取消申请
同步(主逻辑):
- 取消的商品状态回退,回退订单主状态
- 更新售后表,商品状态取消售后
- 拆分表更新
- 传参加入是取消申请的操作标识
- 不管是单个还是多个,只要主订单状态已经是售后,查询订单历史状态,主订单状态回退取消前状态(异步订单历史:这里记录历史变更)
异步(合单):
- 复制主订单,更新复制订单的状态为售后
- 更新拆分表的主订单和副订单主键关系
- 拿到当前未取消的售后商品主键,查询这些商品
- 复制这些商品,挂载副订单
- 售后商品的主键在拆分表数量为0,则说明全部取消申请了,删除副订单的商品,删除副商品和商品关系表,删除副订单,更新拆分表的订单主键和副订单主键的关系。
异步(订单历史):
当售后的商品全部取消,订单主状态记录历史,先执行异步合单逻辑,回退之前状态,记录开始状态:售后状态 -> 回退的状态
这里有问题,可能主状态是待发货,其中一个在售后,这个时候取消,历史不变。(改成同步的主逻辑)
异步(订单商品历史)
- 记录当前商品售后记录,状态待处理
表结构设计
1 | -- chh_mmplanet_order.chh_order_combination_split definition |