淺析京東促銷活動核心模型設計
前言
京東作為中國最大的自營式B2C電商平臺,提供一站式綜合性購物,服務億萬家庭,涵蓋3C、家電、消費品、服飾、家居家裝、生鮮和新通路(B2B),滿足了消費者的多元化需求。每天都會發布相關的促銷活動,來勾起消費者的購物欲望;每逢佳節還會進行大量的讓利惠民,來促進全民狂歡。
需求概述
商家搞促銷活動的本質是促銷商品,抓取消費者貪小便宜的心裏,來拉動銷售額,同時提高商家產品品牌的知名度,其實套路就是先提高商品的價格,然後在降價,呵呵,所以促銷手段五花八門,搞得消費者暈頭轉向,接下來我們就來淺析一下京東到底有哪些促銷手段。
1、單品促銷
- 打折,例如,商品售價100,打0.5折,只需支付50元。
- 定金翻倍,例如,預售價20元,定金1元,可抵2元,表示支付1元定金可當2元使用,即用戶支付定金後,尾款只需支付18元。
2、訂單促銷
- 首單免息,例如,新用戶第一個訂單使用白條分期付款免息。
- 滿減,例如,訂單金額滿300減100
梳理領域概念
領域建模的基礎是要先理解領域,讓自己成為領域專家。如果做到了這一點,那我們就打好了堅實的基礎。因為大家都對電商這個大領域很熟悉了,所以我劃分出一個促銷中心/子域來支撐訂單核心域的促銷活動,也就不用解釋了。那麽就可以根據需求概述為促銷子域來梳理出所有的領域概念,概念的關系,達成共識,統一交流,最後形成通用語言。
根據面向對象組合/聚合復用原則,我們應該學會從對象的職責上來考慮問題,而不是從結構上來考慮問題,所以我將單品促銷、訂單促銷等等統稱為促銷(當然名詞的定義可以不斷的進行蒸餾,暫時就這麽稱呼吧);將打折、滿減、訂單翻倍等等統稱為促銷手段。由於每個促銷手段都有自己的促銷規則,所以使用設計模式中的策略模式來封裝這個變化點。
梳理業務場景
從京東幫助中心了解到,所有的促銷活動都是在買家下單時,進行遞減相應商品金額的。
梳理業務規則
在DDD中業務規則叫不變性,任何的不變性必須要在一定的邊界內才有意義,綜上所述,我們要在促銷聚合根邊界內,來梳理它的業務規則。買家在下單時,會對訂單進行相應促銷活動的驗證,因此促銷聚合根需要提供一個驗證促銷手段的規則。
梳理業務流程
買家下單時,訂單子域發布一個【開始訂單創建事件】,促銷子域訂閱該事件,首先根據促銷手段進行規則驗證,並計算出訂單抵額和商品抵額,然後,分別發布【商品抵額事件】和【訂單抵額事件】,最後,如果驗證合格則發布一個【優惠成功事件】,如果促銷不合格,在發布一個【優惠失敗事件】。
梳理領域模型
通過前面的淺析,從戰略上大致了解了促銷子域,就是對指定訂單的商品應用買家指定的優惠。在戰術上,DDD提供了很多的工具:聚合、實體、值對象、工廠、倉儲、領域服務、領域事件等等。現在我們就用這些工具來驅動設計我們的促銷子域。UML圖如下:
到目前為止,我們已經完成了領域驅動領域模型設計,接下來就是領域模型驅動代碼實現,請聽下回分解。
淺析京東促銷活動核心模型設計