


關鍵詞:Java Web;促銷規則引擎;促銷活動;設計模式
中圖法分類號:F721 文獻標識碼:A
1基本設計方案
1.1功能模塊結構設計
1.1.1后端功能
(1)促銷活動動態配置。
促銷活動通過配置頁面,配置不同的促銷規則,可以配置促銷的基本信息、促銷類型、時間周期、疊加規則、促銷范圍、促銷商品等。
(2)促銷活動自啟和自停。
系統定時掃描完成配置的促銷活動,在時間規則命中的范圍內自動啟用,在時間規則范圍外自動失效。
(3)促銷算價。
實時算價:在PC端收銀臺或小程序結算頁面,基于購買商品,實時計算本次結算最優金額,即命中的最優促銷活動。
1.1.2前端功能
(1)促銷活動配置。
前端構建促銷活動配置頁面,基于不同的促銷類型切換不同的配置方式,主要包含促銷基本信息配置、促銷類型配置、時間周期規則配置、促銷范圍配置、促銷商品配置,以及活動頁展示配置等,
(2)收銀臺支持促銷算價。
推薦算價:支持展示推薦的最優算價,內部集成促銷活動,會員等級折扣,優惠券等優惠方式下的最優價格。
手工算價:支持切換促銷活動,會員等級或優惠券等單一優惠方式。
1.2系統框架結構設計
1.2.1促銷概念定義
(1)促銷大類。
單品促銷:針對指定商品,進行單一化的促銷。
買贈促銷:針對指定商品,進行贈品附加贈送。
條件促銷:針對指定商品,在滿足某種規則條件下,才可以命中促銷優惠,其中條件包含滿減促銷,滿件促銷,第N件折扣等。
(2)促銷類型。
單品促銷:只針對商品緯度的單一化促銷方式,例如,特價商品,即一口價商品;固定折扣比例商品,即打折商品。
買贈促銷:針對指定商品的購買,進行贈品贈送的促銷活動,贈品可以有多個也可以任選一個。
滿減促銷:滿減,針對指定商品的購買,商品總價滿X元,進行減免Y元的促銷活動;每滿減,針對指定商品的購買,商品總價每滿X元,多次減免Y元的促銷活動;滿額折扣,針對指定商品的購買,商品總價滿X元,進行打Y折扣的促銷活動;階梯滿減,針對指定商品的購買,商品總價滿足多個不同的門檻金額,進行對應不同的減免金額的促銷活動。
滿件促銷:M件N元,針對指定商品的購買,商品總件數滿M件,則支付N元的促銷活動,例如,某商品3件10元;滿M件折扣,針對指定商品的購買,商品總件數滿M件,進行打N折扣的促銷活動,例如,某商品3件6折;滿M件免,針對指定商品的購買,商品總件數滿M件,則進行減免Ⅳ件價格的促銷活動,例如,某商品買2送1,即滿3件免1件;滿M件立減,針對指定商品的購買,商品總件數滿M件,進行減免Ⅳ元的促銷活動。同時,以上指定商品包含任意商品,相同商品和不同商品3種情況。
第N件打折:第N件折扣,針對指定商品的購買,商品購買N件,則對第N件商品進行打X折扣的促銷活動;第N件立減,針對指定商品的購買,商品購買N件,則對第N件商品進行減免X元的促銷活動;第N件特價,針對指定商品的購買,商品購買Ⅳ件,則對第N件商品進行特價的促銷活動。
1.2.2基礎模型設計
(1)促銷基礎信息。
用于配置促銷活動的基本信息,包含促銷名稱、促銷大類、促銷類型、促銷級別、疊加規則等基礎信息。
(2)促銷規則定義。
用于配置促銷的核心規則,抽象為RULE和ACTION兩個概念。
RULE:促銷條件規則,即在滿足什么條件下,促銷才可以生效,為空代表無條件。
ACTION:促銷行為,即消費活動滿足Rule后,將執行的優惠動作規則。
(3)促銷時間規則。
用于配置促銷活動生效的時間范圍。
普通時間段:指定開始時間和結束時間。
限制時間段:在普通日期時間段下,可以進行進一步的細化,可指定某些時間范圍內不可命中促銷活動,例如,2022年12月1日~2022年12月31日,每天或某幾天的15:00至16:00不可命中促銷活動。
(4)促銷覆蓋人群。
用于配置促銷活動能夠覆蓋的人群范圍,可基于會員級別指定范圍或基于標簽人群指定范圍。
(5)促銷商品。
用于配置促銷活動覆蓋的商品范圍。其商品覆蓋范圍分為基于商品維度的選擇、基于商品主類別維度的選擇、基于商品多級品類維度的選擇、從細粒度到粗粒度的多種選擇方式。
1.2.3基于設計模式的架構模型設計(見圖1)
(1)上下文模型。
促銷處理器工廠:使用設計模式之工廠模式,工廠類根據傳入的標記,創建對應產品的實例.即創建一個促銷處理器生成工廠,通過傳入的促銷處理器類型,創建對應類型的促銷處理器實例。
促銷處理器執行鏈:使用設計模式之責任鏈模式,將請求的發送者和請求的處理者解耦合,使多個處理者都有機會處理這個請求,即創建一個促銷處理器責任鏈,將命中的多個由促銷處理器工廠創建出來的促銷處理器實例,按照順序規則掛載到此促銷處理器責任鏈上,使得促銷算價請求,可以被多個促銷處理器依此處理。
核心計算模型:使用設計模式之中介者模式,用一個中介對象來封裝一系列的對象交互,即創建一個促銷計算單元對象,其中封裝了鏈路促銷信息、促銷商品信息、促銷疊加規則等,作為促銷計算的核心單元。
(2)處理器抽象模型。
促銷執行器接口:使用設計模式之策略模式,使用一系列的算法,將一些對象封裝起來,使其可以在不同的場景進行切換,即通過一個促銷處理器上層接口,其中定義一系列算法規則,不同的促銷處理器實現類實現同一個上層接口,并實現具體的算法邏輯。
促銷執行器抽象類:使用設計模式中的模板模式,定義一個算法結構,并將一些步驟延遲到子類實現,即創建一個促銷處理器抽象類,其中定義一些計算方法結構,內部實現公共計算邏輯,同時將一些差異計算邏輯下放到實現此促銷處理器抽象類的子類促銷處理器中,并具體實現。
(3)處理器實現模型。
促銷執行器(單品促銷-特價):實現單品促銷中特價計算邏輯。
促銷執行器(單品促銷-折扣):實現單品促銷中折扣計算邏輯。
促銷執行器(條件促銷-滿減促銷-滿減):實現滿減促銷中的滿減計算邏輯。
促銷執行器(條件促銷-滿減促銷-每滿減):實現滿減促銷中的每滿減計算邏輯。
促銷執行器(條件促銷-滿減促銷-階梯滿減):實現滿減促銷中的階梯滿減計算邏輯。
促銷執行器(條件促銷-滿減促銷-滿額折扣):實現滿減促銷中的滿額折扣計算邏輯。
促銷執行器(條件促銷-滿件促銷-滿M件折扣):實現滿件促銷中的滿M件折扣計算邏輯。
促銷執行器(條件促銷-滿件促銷-滿M件立減):實現滿件促銷中的滿M件立減計算邏輯。
促銷執行器(條件促銷-滿件促銷-M件N元):實現滿件促銷中的M件N元計算邏輯。
促銷執行器(條件促銷-滿件促銷-滿M件免):實現滿件促銷中的滿M件免計算邏輯。
促銷執行器(買贈促銷-買贈促銷-贈品任選1):實現買贈促銷中贈品任選1計算邏輯。
促銷執行器(條件促銷-第N件促銷-第N件特價):實現第N件促銷中第N件特價計算邏輯。
促銷執行器(條件促銷-滿件促銷-第N件立減):實現第N件促銷中第N件立減計算邏輯。
促銷執行器(條件促銷-滿件促-第N件折扣):實現第N件促銷中第N件折扣計算邏輯。
2詳細實現過程
2.1技術框架引入
2.1.1后端技術
(1)程序實現語言。
Java:Java是一種面向對象的高級程序語言,且具有大部分編程語言所共有的一些特征,其被用在互聯網的分布式環境中。
(2)數據庫。
MySQL:MySQL是一個關系型數據庫管理系統,通過字段維度關聯,表示數據間的關系,是一個主流的關系型數據庫系統。
(3) Web應用服務器。
Tomcat:Web應用服務器,用來部署Web應用,對外提供HTTP訪問服務。
2.1.2前端技術
(1)程序實現語言。
VUE:-款用于構建用戶界面的JavaScript框架。它基于標準Html,CSS和JavaScript構建,并提供了一套聲明式、組件化的編程模型,幫助開發者高效地開發用戶界面。
(2)后臺頁面UI框架。
ELEMENTUI:ELEMENTUI是一套UI框架,封裝了后臺管理頁面常用組件,與Vue完美契合,可以快速構建功能型頁面。
2.2設計模式引入
2.2.1單例模式
定義:確保某一個類只有一個實例,而且自行實例化并向整個系統提供這個實例。
使用:通過使用Spring框架中的單例模式,將交給Spring IOC容器管理的Bean定義為單例對象,并通過依賴注入DI的方式,提供訪問點。
2.2.2工廠模式
定義:定義一個用于創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類是實例化延遲到其子類。
使用:定義用于生成促銷處理器的促銷處理器工廠類,用于實例化具體的促銷處理器對象。
2.2.3策略模式
定義:定義一組算法,將每個算法都封裝起來,并使他們之間可以互換。
使用:將不同的促銷處理器的邏輯封裝成不同的算法對象,使得不同的促銷處理器計算邏輯相互沒有影響,通過結合靜態工廠的方式,將這些促銷處理器算法對象進行統一管理,并使用Java多態特性,通過不同的關鍵字KEY,使得不同的促銷處理器對象可以相互替換使用。
2.2.4責任鏈模式
定義:使多個對象都有機會處理請求,從而避免請求的發送者和接受者之間的耦合關系,將這些對象連成一條鏈,并沿著這條鏈傳遞更改請求,直到有對象處理它。
使用:促銷活動的業務場景存在一次消費行為命中多個促銷活動的情況,并且促銷活動可相互疊加,類比為一個請求,需要被多個促銷處理器對象處理,并且按照一定規則順序處理;創建一條執行鏈,將命中的促銷處理器掛載到鏈上,請求沿著執行鏈傳遞計算。
2.2.5中介者模式
定義:用一個中介對象來封裝一系列的對象交互,中介者使得各對象不需要顯式的相互作用,從而使其耦合松散,而且可以獨立改變它們之間的交互。
使用:定義一個促銷處理單元對象,在促銷執行鏈執行的過程中,單元對象將過程中使用到的相關元數據進行封裝和處理。
2.2.6模板模式
定義:定義一個操作中算法的框架,而將一些步驟延遲到子類中,使得子類可以不改變一個算法的結構即可重新定義該算法的某些特定步驟。
使用:定義一個促銷執行器抽象類,用于規范促銷執行器的算法結構,并且在其中實現一些公共的算法邏輯,同時一些結構性的方法交給子類去重載實現,保證不會改變促銷執行器計算的邏輯步驟。
2.3數據庫設計
數據庫設計如圖2所示。
2.4核心業務邏輯設計
2.4.1創建促銷活動
創建促銷活動如圖3所示。
2.4.2消費行為命中促銷
消費行為命中促銷如圖4所示。
2.5核心代碼實現邏輯
2.5.1促銷處理器上層接口
作用:用來定義算法結構,規范實現類的算法結構邏輯。
接口:IPromotionHandler
方法:void embark(Promotionlnfo promotionlnfo);∥裝載促銷信息
Uhandler f PromotionHandlerChain promotionHandlerChain,U unit);∥沿鏈執行
IPromotionHandler clone();∥克隆促銷處理器
2.5.2促銷處理器靜態工廠
作用:用來存取促銷處理器實現類的實例化對象的靜態集合。
工廠類:PromotionHandlerFactory
方法:public static void register(args){}∥注冊促銷處理器實例化對象到靜態工廠
public static IPromotionHandler get(args){}∥獲取促銷處理器實例化對象
2.5.3促銷處理器責任鏈
作用:用來定義促銷處理器執行的鏈路,促銷處理器沿著此鏈路執行。
責任鏈類:PromotionHandlerChain
2.5.4促銷處理器抽象類
作用:用來定義促銷處理器的算法結構,并將一些邏輯延遲到子類實現。
抽象類:AbstractPromotionHandler implements IPromotionHandler
方法:protected abstract Class getRuleClazz();∥促銷定義規則class獲取
protected abstract Class getActionClazz();∥促銷定義動作class獲取
protected abstract PromotionModeEnumembarkPromotionMode();∥當前促銷模式
protected abstract BigDecimal calclnfo(args){}∥促銷計算
public PromotionCalcUnit handler(args){}∥促銷執行
2.5.5促銷處理器實現類
作用:“單品促銷.特價優惠”的具體實現。
實現類:SpecialSalePromotionHandler extendsAbstractPromotionHandler
方法:protected ClassgetRuleClazz(){return Rule.class;}
protected Class getActionClazz() {returnAction.class:}
protected PromotionModeEnumembarkPromotionMode(){return SPECIAL_SALE;}
protected abstract BigDecimal calclnfo(args){}∥具體促銷計算邏輯
3構建Web應用
3.1后端服務
3.1.1網絡資源環境
(1)申請域名。
基于一級域名www.xxx. com,申請后端二級域名promotion-api.xxx.com,并將此二級域名和內網lP映射到NGINX反向代理服務器。
(2)SSL安全證書。
基于二級域名promotion. xxx.com,申請SSL安全證書,支持HTTPS安全協議訪問,并將此證書配置到NGINX反向代理服務器中的此域名下。
3.1.2應用服務環境
部署促銷活動服務。促銷系統的核心服務就是將代碼基于Jenkins構建成可執行JAR包,通過Java-jar的命令,運行此JAR包,在Tomcat應用服務器中,對外提供支持HTTPS協議訪問的服務。
3.2前端應用
3.2.1網絡資源環境
(1)申請域名。
基于一級域名www. xxx.com,申請前端二級域名promotion.xxx.com,并將此二級域名和公網lP地址映射到DNS服務器中。
(2)配置指向。
在NGINX反向代理服務器中,將二級域名promotion.xxx.com配置指向一個靜態文件目錄,以請求訪問該目錄下的靜態資源。
3.2.2靜態資源環境
靜態資源上傳。基于NPM打包前端代碼,生成加密后的靜態資源,并將此靜態資源上傳到服務器的靜態資源目錄下,對外提供訪問服務。
3.2.3前端頁面展示
促銷配置頁面如圖5所示。
4結束語
在互聯網的浪潮下,電商業務成為互聯網行業中最前沿的業務,在面向C端用戶的場景中,如何提升銷售業績,如何更好地為用戶服務,成為最重要的課題。促銷活動系統在其中扮演著不可或缺的角色,本文構建的輕量級促銷活動系統,具有支持分布式環境、高可用、高并發、可拓展等特性,同時在新促銷方式的二次開發上,也具有較好的復用性和可擴展性,基本滿足主流電商業務中的促銷場景。
作者簡介:
齊云浩(1993—),本科,研究方向:互聯網電子商務、微服務架構、分布式服務、人機交互系統、基于設計模式構建輕量級促銷活動系統。