sammeishi
2019-05-26 12:46:28 +08:00
分享一下最近给我司架构的 ERP 优惠子系统。优惠券只是优惠系统的一个功能,券只是一种发行方式,与免单,折扣,团购等其他优惠本质上是一样的,都是优惠行为即对订单内的目标进行减额或者额外赠送,只不过在使用途径上有区别而已。我司的优惠系统比较复杂而且涉及多分店跨店全部说完太长了。只是简要的说一下核心的逻辑。
首先把优惠系统的模型提出来,然后嵌入到订单系统中做成解析器,所有的优惠都会挨个分解成模型然后根据模型去通知结算系统应用。所以最重要的是提取这个模型,而不是代码层面,那些乱七八糟的 oop 之类的,模型你搞明白用什么实现都行。
我的模型主要是这几个属性: 条件。目标。行为。值。
比如满 3 减 1 优惠,条件是必须购买三份,目标是这 3 份商品,行为是减份,值是 1。
比如第二份半价,条件是购买份数大于 2,目标是第二份商品,行为是减额,值是 0.5
比如满 399 整单八折,条件是消费金额大于 399,目标是支付总额,行为是减额,直是 0.2%
再比如员工免单,条件是员工必须有免单权限,目标是支付总额,行为是减额,值是 100%
上门例子都是常见的业务中用到的,优惠子系统都可以将它们化解成模型,最终统一处理,而不需要将所有的优惠,每个都写一个逻辑。
模型大概是这个样子,你可以将模型分配一个 id,在跟踪这个 id,,给予使用次数得记录,那这个 id 就是优惠券。团购也是同理。
行为和条件可以多个组合的,实现这种复杂的优惠: 如满三减一送商品在整单 95 折最后在送免运费券和给会员积分。
手机码字太累,互斥就不说了,整体大概就是这个逻辑,你可以参考一下。