不管是B2B,C2C,在有交易的電子商務(wù)過程當(dāng)中掉奄,不可避免的出現(xiàn)促銷這樣的事规个,一般常見的促銷包括打折優(yōu)惠,買多少減多少姓建,買多少送幾樣等等诞仓,甚至是訂單滿多少錢可以免郵什么的,距離幾公里內(nèi)可以免郵什么的速兔,五花八門墅拭,不易窮舉。針對這樣的情況涣狗,做了個小型的促銷模型谍婉。
下面就直接開始擼模型吧。
1镀钓、策略
我們需要一個基礎(chǔ)的策略對象穗熬,比如買3送1,買5送3等這樣的一個具體行為丁溅;這個策略對象有一些基本屬性唤蔗,包括策略的名字如買3送1,還要有個策略的計算方法窟赏,這個是核心妓柜,【坑】,稍后再說涯穷。再加上其他主鍵什么的大致樣子如下
2棍掐、策略組
我們知道,在一次促銷活動中求豫,常見的一種現(xiàn)象是買3送1塌衰,買5送2诉稍;或者買100送10蝠嘉,買200送25這樣的情況最疆;那么我們?nèi)绻徺I5件,是不是就同時這兩個優(yōu)惠都起作用呢蚤告?顯示不是努酸,這樣的活動其實是一種排他性的黍图,同時也有優(yōu)先級藤树,比如滿足買5送3的優(yōu)先級就應(yīng)該高于買2送1沐祷,否則買3送1就沒有意義了齐疙。一旦滿足高級別的促銷琳水,優(yōu)先處理蜈七,否則繼續(xù)尋找低級別的促銷脸候,直到結(jié)束获列。
這里把策略組和策略組的細節(jié)分為兩個部分逗爹,分別表示策略組的基本熟悉和策略組組成部分
有了策略組基本定義亡嫌,可以繼續(xù)完善對應(yīng)的商品和策略之間的關(guān)聯(lián)了
3、商品與策略組
商品不再與具體策略關(guān)聯(lián)掘而,而是和策略組進行挟冠,這樣方便商品展示的時候顯示該商品的促銷描述,比如買5送3袍睡,買2送1知染,而這兩個具體促銷在促銷表是兩個行記錄,需要處理才可以方便展現(xiàn)斑胜;當(dāng)然控淡,商品假設(shè)可能有多個促銷策略,那么策略組之間也包括優(yōu)先級止潘,但某種程度上是并集效果掺炭,如買5送3同時又買200減10,假設(shè)買200減10優(yōu)先級高覆山,那么先處理竹伸,之后再計算買5送3,但一般商家不會這么干滴簇宽。
4勋篓、全局與策略
全局促銷是針對某個會員對某次購買行為這樣的整體促銷,如訂單滿多少錢免郵什么的魏割,會員打幾折等譬嚣,這些內(nèi)容一般最后處理,在商品與策略組計算完畢之后總訂單進行钞它,如果有需要拜银,也可以提前處理殊鞭,看具體業(yè)務(wù)情況;這樣的全局比較復(fù)雜尼桶,內(nèi)容是包羅萬象操灿,比如配送距離3km免郵啦,各種會員等級折扣不同泵督,訂單滿X元減Y元等等趾盐。為了方便處理,這里所有的情況統(tǒng)一為后面的策略處理對象小腊。
5救鲤、策略處理
回到一開始的一個坑,這里填下
策略公式可以是一段JSON對象秩冈,也可以是一個腳本本缠,這里先是一個JSON對象來做個演示,比如買3送1這個具體的促銷行為入问,轉(zhuǎn)換為
{'buyCount':'3','giftCount':'1'}
這里的buyCount和giftCount都是預(yù)先準備好的丹锹,需要約束;算法以此為藍本队他,傳入一堆入?yún)⒕砺兀M行處理,比如某個商品作為例子麸折,該商品入?yún)⑿问?/p>
{'goodsID':'1000000000','goodsPrice':'12.5','count':'3','allPrice':'37.5'}
該算法出來結(jié)果是
{'new':'T','goodsID':'1000000000','goodsPrice':'12.5','giftCount':'1','lastPrice':'0'}
其中new的屬性表示在商品列表新增一個條目锡凝,作為贈品出現(xiàn)
如果是優(yōu)惠價格,比如優(yōu)惠促銷行為是:
{'buyMoney':'200','reduceCost':'10'}
入?yún)⑿薷臑?/p>
{'goodsID':'1000000000','goodsPrice':'125','count':'3','allPrice':'375'}
最終計算出來的結(jié)果是
{'new':'F','goodsID':'1000000000','goodsPrice':'125','reduCost':'10','lastPrice':'365'}
6垢啼、策略對象封裝
策略處理更加靈活的方式采用動態(tài)腳本進行