建立網(wǎng)站項(xiàng)目百度商城購(gòu)物
【云嵐到家-即刻體檢】-day07-4-實(shí)戰(zhàn)項(xiàng)目-優(yōu)惠券活動(dòng)-活動(dòng)管理
- 1 模塊需求分析
- 1.1 業(yè)務(wù)流程
- 1.2 界面原型
- 1.3 業(yè)務(wù)模塊
- 2 模塊設(shè)計(jì)
- 2.1 數(shù)據(jù)流
- 2.2 表結(jié)構(gòu)設(shè)計(jì)
- 2.2.1 優(yōu)惠券活動(dòng)表設(shè)計(jì)
- 2.2.2 優(yōu)惠券表設(shè)計(jì)
- 2.2.3 優(yōu)惠券核銷表
- 2.2.4 優(yōu)惠券退回表
- 2.3 創(chuàng)建數(shù)據(jù)庫(kù)
- 2.4 創(chuàng)建工程
1 模塊需求分析
1.1 業(yè)務(wù)流程
優(yōu)惠券是最常用的一種營(yíng)銷活動(dòng),優(yōu)惠券模塊涉及到優(yōu)惠券活動(dòng)管理、搶券、優(yōu)惠券核銷三部分,涉及到的用戶角色有運(yùn)營(yíng)人員和用戶,下圖是優(yōu)惠券模塊的整體業(yè)務(wù)流程。
優(yōu)惠券活動(dòng)管理:
運(yùn)營(yíng)人員在后臺(tái)添加優(yōu)惠券活動(dòng),包括:新增優(yōu)惠券活動(dòng)、修改優(yōu)惠券活動(dòng)、撤銷優(yōu)惠券活動(dòng)等操作。
搶券:
優(yōu)惠券到達(dá)發(fā)放時(shí)間用戶領(lǐng)取優(yōu)惠券,因?yàn)閮?yōu)惠券的數(shù)量有限,當(dāng)?shù)竭_(dá)發(fā)放時(shí)間后平臺(tái)所有用戶都可以搶券,先到先得。
優(yōu)惠券核銷:
用戶搶到優(yōu)惠券即可在下單時(shí)使用優(yōu)惠券,享受優(yōu)惠,如果取消訂單將退回優(yōu)惠券,優(yōu)惠券退回后可用于其它訂單。
1.2 界面原型
查詢優(yōu)惠券活動(dòng)信息:
新增優(yōu)惠券活動(dòng):
搶券:
到達(dá)優(yōu)惠券發(fā)放時(shí)間用戶開(kāi)始搶券,在搶券界面列出了進(jìn)行中的活動(dòng)和即將開(kāi)始的活動(dòng)。
用券:
在下單時(shí)選擇優(yōu)惠券:
支付金額減去優(yōu)惠金額:
1.3 業(yè)務(wù)模塊
根據(jù)流程分析,優(yōu)惠券模塊可分為三個(gè)小模塊,如下:
優(yōu)惠券活動(dòng)管理:
對(duì)優(yōu)惠券活動(dòng)進(jìn)行管理,運(yùn)營(yíng)人員新增優(yōu)惠券活動(dòng)、修改優(yōu)惠券活動(dòng)、撤銷優(yōu)惠券活動(dòng)及優(yōu)惠券統(tǒng)計(jì)等。
搶券:
到了優(yōu)惠券發(fā)放時(shí)間用戶進(jìn)行搶券,搶券過(guò)程對(duì)優(yōu)惠券庫(kù)存、對(duì)用戶領(lǐng)取優(yōu)惠券數(shù)量等進(jìn)行校驗(yàn),搶券成功記錄用戶領(lǐng)取優(yōu)惠券的記錄。
核銷:
用戶在下單時(shí)使用優(yōu)惠券得到優(yōu)惠金額,實(shí)付金額等于訂單金額減去優(yōu)惠金額,下單成功優(yōu)惠券核銷成功。
優(yōu)惠券核銷是指:顧客在購(gòu)買商品使用優(yōu)惠券,當(dāng)此次消費(fèi)符合優(yōu)惠券的條件時(shí)提交訂單后將優(yōu)惠券的折扣應(yīng)用到顧客的訂單中,最后將優(yōu)惠券標(biāo)記為已使用或作廢。
優(yōu)惠券核銷后還可以取消核銷,如果用戶取消訂單會(huì)將優(yōu)惠券取消核銷即退回優(yōu)惠券,退回優(yōu)惠券后可以繼續(xù)使用。
2 模塊設(shè)計(jì)
2.1 數(shù)據(jù)流
根據(jù)需求分析優(yōu)惠券模塊的數(shù)據(jù)流如下:
優(yōu)惠券活動(dòng)表:
優(yōu)惠券活動(dòng)管理模塊主要操作優(yōu)惠券活動(dòng)表。
優(yōu)惠券活動(dòng)記錄優(yōu)惠券活動(dòng)信息,運(yùn)營(yíng)人員新增優(yōu)惠券活動(dòng)將寫入此表,此表是優(yōu)惠券管理主要維護(hù)的表。
關(guān)鍵字段:活動(dòng)id、活動(dòng)名稱、優(yōu)惠券類型、折扣、發(fā)放時(shí)間等。
優(yōu)惠券表:
搶券模塊主要操作優(yōu)惠券表。
優(yōu)惠券表記錄用戶領(lǐng)取的優(yōu)惠券,用戶搶券存在限制,每種優(yōu)惠券一個(gè)用戶只允許領(lǐng)取一張,優(yōu)惠券的總數(shù)有限制。
關(guān)鍵字段:用戶id、活動(dòng)id、折扣、優(yōu)惠券類型、有效期等。
舉例:一個(gè)優(yōu)惠券活動(dòng)發(fā)放100張優(yōu)惠券最多有100個(gè)用戶去領(lǐng)取,每人領(lǐng)取一張,每個(gè)用戶領(lǐng)取的一張優(yōu)惠券會(huì)記錄在優(yōu)惠券表中,即該優(yōu)惠券活動(dòng)對(duì)應(yīng)優(yōu)惠券表最多100條記錄。
優(yōu)惠券核銷表:
在使用優(yōu)惠券模塊當(dāng)用戶成功使用一張優(yōu)惠券會(huì)在優(yōu)惠券核銷表記錄一條記錄,記錄是哪個(gè)用戶的哪個(gè)訂單使用了哪個(gè)優(yōu)惠券。
關(guān)鍵字段 :用戶id、優(yōu)惠券id、訂單id,核銷時(shí)間。
優(yōu)惠券退回表:
如果用戶取消訂單,則會(huì)退回優(yōu)惠券,具體操作是向優(yōu)惠券退回表添加一條記錄(記錄用戶退回優(yōu)惠券的信息),并向優(yōu)惠券核銷表刪除一條對(duì)應(yīng)的記錄,表示取消優(yōu)惠券的核銷。
關(guān)鍵字段:用戶id、優(yōu)惠券id、退回時(shí)間。
2.2 表結(jié)構(gòu)設(shè)計(jì)
2.2.1 優(yōu)惠券活動(dòng)表設(shè)計(jì)
記錄優(yōu)惠券活動(dòng)信息,運(yùn)營(yíng)人員新增優(yōu)惠券活動(dòng)將寫入此表,此表是優(yōu)惠券管理主要維護(hù)的表。
結(jié)構(gòu)如下:
create table `jzo2o-market`.activity
(id bigint not null comment '活動(dòng)id'constraint `PRIMARY`primary key,name varchar(100) default '0' not null comment '活動(dòng)名稱',type int not null comment '優(yōu)惠券類型,1:滿減,2:折扣',amount_condition decimal(10, 2) not null comment '使用條件,0:表示無(wú)門檻,其他值:最低消費(fèi)金額',discount_rate int default 0 not null comment '折扣率,折扣類型的折扣率,8折就是存80',discount_amount decimal(10, 2) null comment '優(yōu)惠金額,滿減或無(wú)門檻的優(yōu)惠金額',validity_days int default 0 not null comment '優(yōu)惠券有效期天數(shù),0:表示有效期是指定有效期的',distribute_start_time datetime not null comment '發(fā)放開(kāi)始時(shí)間',distribute_end_time datetime not null comment '發(fā)放結(jié)束時(shí)間',status int not null comment '活動(dòng)狀態(tài),1:待生效,2:進(jìn)行中,3:已失效 4:作廢',total_num int default 0 not null comment '發(fā)放數(shù)量,0:表示無(wú)限量,其他正數(shù)表示最大發(fā)放量',stock_num int default 0 not null comment '庫(kù)存',create_time datetime default CURRENT_TIMESTAMP not null comment '創(chuàng)建時(shí)間',update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新時(shí)間',create_by bigint null comment '創(chuàng)建人',update_by bigint null comment '更新人',is_deleted tinyint default 0 not null comment '邏輯刪除'
)charset = utf8mb4;
說(shuō)明:
amount_condition:0表示無(wú)門檻,其它值表示最低消費(fèi)金額。
discount_rate:當(dāng)優(yōu)惠券類型為2折扣時(shí)在此字段中存儲(chǔ)折扣率。
discount_amount:當(dāng)優(yōu)惠券類型為1滿減時(shí)在此字段中存儲(chǔ)優(yōu)惠券金額。
status:活動(dòng)狀態(tài)字段值包括:1:待生效,2:進(jìn)行中,3:已失效 4:作廢 幾種,優(yōu)惠券活動(dòng)的初始狀態(tài)是待生效,當(dāng)?shù)竭_(dá)優(yōu)惠券發(fā)放時(shí)間時(shí)狀態(tài)將改為進(jìn)行中,當(dāng)?shù)竭_(dá)結(jié)束時(shí)間時(shí)狀態(tài)改為已失效,當(dāng)撤銷活動(dòng)后狀態(tài)為作廢。
2.2.2 優(yōu)惠券表設(shè)計(jì)
記錄用戶領(lǐng)取的優(yōu)惠券,結(jié)構(gòu)如下:
create table `jzo2o-market`.coupon
(id bigint not null comment '優(yōu)惠券id'constraint `PRIMARY`primary key,name varchar(255) not null comment '優(yōu)惠券名稱',user_id bigint not null comment '優(yōu)惠券的擁有者',user_name varchar(50) null comment '用戶姓名',user_phone varchar(20) null comment '用戶手機(jī)號(hào)',activity_id bigint not null comment '活動(dòng)id',type int not null comment '使用類型,1:滿減,2:折扣',discount_rate int default 0 null comment '折扣',discount_amount decimal(10, 2) null comment '優(yōu)惠金額',amount_condition decimal(10, 2) not null comment '滿減金額',validity_time datetime null comment '有效期',use_time datetime null comment '使用時(shí)間',status tinyint not null comment '優(yōu)惠券狀態(tài),1:未使用,2:已使用,3:已失效',orders_id varchar(50) null comment '訂單id',create_time datetime default CURRENT_TIMESTAMP not null comment '創(chuàng)建時(shí)間',update_time datetime default CURRENT_TIMESTAMP not null on update CURRENT_TIMESTAMP comment '更新時(shí)間',is_deleted tinyint default 0 not null comment '邏輯刪除'
)charset = utf8mb4;create index user_my_query_indexon `jzo2o-market`.coupon (user_id, status)comment '用戶查詢我的優(yōu)惠券快捷索引';
2.2.3 優(yōu)惠券核銷表
用戶成功使用優(yōu)惠券的記錄,記錄是哪個(gè)用戶的哪個(gè)訂單使用了哪個(gè)優(yōu)惠券。
結(jié)構(gòu)如下:
create table `jzo2o-market`.coupon_write_off
(id bigint not nullconstraint `PRIMARY`primary key,coupon_id bigint not null comment '優(yōu)惠券id',user_id bigint not null comment '用戶id',orders_id bigint not null comment '核銷時(shí)使用的訂單號(hào)',activity_id bigint not null comment '活動(dòng)id',write_off_time datetime not null comment '核銷時(shí)間',write_off_man_phone varchar(20) not null comment '核銷人手機(jī)號(hào)',write_off_man_name varchar(50) not null comment '核銷人姓名'
)comment '優(yōu)惠券核銷表' charset = utf8mb4;
2.2.4 優(yōu)惠券退回表
用戶取消訂單后成功退回優(yōu)惠券的記錄,記錄哪個(gè)用戶退回了哪個(gè)優(yōu)惠券。
結(jié)構(gòu)如下:
create table `jzo2o-market`.coupon_use_back
(id bigint not null comment '回退記錄id'constraint `PRIMARY`primary key,coupon_id bigint not null comment '優(yōu)惠券id',user_id bigint not null comment '用戶id',use_back_time datetime not null comment '回退時(shí)間',write_off_time datetime null comment '核銷時(shí)間'
)comment '優(yōu)惠券使用回退記錄' charset = utf8mb4;
2.3 創(chuàng)建數(shù)據(jù)庫(kù)
創(chuàng)建數(shù)據(jù)庫(kù):jzo2o-market
導(dǎo)入:jzo2o-market-init.sql
2.4 創(chuàng)建工程
在git 遠(yuǎn)程倉(cāng)庫(kù)創(chuàng)建 jzo2o-market工程,創(chuàng)建分支dev_01并切換到該分支。
從資料中獲取源碼:jzo2o-market-01-0.zip,解壓源碼到j(luò)zo2o-market目錄。
下邊在nacos創(chuàng)建配置jzo2o-market.yaml文件
進(jìn)入nacos創(chuàng)建jzo2o-market.yaml
配置文件內(nèi)容如下:
rabbit-mq:enable: true
xxl-job:executor:port: 11610