Java生鮮電商平臺-優惠券系統的架構設計與源碼解析
?
電商后臺:實例解讀促銷系統
電商后臺系統包括商品管理系統、采購系統、倉儲系統、訂單系統、促銷系統、維權系統、財務系統、會員系統、權限系統等,各系統之間相互關聯、相互依托,為前端的正常業務流轉建立結實穩固的基礎。
促銷系統的主要目的是便于運營設置各種促銷方式,以提高商品的銷量、用戶的客單價等。
在后臺各系統中,促銷系統和商品管理系統、訂單系統關聯最大,商品管理系統為促銷系統提供活動商品,用戶下單后,促銷優惠信息會展示在訂單系統中。
促銷系統介紹
促銷系統主要包括促銷活動管理和促銷類型管理。

1、促銷活動管理包含活動信息和活動狀態管理:
活動信息
- 活動名稱:可用于區分促銷活動,同時也便于查詢;
- 活動時間:促銷活動的生效時間;
- 活動規則:對應不同活動類型的規則,比如滿X減N,均需要設置;
- 活動商品:參加促銷活動的商品,按照不同活動類型,可分為活動主商品與贈品。
活動狀態
按照活動時間,可分為未開始、進行中、已結束。
- 未開始的促銷活動可隨意編輯活動信息或者刪除活動;
- 進行中的促銷活動為防止突發情況,一般有終止活動操作,也可編輯添加移除商品,但一般不能修改活動規則,否則容易導致前端購買體驗不佳;
- 已結束的促銷活動不可編輯。
2、促銷類型一般包括:滿減、滿贈、滿折、加價購、特價、套餐、預售、秒殺等。
促銷活動創建流程
后臺創建促銷活動的流程一般是:
- 選擇活動類型;
- 設置相關活動信息:活動名稱、活動時間、活動規則等,不同活動類型需要進行不同的設置操作,具體可見下方示例;
- 選擇活動主商品。對于和贈品相關的活動,在主商品外,需要另選擇參與活動的贈品,此處可注意,有些平臺會將贈品作為一種單獨的商品類型,而有些平臺則可直接將主商品作為贈品;
- 活動信息設置好后,在活動生效時間內,前端用戶可見。
促銷系統后臺示例
下面以示例來對各個促銷類型的創建進行簡單說明。
1、滿減
- 階梯滿減:按消費的階梯額度設置相應的滿減值,消費額度越高滿減力度越大,以此來刺激用戶提高單次購買金額,例如滿100-10、滿200-30、滿300-60等。
- 每滿減:消費每達到一個額度則滿減定值,例如每滿100-10。
- 設置內容包括:活動名稱、活動時間、滿減方式、活動商品。
設置階梯滿減時,可以對滿減額度做監控,以免高額度的滿減值低于低額度的滿減值情況出現。

2、滿贈
- 滿額贈:消費達到一定額度,則贈送相應東西給用戶,贈送內容一般是特定贈品,例如消費滿1000送圍巾。
- 滿件贈:消費達到一定件數,則贈送相應東西給用戶,贈送內容可以是相同商品,例如滿2件送一件。
- 設置內容包括:活動名稱、活動時間、滿贈方式、活動商品、贈品。
上文有提過,各個電商平臺對于贈品的定義是不一樣的。有些平臺的贈品不會對外銷售,因此將贈品也作為一個商品類型,僅用作贈送活動;而有些平臺則可將正常售賣商品作為贈品。因此需根據平臺業務來定義贈品:若是第一種,則選擇贈品時,只顯示類型為贈品的商品;若是第二種,則選擇贈品時,顯示所有的商品。

3、滿折
- 滿額折:消費達到一定額度,可享受相應折扣,例如滿500享8折。
- 滿件折:消費達到一定件數,可設置相應折扣,例如滿2件享7折。
- 階梯滿折:按消費的階梯額度享受相應的折扣,消費額度越高折扣力度越大,即可包含滿額折,例如滿200打9折,滿400打8折,也可包含滿件折,例如滿2件享7折、滿3件享6折、滿5件享5折等。
- 設置內容包括:活動名稱、活動時間、滿折方式、活動商品。

4、加價購
- 消費達到一定額度,可享受低價換購其他商品,以主商品帶動其他商品銷售。
- 設置內容包括:活動名稱、活動時間、加購設置(滿X元加N元)、活動商品、加價購商品。
加價購活動的設置中,購買“活動商品”的金額達到加購設置的滿額時,可以以加購價購買“加價購商品”。一般加價購商品的價格需要高于設置的加購價,因此選擇商品時,可對價格做監控,防止有商品價格過低。

