1. 前言
發(fā)放優(yōu)惠券是一種運營手段斩披,由系統(tǒng)(運營人員)創(chuàng)建溜族,用戶使用。課程中詳細講述了優(yōu)惠券的創(chuàng)建垦沉、使用煌抒、與訂單的關聯(lián)。
優(yōu)惠券從創(chuàng)建到使用厕倍,整個的生命周期如下:
優(yōu)惠券生命周期-流程圖
課程傳送門
2. 需求分析
優(yōu)惠券的功能包括:
- 運營人員在后臺創(chuàng)建/修改優(yōu)惠券寡壮,可查看優(yōu)惠券信息及使用情況;
- 用戶下單使用優(yōu)惠券讹弯;
功能需求可歸納為以下幾點: - 優(yōu)惠券有 滿減况既、折扣兩種類型,可設置有效期组民、最低訂單金額等使用規(guī)則棒仍,可設置優(yōu)惠券狀態(tài);
-
同一用戶不可重復使用同一優(yōu)惠券臭胜;
后臺管理-優(yōu)惠券列表-效果圖
使用優(yōu)惠券下單-效果圖
3. 表設計
3.1 實現(xiàn)邏輯
優(yōu)惠券的創(chuàng)建/修改/查看邏輯都很簡單莫其,按照需求新建一個優(yōu)惠券表癞尚,記錄優(yōu)惠券的類型、使用規(guī)則等屬性乱陡,用laravel-admin可快速實現(xiàn)浇揩。優(yōu)惠券的使用關系到訂單金額的重新計算,需要在訂單表中關聯(lián)使用的優(yōu)惠券憨颠。
3.2 表設計
# 優(yōu)惠券表
CREATE TABLE `coupon_codes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT, # 自增ID
`name` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 優(yōu)惠券標題
`code` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 優(yōu)惠碼
`type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL, # 優(yōu)惠券類型
`value` decimal(8,2) NOT NULL, # 折扣值胳徽,根據(jù)不同類型含義不同
`total` int(10) unsigned NOT NULL, # 可兌換數(shù)量
`used` int(10) unsigned NOT NULL DEFAULT '0', # 已兌換數(shù)量
`min_amount` decimal(10,2) NOT NULL, # 使用規(guī)則:最低訂單金額
`not_before` datetime DEFAULT NULL, # 使用規(guī)則:使用優(yōu)惠券的開始時間
`not_after` datetime DEFAULT NULL, # 使用規(guī)則:使用優(yōu)惠券的結束時間
`enabled` tinyint(1) NOT NULL, # 使用規(guī)則:優(yōu)惠券是否生效
`created_at` timestamp NULL DEFAULT NULL, # 創(chuàng)建時間
`updated_at` timestamp NULL DEFAULT NULL, # 更新時間
PRIMARY KEY (`id`),
UNIQUE KEY `coupon_codes_code_unique` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
# 訂單表增加優(yōu)惠券ID字段
ALTER TABLE `orders` ADD `coupon_code_id` int(10) unsigned DEFAULT NULL;
ALTER TABLE `orders` ADD CONSTRAINT `orders_coupon_code_id_foreign` FOREIGN KEY (`coupon_code_id`) REFERENCES `coupon_codes` (`id`) ON DELETE SET NULL;
4. 代碼借鑒
這一節(jié)的功能也比較簡單,在訂單創(chuàng)建對優(yōu)惠券的校驗部分烙心,創(chuàng)建訂單前對優(yōu)惠券進行了一次狀態(tài)檢查膜廊,創(chuàng)建訂單時又做了一次規(guī)則校驗,邏輯嚴謹淫茵。
從需求來講爪瓜,優(yōu)惠券從創(chuàng)建到用戶使用,中間還有一個優(yōu)惠券發(fā)放的功能匙瘪,再做一個用戶優(yōu)惠券列表铆铆,下單時選擇,這里可以拓展完善一下丹喻。