laravel電商學(xué)習(xí)系列-04 商品模塊-進階 眾籌

1. 前言

前面已經(jīng)實現(xiàn)了基礎(chǔ)的商品模塊,本章節(jié)繼續(xù)梳理近年間電商行業(yè)大熱的眾籌和秒殺。
課程傳送門-眾籌商品
課程傳送門-秒殺商品

2. 功能分析

2.1 眾籌

2.1.1 需求分析

與普通商品相比,眾籌商品有如下特殊的業(yè)務(wù)邏輯:

  • 需要設(shè)置目標金額與截止時間;
  • 到達截止時間時如果總訂單金額低于目標金額則眾籌失敗,并退款所有訂單;
  • 到達截止時間時如果總訂單金額大等于目標金額則眾籌成功;
  • 眾籌訂單不支持用戶主動申請退款;
  • 在眾籌成功之前訂單不可發(fā)貨;
眾籌商品詳情頁-效果圖

2.1.2 實現(xiàn)邏輯

眾籌商品是一種新型的商品類型,它有獨特的購買規(guī)則和特有屬性,但它也擁有普通商品的所有屬性,從購買下單到商家發(fā)貨、用戶評分整體的商品購買流程是一樣的。因此,我們只需要在原有商品下單、退款等具體實現(xiàn)過程中,針對眾籌商品做相應(yīng)的規(guī)則校驗即可。

2.1.3 表設(shè)計

眾籌商品擁有非普通商品的特有屬性,采用新增眾籌商品表的方式來保存相關(guān)屬性,眾籌商品表與商品表的關(guān)聯(lián)關(guān)系為一對一。
具體表結(jié)構(gòu)如下:

# 眾籌商品表
CREATE TABLE `crowdfunding_products` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT, # 自增ID
  `product_id` int(10) unsigned NOT NULL, # 對應(yīng)商品表的ID
  `target_amount` decimal(10,2) NOT NULL, # 眾籌目標金額
  `total_amount` decimal(10,2) NOT NULL DEFAULT '0.00', # 當前已籌金額
  `user_count` int(10) unsigned NOT NULL DEFAULT '0', # 參與眾籌用戶數(shù)
  `end_at` datetime NOT NULL, # 眾籌結(jié)束時間
  `status` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'funding', # 當前眾籌狀態(tài),默認眾籌中
  PRIMARY KEY (`id`),
  KEY `crowdfunding_products_product_id_foreign` (`product_id`),
  CONSTRAINT `crowdfunding_products_product_id_foreign` FOREIGN KEY (`product_id`) REFERENCES `products` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

# 商品表
ALTER TABLE `products` ADD `type` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT 'normal'; # 商品類型,默認為普通商品

2.1.4 代碼借鑒

本章節(jié)眾籌商品的處理是對原有普通商品的拓展,不管是從邏輯處理還是從表設(shè)計上來看,都是的。當有拓展出的新需求出現(xiàn)時,怎么制定合適的解決方案,這一點也是我們需要去思考和學(xué)習(xí)的。本章節(jié)學(xué)習(xí)到了以下幾點:

  • 根據(jù)需求拓展和封裝現(xiàn)有代碼;
  • 定時任務(wù)和異步任務(wù)的選用考量;
    補充說明一下課程中的眾籌失敗的業(yè)務(wù)處理中,在選用定時任務(wù)和異步任務(wù)上,真的有學(xué)習(xí)到。
    眾籌失敗,采用定時任務(wù)每隔一段時間掃描所有眾籌狀態(tài)滿足眾籌失敗條件的商品,更新眾籌狀態(tài)為失敗,并進行退款。精彩的點就在于,對退款操作的考慮。課程中,考慮到退款操作涉及第三方,耗時長,將退款操作改為異步隊列執(zhí)行,超贊的解決方案!

課程中具體的考量原文如下:


眾籌商品實現(xiàn)方案的考量

眾籌商品退款操作的優(yōu)化

上一節(jié):03 商品模塊-進階 商品類目
下一節(jié):05 購物車&訂單模塊

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容