电商交易之订单中心设计(二)

背景

上篇说过订单基础设计,介绍了订单中心应该有哪些能力,大概有哪些字段,还有容量上的处理。上篇有点像在讲订单的数据模型,这篇来看看订单的业务模型。

 

价格模型

订单的价格怎么计算得来?普通电商平台用户  实付 = 商品原价 * 商品数量 - 优惠 - 抵扣 + 运费。

抵扣是啥?抵扣其实就是一种平台给予用户的等价物,类似于只能在特定平台使用的钱。例如:淘宝(淘金币)、京东(京豆)

抵扣为啥不和优惠合并?在业务初期其实抵扣和优惠并无区别,但当具有一定规模时,抵扣可以作为一种单独的业务域独立的发展运行,相对于优惠仅限商品购买,抵扣可能会有更多的独立的玩法,因此参考与业界的作法将其脱离优惠,单独计算。

优惠具体有啥?优惠其实到了促销域,订单需要感受一些促销相关的概念,作为资深的电商购物者,大家平时淘宝、京东下单时,也能发现优惠的许多种类,整理一下可得大致的优惠类别:

属于电商平台级别优惠:

  • 平台优惠(满n件打折、满n元/件立减、跨店满减)
  • 平台优惠券(全场可用、指定商家满n元/件可用、打折、立减)
  • 会员优惠(88vip、京东plus)

属于店铺级别优惠:

  • 店铺优惠(满n件打折、满n元/件立减)
  • 店铺优惠券(立减,打折)

属于商品级别优惠:

  • 商品优惠(打折、立减、一口价)

是不是对应的订单三级模型?所以你对整体业务了解的越多,那么你的设计一定是越合理的。

每个级别的订单存储对应级别的优惠,这里还会涉及优惠的分摊,分摊在文章末尾会附加说明。

 

一次交易行为到底有多少个价格呢?简单列一下

  • 订单原价(商品原价 * 购买数量)
  • 用户实付(商品原价 * 购买数量 - 优惠 - 抵扣 + 运费)
  • 卖家实收(商品原价 * 购买数量  - 店铺出资优惠 + 运费)
  • 平台实收 (卖家实收 * 服务费比例)

针对这么多种价格,订单模型绝不是存储每种价格的结果就行了,之后业务若还有其他需求,那不是岂要新加字段?
其实分析下来影响价格的因子就这些:商品原价 、 商品数量 、 优惠 、 抵扣 、 运费。
只要有基础的因子,其他的价格也就是在此基础上进行组合。


延伸:分摊


如果你买了A(10元)1件,B(8元)1件,C(3元)1件,三个商品,用了一张满全平台通用满10-5的优惠券。
A、B、C三个商品均在不同的店铺,那么在一起支付完之后,平台会按照店铺的维度进行拆单,用户将看到三笔订单。
那么就涉及到分摊了,分摊即将上级优惠、抵扣、费用,进行价格权重分到下一级中。此处我们的都是基于订单,因此平台级别分摊到店铺级,店铺级别分摊到商品级。

分摊方案1:对每个订单进行价格权重计算,结果四舍五入。

A商品级订单分摊到的优惠就是 10/(10+8+3) * 5 ≈ 2.38
B商品级订单分摊到的优惠就是 8/(10+8+3)  * 5 ≈ 1.90
C商品级订单分摊到的优惠就是 3/(10+8+3)  * 5 ≈ 0.71

因为平台支持的金额精度是到分,因此四舍五入到分,如果每位都如此计算,那么分摊总数相加很有可能不等于被分摊数。
上例最终 2.38 + 1.90 + 0.71 = 4.99 < 5

分摊方案2:对商品级订单排序,价格低的优先分摊,还是使用价格权重计算,最后一笔订单使用总金额 - 已分摊数,进行补齐。

C商品级订单分摊到的优惠就是 3/(10+8+3)  * 5 ≈ 0.71
B商品级订单分摊到的优惠就是 8/(10+8+3)  * 5 ≈ 1.90
A商品级订单分摊到的优惠就是 5-(0.71 + 1.90) = 2.39

这样下的分摊结果几乎就不会产生问题了。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值