订单部分商品退款模型思考

功能目标

  • 订单支持部分商品的退款
  • 订单支持多次退款
  • 存在优惠的退款 优惠分摊后退款
  • 逆向流程 与 正向流程分离

ER模型

20190222104356-image.png

Order主表

字段说明
PayAmount订单付款金额
OrderStatus订单正向状态
RefundMark退款标识 无退款、存在退款、完全退款
RemainderAmount退款后该笔订单剩余用户支付金额
PayAmount - RemainderAmount = 退款金额

订单商品表 OrderSku

字段说明
SkuOriginalPrice单个商品原价
SkuPrice单个商品实际价格
TotalAmount商品实际总付款金额 在部分退款时 将
(TotalAmount / Quantity) * 退款数量 = 退该商品产生的退款金额
RemainderAmount该订单商品记录剩余用户支付金额
PayAmount - RemainderAmount = 退款金额
RemainderQuantity剩余数量 Quantity - RemainderQuantity = 退款了的数量

订单退款主表 OrderRefund

字段说明
RefundStatus退款状态
RefundAmount该笔退款单的退款金额

订单商品退款 OrderSkuRefund

字段说明
OrderSkuID关联的订单商品记录
RefundQuantity退该订单商品数量
RefundAmount退该商品数量后退款金额

一笔部分退款步骤

一笔订单 存在订单商品 A 2件共:100元 B 1件:40元 C 1件:60元,在创建订单时除去全单满额优惠满100减20,分摊优惠后得到 A:实际支付90 B:实际支付36 C:实际支付54元,现在对订单中 A 2件中退一件。

退款成功后存在OrderSkuRefund记录:

字段说明
OrderSkuIDA1
RefundQuantity1
RefundAmount90 * (1/2) = 45

OrderRefund记录:

字段说明
RefundStatus退款成功
RefundAmount45

OrderSku记录:

字段说明
SkuPrice50
TotalAmount90 分摊到该商品 扣除优惠 10
RemainderAmount扣除退款该商品的金额 等于剩余价值45
RemainderQuantity退一项 剩余一项 剩余数量 2.0 - 1.0 = 1.0

order 记录:

字段说明
PayAmount实际支付金额 180
OrderStatus订单正向状态 不影响
RefundMark存在退款
RemainderAmount退款后该笔订单剩余用户支付金额 180 - 45 = 135
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值