5、套餐
- 將幾件商品作為組合套餐一起銷售,用戶既可購買套餐,也能單獨購買其中商品
- 設置內容包括:活動名稱、活動時間、套餐價格、活動商品。
注意:套餐價格不能超過套餐商品原價的總和。

6、預售
- 用戶可預先支付定金,商品正式開售后,定金可抵售價(一般抵消價格大于定金)。
- 設置內容:活動名稱、活動時間、預付定金比例、定金倍數、活動商品。
預售是現在主流電商平臺經常使用的促銷手段。預售促銷不僅可以用定金抵押來刺激用戶購買商品,同時還可以根據用戶的消費意愿,判斷商品的市場,以此來有效規避庫存積壓。

7、秒殺
- 設置某段時間內,用戶可以極低價格搶購商品。
- 設置內容:活動名稱、活動時間、活動商品、秒殺價格(秒殺商品的價格即可設置成統一的,也可設置成不同的價格)。
秒殺促銷通常作為引流利器,在某個秒殺時間段內吸引大量用戶前來搶購。

以上介紹的都是基礎的促銷方式,要讓促銷發揮其最大的優勢,需要運營人員結合實際業務情況、用戶需求進行設置。
電商系統 | 如何根據系統模塊來設計產品?(促銷體系篇)
系統化的產品經理逐漸在變得越來越重要,并不是以前單純的頁面和交互來做產品,而是通過功能一步步延伸到模塊,再從模塊趨變于系統的架構。
當系統化變得越來越重要時,我們就應該思考怎么從大方向來思考產品,如何搭建產品架構?
我們可以回想:整體系統的搭建尤其是以電商系統為藍本,產品肯定是要商業化,商業化就離不開電商變現,也就會涉及到電商管理系統。而現在電商后臺的體系成熟化、完整化,對我們去理解系統本身都有很強的參考意義。
然而,每次逛電商網站,總有一大堆促銷活動。加上現在移動端社交電商的崛起,拉新和促活就是變得尤為重要。可以說促銷活動的多樣化是日常運營的重要部分。
那么,其實我們在思考一下:為什么大家如此熱衷于促銷活動?
- 拉新:促銷活動可以帶來新用戶,尤其是用戶較少的新平臺、新店鋪,通過這種方式來吸引用戶。
- 去庫存:通過活動可以清理庫存,降低庫存占用成本。
- 擴大品牌知名度:結合廣告做促銷能夠擴大品牌知名度。
- 推新品爆品:很多商家大力做活動來推新品或者爆品,增加店鋪流量,同時也能給其他商品帶來曝光的機會。
- 針對于提高客單價,可以通過在優惠券、滿減滿贈等方案刺激下,用戶都會去湊單購買,同時針對于促銷手段的方式,也可以產生用戶自發的額外購買行為。
促銷的形態是基于已有商品管理的角度上針對于商品進行有關聯的促銷形態展示。商品中心的展示就變得尤為重要,對應的商品SKU、商品類目和商品價格(原價、促銷價)等有關商品的數據都需要有基礎展示。
促銷的方式有很多種,剛開始是把線下的促銷形式搬到了線上,比如:滿減促銷、贈品促銷、單品促銷、多買優惠促銷和定金促銷等。
而現在的促銷方式包含1元奪寶、秒殺活動、團購活動、拍賣活動、拼團等形態。接下來,就一一聊下這些形態的配置和展示形態。
一、批發方案
B端商品經常會有批發模式,前端的展示:

通過模型描述:(針對單一的SKU形成組合,單一商品SKU和批發商品形成的“多對多”關系)

則后臺怎么配置呢?
(1)批發商品列表(包含商品名稱、商家名稱、起訂量、是否啟用、產品審核狀態和操作“查看、編輯和刪除”)

(2)編輯和新增批發商品展示界面

字段1:批發商品名稱是從商品列表中去選擇。
字段2:批發商品分類是從商品分類中選擇。
后續的字段:顯示采購、價格模式(階梯價格)、最小起訂量、庫存和商品屬性都是和批發活動對應的字段。
由此,可以看出:“商品樣式——促銷類型——用戶關系信息”三者形成了促銷體系對應的內容。當然這個只是針對于單一的批發促銷方案,若為o2o商城,可以分為自營和商家對應促銷管理。
二、優惠券促銷
優惠券是電商產品中最常見的促銷方式,無論是產品在哪個階段都是最有效的促銷手段。優惠券的整體模型為:

優惠券的基本展示樣式:(當然這只是一種展示樣式)

則后臺的配置和設置:
(1)通用券(主要針對于商品面值和使用門檻,以及每人限領張數),若商家發放的 同樣可以添加指定商家等

(2)同樣購物券(場景主要是針對用戶購買商品后,給用戶返的優惠券)

