促销模型小记

不管是B2B,C2C,在有交易的电子商务过程当中,不可避免的出现促销这样的事,一般常见的促销包括打折优惠,买多少减多少,买多少送几样等等,甚至是订单满多少钱可以免邮什么的,距离几公里内可以免邮什么的,五花八门,不易穷举。针对这样的情况,做了个小型的促销模型。

下面就直接开始撸模型吧。

1、策略

我们需要一个基础的策略对象,比如买3送1,买5送3等这样的一个具体行为;这个策略对象有一些基本属性,包括策略的名字如买3送1,还要有个策略的计算方法,这个是核心,【坑】,稍后再说。再加上其他主键什么的大致样子如下

促销模型小记_第1张图片
策略

2、策略组

我们知道,在一次促销活动中,常见的一种现象是买3送1,买5送2;或者买100送10,买200送25这样的情况;那么我们如果购买5件,是不是就同时这两个优惠都起作用呢?显示不是,这样的活动其实是一种排他性的,同时也有优先级,比如满足买5送3的优先级就应该高于买2送1,否则买3送1就没有意义了。一旦满足高级别的促销,优先处理,否则继续寻找低级别的促销,直到结束。
这里把策略组和策略组的细节分为两个部分,分别表示策略组的基本熟悉和策略组组成部分


促销模型小记_第2张图片
策略组

有了策略组基本定义,可以继续完善对应的商品和策略之间的关联了

3、商品与策略组

商品不再与具体策略关联,而是和策略组进行,这样方便商品展示的时候显示该商品的促销描述,比如买5送3,买2送1,而这两个具体促销在促销表是两个行记录,需要处理才可以方便展现;当然,商品假设可能有多个促销策略,那么策略组之间也包括优先级,但某种程度上是并集效果,如买5送3同时又买200减10,假设买200减10优先级高,那么先处理,之后再计算买5送3,但一般商家不会这么干滴。


促销模型小记_第3张图片
商品与策略组

4、全局与策略

全局促销是针对某个会员对某次购买行为这样的整体促销,如订单满多少钱免邮什么的,会员打几折等,这些内容一般最后处理,在商品与策略组计算完毕之后总订单进行,如果有需要,也可以提前处理,看具体业务情况;这样的全局比较复杂,内容是包罗万象,比如配送距离3km免邮啦,各种会员等级折扣不同,订单满X元减Y元等等。为了方便处理,这里所有的情况统一为后面的策略处理对象。


促销模型小记_第4张图片
全局策略

5、策略处理

回到一开始的一个坑,这里填下
策略公式可以是一段JSON对象,也可以是一个脚本,这里先是一个JSON对象来做个演示,比如买3送1这个具体的促销行为,转换为

{'buyCount':'3','giftCount':'1'}

这里的buyCount和giftCount都是预先准备好的,需要约束;算法以此为蓝本,传入一堆入参,进行处理,比如某个商品作为例子,该商品入参形式

{'goodsID':'1000000000','goodsPrice':'12.5','count':'3','allPrice':'37.5'}

该算法出来结果是

{'new':'T','goodsID':'1000000000','goodsPrice':'12.5','giftCount':'1','lastPrice':'0'}

其中new的属性表示在商品列表新增一个条目,作为赠品出现
如果是优惠价格,比如优惠促销行为是:

{'buyMoney':'200','reduceCost':'10'}

入参修改为

{'goodsID':'1000000000','goodsPrice':'125','count':'3','allPrice':'375'}

最终计算出来的结果是

{'new':'F','goodsID':'1000000000','goodsPrice':'125','reduCost':'10','lastPrice':'365'}

6、策略对象封装

策略处理更加灵活的方式采用动态脚本进行

你可能感兴趣的:(促销模型小记)