電商系統(tǒng)購物車模塊設(shè)計
在電商系統(tǒng)中,購物車模塊是用戶購買流程的核心環(huán)節(jié),其設(shè)計的合理性直接影響用戶體驗和銷售轉(zhuǎn)化率。本文將深入探討電商系統(tǒng)購物車模塊的設(shè)計要點,供大家參考。
一、概述
在電商系統(tǒng)中,購物車是核心模塊之一,用戶在瀏覽商品過程中,可將心儀商品添加到購物車,待瀏覽完畢后統(tǒng)一結(jié)算購買。所以一份合理高效的購物車設(shè)計,對于提升用戶體驗、促進(jìn)銷售轉(zhuǎn)化、降低運營成本等方面都有著至關(guān)重要的作用。
由于購物車屬于核心模塊,為講的更清晰,所以針對購物車會拆分幾期來講解
本期針對商品加入購物車、購物車中移除商品、更新購物車中的商品數(shù)量、商品庫存不足、失效商品等場景輸出產(chǎn)品解決方案
二、功能設(shè)計與實現(xiàn)方案
2.1 商品添加到購物車
1、結(jié)構(gòu)設(shè)計
- 商品唯一標(biāo)識:商品ID、SKU ID
- 值為商品對象:數(shù)量、添加時間、狀態(tài)(正常/失效)等字段
- 排序:商品列表按添加/更新時間倒序排列(最新操作置頂)
2、添加邏輯
1)查詢商品在購物車是否存在
用戶點擊 “添加到購物車” 按鈕時,系統(tǒng)首先通過商品ID和SKU ID查詢購物車數(shù)據(jù)結(jié)構(gòu)中是否存在該商品
- 已存在:數(shù)量+1,更新添加時間為當(dāng)前時間(用于置頂排序),將該商品移動到購物車列表頂部
- 不存在:新增條目(新增商品),數(shù)量=1,加入時間=當(dāng)前時間,并置頂,將該商品移動到購物車列表頂部
2)更新總價格:
同時實時計算購物車的總價等信息,如:單價×數(shù)量
3) 存儲:
- 登錄用戶:將購物車數(shù)據(jù)存入Redis
- 未登錄用戶:數(shù)據(jù)緩存在瀏覽器,用戶登錄后合并到Redis(有些電商必須登錄才可以加入購物車,這個根據(jù)實際業(yè)務(wù)去處理)
3、示例:
用戶首次添加商品A(ID=1001),數(shù)量為1,購物車新增條目,并頂部顯示該商品。用戶再次添加同一商品A時,數(shù)量變?yōu)?,商品A繼續(xù)置頂。
2.2 購物車中移除商品
1、移除方式:
- 支持單刪:點擊刪除按鈕
- 批量刪除:勾選后批量操作
2、移除邏輯
1)單個移除:
- 當(dāng)用戶點擊 “從購物車中移除” 按鈕時,前端傳遞需刪除的商品ID/SKU ID
- 后端根據(jù)商品ID、SKU ID、用戶標(biāo)識在購物車數(shù)據(jù)結(jié)構(gòu)表中查找對應(yīng)的商品
- 匹配后從購物車數(shù)據(jù)結(jié)構(gòu)表中刪除對應(yīng)的商品。
- 更新購物車的總價、商品總數(shù)等相關(guān)信息并重新排序剩余商品
2)批量移除:
- 用戶可選擇多個商品進(jìn)行批量刪除,前端傳遞需刪除的商品ID/SKU ID列表
- 后端遍歷購物車數(shù)據(jù)結(jié)構(gòu)中被選中的商品,逐個進(jìn)行刪除操作
- 更新購物車的總價、商品數(shù)等相關(guān)信息并重新排序剩余商品
3、異常處理
- 若刪除失?。ㄈ缇W(wǎng)絡(luò)異常),提示用戶并回滾操作
4、示例
- 用戶勾選5件商品批量刪除,系統(tǒng)遍歷移除后返回剩余列表
2.3 更新購物車中的商品數(shù)量
1、數(shù)量增加 / 減少
1)增加數(shù)量:
- 用戶點擊增加數(shù)量按鈕時,系統(tǒng)在購物車數(shù)據(jù)結(jié)構(gòu)中找到對應(yīng)商品,將其數(shù)量加 1,并相應(yīng)更新購物車總價等信息
- 同時要實時檢查庫存是否充足,若庫存不足則給出相應(yīng)提示并限制數(shù)量增加
2)減少數(shù)量 :
- 用戶點擊減少數(shù)量按鈕時,系統(tǒng)在購物車數(shù)據(jù)結(jié)構(gòu)中找到對應(yīng)商品,將其數(shù)量減 1,并相應(yīng)更新購物車總價等信息
- 若數(shù)量減至 0,則報錯提示用戶號是否要刪除該商品或最小保留1(這點按實際需求處理即可)
2、實現(xiàn)邏輯說明
1)輸入校驗:
- 用戶修改數(shù)量時,校驗輸入值是否合規(guī):1≤ 數(shù)量 ≤庫存
- 若輸入數(shù)量超過庫存,彈窗提示“庫存不足,當(dāng)前最大可購買X件”
- 若輸入數(shù)量小于1,彈窗提示“至少保留1件”或 “是否要刪除該商品”(按自己實際需求處理)
2)更新邏輯:
- 根據(jù)商品ID和SKU ID找到對應(yīng)的商品。
- 查詢庫存服務(wù)校驗上限,查詢商品狀態(tài)等
- 若商品合規(guī):更新數(shù)量并重新計算總價;
- 若商品異常:返回錯誤碼(如庫存不足,如已下架),禁止修改數(shù)量并提示。
3、交互設(shè)計:
- 輸入超過庫存時,前端自動修正為最大庫存值并提示“庫存不足,當(dāng)前最大可購買X件”。
4、示例:
- 用戶將商品的數(shù)量從3改為8,但庫存僅剩6,系統(tǒng)自動修正為6,并提示“庫存不足,最多可購買6件”。
2.4 商品庫存不足處理
1、場景處理
1)加購時庫存不足:
當(dāng)添加商品到購物車時,若庫存不足,系統(tǒng)自動修正為最大庫存值并提示“庫存不足,當(dāng)前最大可購買X件”,達(dá)到限制該商品的添加數(shù)量,使其不能超過庫存數(shù)量
2)已加購后庫存不足
已加購的商品出現(xiàn)庫存不足時,系統(tǒng)需更新購物車數(shù)據(jù)結(jié)構(gòu)中該商品的狀態(tài)為 “庫存不足”,在購物車頁面將其置灰且不可勾選,并顯示 “缺貨” 提示,同時禁止將其加入結(jié)算
2、實現(xiàn)邏輯說明
1)購物車實時校驗:
每次打開或刷新購物車時,需調(diào)用庫存服務(wù)校驗商品可用庫存
2)數(shù)量變更時庫存實時校驗:
- 前端限制:輸入框僅允許輸入≤庫存的數(shù)值。
- 后端校驗:每次數(shù)量更新時,調(diào)用庫存服務(wù)檢查可用庫存
3)庫存不足時:
- 前端禁用“數(shù)量+”按鈕,顯示剩余庫存
- 用戶直接輸入數(shù)量,自動修正為最大庫存值并提示“庫存不足,當(dāng)前最大可購買X件”
- 若商品已加入購物車但庫存不足,標(biāo)記為“缺貨”,置灰且不可結(jié)算
2.5 失效商品處理
1、場景處理
1)已售罄商品 :
已加入購商品售罄時,系統(tǒng)需將其在購物車數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)標(biāo)記為 “售罄”,在購物車頁面將其置灰且不可勾選,并顯示 “已售罄” 提示,同時禁止將其加入結(jié)算
2)下架商品 :
已加入購商品下架時,系統(tǒng)需將其在購物車數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)標(biāo)記為 “已下架”,在購物車頁面將其置灰且不可勾選,并顯示 “已下架” 提示,同時禁止將其加入結(jié)算
3)區(qū)域限制 :
已加入購商品存在購買區(qū)域限制,當(dāng)不在其銷售區(qū)域內(nèi)時,系統(tǒng)需將其在購物車數(shù)據(jù)結(jié)構(gòu)中的狀態(tài)標(biāo)記為 “不在配送區(qū)域”,并顯示 “不在配送區(qū)域” 提示,同時禁止將其加入結(jié)算
2、實現(xiàn)邏輯說明
1)處理流程:
- 定時任務(wù):定期掃描購物車中的商品狀態(tài),更新失效商品信息,可調(diào)用商品服務(wù)檢查狀態(tài)(如每小時掃描一次)
- 實時校驗:用戶進(jìn)入 或 刷新購物車頁面時進(jìn)行二次校驗
2)標(biāo)記狀態(tài):
根據(jù)處理結(jié)果,將商品狀態(tài)設(shè)為“失效”,并記錄原因(如“已下架”)
3)界面提示:
- 失效商品置灰,顯示具體原因,如“已下架”“不在配送區(qū)域””“已售罄”等交互文案
- 提供“移除失效商品”一鍵清理功能
- 結(jié)算時自動移除失效商品,并提示用戶
3、示例:
- 用戶購物車中的商品因下架被標(biāo)記為失效,系統(tǒng)對該商品提示“已下架”,并將其置灰且不可勾選
2.6 異常處理機(jī)制
1、移除商品失?。?/strong>
如網(wǎng)絡(luò)錯誤,前端重試機(jī)制 +提示“刪除失敗,請重試”,并保留原數(shù)據(jù)
2、更新數(shù)量時庫存不足:
自動修正為最大庫存 + 提示“庫存不足,當(dāng)前最大可購買X件”;且前端限制輸入,后端返回錯誤碼,阻止操作。
3、商品失效:
實時更新狀態(tài),禁止結(jié)算并提示用戶。
4、批量操作沖突:
如同時修改數(shù)量和刪除,使用事務(wù)確保操作原子性,失敗時回滾。
5、區(qū)域限制變更:
如地址修改,重新校驗購物車商品,動態(tài)更新可售狀態(tài)
三、案例說明
案例1:商品添加與置頂排序
用戶依次添加
- 商品A:添加時間10:00
- 商品B:添加時間10:05
- 商品A:再重新添加時間10:10
購物車列表順序為:
- 商品A:數(shù)量2,時間10:10
- 商品B:數(shù)量1,時間10:05
案例2:存在失效商品
用戶在購物車中有以下商品:
- 商品A:庫存10,正常
- 商品B:已下架
- 商品C:配送區(qū)域限制
交互:
- 用戶打開購物車,系統(tǒng)調(diào)用商品服務(wù)校驗:
- 商品B標(biāo)記為“已下架”,商品C標(biāo)記為“不支持配送”。
- 用戶嘗試結(jié)算時,系統(tǒng)攔截并提示:“2件商品不可結(jié)算,請移除”。
- 用戶點擊“移除失效商品”,僅保留商品A進(jìn)入結(jié)算頁。
四、設(shè)計思路(很重要)
首先,商品添加到購物車需要考慮到兩種情況:已存在和首次添加;以及置頂需要考慮到維護(hù)一個時間戳或者順序字段,按最新操作排序。
接下來需要考慮到更新商品數(shù)量,需要檢查庫存是否足夠問題,以及失效商品處理場景,比如下架、售罄、區(qū)域限制等
移除商品時,需要考慮到單刪和批量刪除,要確保數(shù)據(jù)結(jié)構(gòu)中正確找到對應(yīng)的條目并刪除
最后把這些點整合成一個結(jié)構(gòu)化的思路。如數(shù)據(jù)結(jié)構(gòu)設(shè)計、核心流程、異常處理、存儲方案等。輸出一份最佳的產(chǎn)品解決方案
作者:pemg的筆記 公眾號:pemg的筆記
本文由 @pemg的筆記 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來自 Pixabay,基于CC0協(xié)議
該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)
- 目前還沒評論,等你發(fā)揮!