電商所謂營銷,歸根結(jié)底都是訂單金額的變化;如果我們清楚的知道訂單金額的計算流程是怎樣的,那么我們只需要順著系統(tǒng)的計算流程做促銷,就不用擔(dān)心各種促銷類型之間產(chǎn)生重疊或者沖突的情況了。當(dāng)我們知道這個關(guān)系后,就可以將營銷活動區(qū)分為三種類型:改商品價格、改商品小計價格、改訂單價格,因?yàn)闊o論什么營銷歸根結(jié)底都是可以描述成改價格。
網(wǎng)上商城系統(tǒng)網(wǎng)站購物車中任何增刪查改都要重新計算促銷,所以促銷的計算變得尤為重要,感覺京東已經(jīng)把促銷做到了極致。
從模式上來講,我們公司的促銷就相當(dāng)于京東自營,所以很多也都是參考京東自營的,但我們還沒法做到像京東促銷那樣強(qiáng)大。
這里,將我們做的促銷跟大家分享一下,只涉及后臺接口邏輯部分。
接口的功能就是輸入商品列表,返回加了促銷分組后的商品列表。
首先要聲明兩點(diǎn):
一、不是通用的促銷設(shè)計,只是我們公司目前支持的促銷設(shè)計及邏輯;
二、作者水平有限,不會畫網(wǎng)上電子商城系統(tǒng)圖,所以圖畫得比較丑,也很粗,希望大家不要介意;
三、不談性能
廢話就不多說了,下面正式開始。。。
促銷類型
前面說了,促銷歸根結(jié)底是改價格。在我們這里其它單品促銷就是改商品價格;而條件促銷就相當(dāng)于改小計的價格;至于贈品促銷不設(shè)計改價格,可以認(rèn)為是單品促銷的一種類型。
主流程
“同類型通過實(shí)體進(jìn)行互斥、不同類型可以相互疊加。”這是別人總結(jié)的設(shè)計電商促銷系統(tǒng)的基本原則,我也比較認(rèn)同。
上面接口主流程就是先應(yīng)用單品促銷,再應(yīng)用條件促銷。稍微再細(xì)化一點(diǎn)兒就是這樣的:
先處理贈品促銷,將贈品掛載到主商品(原先用戶添加的購物車中的商品我稱之為主商品)上,再應(yīng)用單品促銷。
在進(jìn)行單品促銷的時候,很有可能同一個商品命中多個單品促銷。這個時候只能取一個促銷,此處的計算邏輯是這樣的:
1、優(yōu)惠力度最大的優(yōu)先;
2、優(yōu)惠力度相同時,取最新創(chuàng)建的那個(創(chuàng)建時間最新);
例如:
商品A命中四條促銷,分別是:
【促銷1】直降2元,
【促銷2】折扣8折,
【促銷3】直降1元。假設(shè)A的原價時10元、
那么經(jīng)過計算
【促銷1】8元,
【促銷2】8元,
【促銷3】9元。這個時候,
【促銷3】應(yīng)該被剔除、
假設(shè)【促銷2】的創(chuàng)建時間比【促銷1】要晚,那么應(yīng)該取【促銷2】。即商品A最終命中【促銷2】。原價10元,促銷價8元。
計算商品價格流程
稍微解釋一下:
特價:商品A原價12元,今日特價9.9元。
折扣:商品打幾折。
直降:商品A原價12元,今日直降3元,所以最終9元。且當(dāng)促銷價低于原價的70%時恢復(fù)原價。
限購流程
這里有兩點(diǎn)需要說明:
限購的話需要查訂單系統(tǒng),但是剛才說了購物車中的任意增刪查改都要重新計算促銷,所以如果這里直接調(diào)訂單的話可能訂單的頂不?。夹g(shù)實(shí)力還比較薄弱,無奈!?。。?,考慮到這里我們?nèi)哂嗔擞唵螖?shù)據(jù),每次從本地數(shù)據(jù)庫去查。當(dāng)然,這樣肯定不準(zhǔn),但是我們只保證90%的情況就可以了,所以這里我們采用這種方式。
拆商品行。還是用上面的例子,商品A命中了【促銷2】,假設(shè)【促銷2】限購每人每單1件,而現(xiàn)在A 的數(shù)量時3,那么我們會拆成2行,第一行商品A售價8元數(shù)量1件,第二行商品A售價10元數(shù)量2件。
條件促銷分組
同一個商品可能會命中多個條件促銷,而最終每個商品只能應(yīng)用一個條件促銷(即每個商品最終只能屬于一個組)
我們說,同種類型的促銷不能疊加,不同類型的促銷可以疊加。在我們這里,單品促銷和單品促銷不能疊加,條件促銷與條件促銷不能疊加,單品與條件可以疊加。
程序走到這里,我們已經(jīng)完成了單品促銷的處理,接下來處理?xiàng)l件促銷。在決定商品應(yīng)該最終應(yīng)用哪個條件促銷時,我們的原則是這樣的:
1、優(yōu)先考慮滿足條件的促銷
這句話的意思是,假設(shè)商品A,商品B滿足【促銷1】滿100減20這個階梯,同時A和B又都命中了【促銷2】但是不滿足【促銷2】的條件,因?yàn)榧僭O(shè)【促銷2】的最小階梯是滿150減30。那么這個時候,雖然A和B都同時命中【促銷1】和【促銷2】,但A和B一起正好符合【促銷1】滿100減20的條件,所以這個時候促銷A和B應(yīng)該最終取【促銷2】
2、同時滿足多個條件促銷時,取后創(chuàng)建的那個(創(chuàng)建時間最近)
還是上面的例子,假設(shè)A和B的總金額加起來是160元,那么它們都滿足【促銷1】和【促銷2】,假設(shè)【促銷2】是后創(chuàng)建的,所以此時它們最終命中的條件促銷應(yīng)該取【促銷2】。并且,之后應(yīng)該講它們從【促銷1】的商品組中剔除(PS:因?yàn)橐粋€商品只能屬于一個組,即只能應(yīng)用一個條件促銷)。京東在這里對每種促銷做了計算,把最終用哪個促銷的決定權(quán)交給用戶去選,我們這里不搞這么復(fù)雜。
說了這么多,可能有點(diǎn)暈,下面舉個例子
假設(shè)有A,B,C,D四個商品,促銷1234是四個促銷
如圖,【促銷1】是所有商品,所有A,B,C,D四個都命中【促銷1】,換句話說【促銷1】的商品組中有A,B,C,D
【促銷2】的商品組中有A,C
【促銷3】的商品組中有A,B
【促銷4】的商品組中有A,B,C
假設(shè)促銷1,2,3,4是依次創(chuàng)建的,也就是說4是最晚創(chuàng)建的,1是最早創(chuàng)建的
再假設(shè),A+B+C符合【促銷4】的其中一個階梯條件,A+B符合【促銷3】中的其中一個階梯條件,A+B+C+D符合【促銷1】的其中最低一級的階梯條件
那么,最終的促銷分組應(yīng)該是這樣的:
【促銷4】的商品組有:A,B,C
【促銷3】的商品組為空
【促銷2】的商品組為空
【促銷1】的商品組中有:D,而且不滿足最低的階梯,因?yàn)樵瓉鞟+B+C+D滿足最低一級的階梯,現(xiàn)在只剩下D了當(dāng)然不滿足最低一個的階梯
條件促銷分組計算
在代碼實(shí)現(xiàn)上,這里是兩層循環(huán):
第一層是條件促銷列表
第二層是某個條件促銷中的商品組
部分代碼實(shí)現(xiàn)
代碼可能是這樣的,下面貼出條件促銷部分的代碼片段
返回的數(shù)據(jù)接口
最終返回的應(yīng)該是一個列表,列表中的每一個元素代表一個條件促銷(即分組)
接口看起來可能是這樣的:
來源:博客園
<數(shù)商云(www.zhimaihui.cn)是國內(nèi)知名企業(yè)級電商平臺提供商,為企業(yè)級商家提供最佳的系統(tǒng)開發(fā)(多種模式電商平臺搭建:B2B/B2B2C/B2C/O2O/新零售等)、供應(yīng)鏈系統(tǒng)搭建及電商行業(yè)解決方案服務(wù)>
評論