主要增加了用戶獲取優惠券的門檻(購物滿XX元和允許參加的會員,允許參加的會員就需要和會員體系打通)
三、拼團活動促銷
拼多多是拼團活動的集大成者,規則是指定數量的人一起購買某商品,可以通過比較低廉的價格獲得此商品。
拼團的邏輯為:

前端的基本展示樣式為:

那后端的開團列表為:

編輯和新增拼單開團:

四、拍賣促銷
拍賣方式一直都有,只不過應用在商品中的樣式還是比較少的,這里稍微的介紹下:
前端展示樣式:

后臺需要創建拍賣列表:

對應的拍賣商品的編輯和新增:

當然這兒只列舉了這幾種優惠促銷的方案。還有很多種優惠促銷的方案,后面可以一起聊聊。
總結一下:
- 上面只是針對性的做頁面的設置和字段,以及前端的展示和業務邏輯。在進行促銷活動產品設計時,除了基礎的促銷活動設置管理,還應考慮促銷活動在前端頁面顯示的樣式,包括在活動聚合頁面、商品詳情頁、購物車、訂單頁中的顯示。此外還應該考慮活動商品在訂單結算時的計算規則,優惠分攤。
- 在前端顯示優惠信息時,不但應該展示清晰、提醒友好,還應能鏈接到同類活動的其他商品,刺激用戶的消費需求,引導湊單下單。應提供多樣化的促銷方式,避免單一促銷方式給用戶帶來的疲憊感。
- 對于產品經理來說,后續針對促銷后的解決方案比如退款的操作樣式和訂單的扭轉才是最重要的。畢竟,不能和主流程沖突。
代碼與數據庫下載:
?
相關表結構
優惠券表
用于存儲優惠券信息,需要注意的是優惠券的使用類型:0->全場通用;1->指定分類;2->指定商品,不同使用類型的優惠券使用范圍不一樣。
create table sms_coupon
(id bigint not null auto_increment, type int(1) comment '優惠卷類型;0->全場贈券;1->會員贈券;2->購物贈券;3->注冊贈券', name varchar(100) comment '名稱', platform int(1) comment '使用平臺:0->全部;1->移動;2->PC', count int comment '數量', amount decimal(10,2) comment '金額', per_limit int comment '每人限領張數', min_point decimal(10,2) comment '使用門檻;0表示無門檻', start_time datetime comment '開始使用時間', end_time datetime comment '結束使用時間', use_type int(1) comment '使用類型:0->全場通用;1->指定分類;2->指定商品', note varchar(200) comment '備注', publish_count int comment '發行數量', use_count int comment '已使用數量', receive_count int comment '領取數量', enable_time datetime comment '可以領取的日期', code varchar(64) comment '優惠碼', member_level int(1) comment '可領取的會員類型:0->無限制', primary key (id) );
優惠券歷史記錄表
用于存儲會員領取及使用優惠券的記錄,當會員領取到優惠券時,會產生一條優惠券的記錄,需要注意的是它的使用狀態:0->未使用;1->已使用;2->已過期。
create table sms_coupon_history
(id bigint not null auto_increment, coupon_id bigint comment '優惠券id', member_id bigint comment '會員id', order_id bigint comment '訂單id', coupon_code varchar(64) comment '優惠券碼', member_nickname varchar(64) comment '領取人昵稱', get_type int(1) comment '獲取類型:0->后臺贈送;1->主動獲取', create_time datetime comment '創建時間', use_status int(1) comment '使用狀態:0->未使用;1->已使用;2->已過期', use_time datetime comment '使用時間', order_sn varchar(100) comment '訂單號碼', primary key (id) );
優惠券和商品的關系表
用于存儲優惠券與商品的關系,當優惠券的使用類型為指定商品時,優惠券與商品需要建立關系。
create table sms_coupon_product_relation
(id bigint not null auto_increment, coupon_id bigint comment '優惠券id', product_id bigint comment '商品id', product_name varchar(500) comment '商品名稱', product_sn varchar(200) comment '商品條碼', primary key (id) );
優惠券和商品分類關系表
用于存儲優惠券與商品分類的關系,當優惠券的使用類型為指定分類時,優惠券與商品分類需要建立關系。
create table sms_coupon_product_category_relation
(id bigint not null auto_increment, coupon_id bigint comment '優惠券id', product_category_id bigint comment '商品分類id', product_category_name varchar(200) comment '商品分類名稱', parent_category_name varchar(200) comment '父分類名稱', primary key (id) );
管理端展現
優惠券列表

編輯優惠券
全場通用

指定商品

指定分類

查看優惠券

移動端展現
我的優惠券
未使用

已使用

已過期

優惠券詳情

? ? ? 代碼與數據庫下載,請進QQ群下載。(793305035)