秒殺業務
一、秒殺價格(參考京東)
1、秒殺開始前,秒殺商品顯示原價(涉及除秒殺活動頁面外所有商品的顯示頁面,包括購物車、收藏、足跡等頁面)
2、秒殺開始前,可以使用原價購買商品
3、秒殺開始前,秒殺活動中的商品顯示秒殺價,而非原價。進入商品詳細可顯示原價
4、秒殺開始后,秒殺商品顯示秒殺價(所有商品顯示頁面)
5、秒殺結束后,秒殺商品恢復原價(涉及除秒殺活動頁面外所有商品的顯示頁面,包括購物車、收藏、足跡等頁面)
二、
秒殺庫存(根據項目實際情況總結)
1、商品庫存是以SKU為單位計量的,即每個商品的每個規格為最小庫存計量單位
2、SKU秒殺庫存和實際庫存分開設置,如實際庫存為50,秒殺庫存可使用<=50的任意一個值
3、由於秒殺開始前也可以購買商品,所以下單時應同時減少SKU的實際庫存和秒殺庫存,取消訂單時如秒殺活動還在進行,也應該同時恢復實際庫存和秒殺庫存
4、相反的,秒殺商品生成訂單后,SKU的秒殺庫存和實際庫存也應該同時減少,取消訂單后同時恢復
5、應限制秒殺商品的購買數量,否則容易因為惡意下單導致庫存不足
三、
秒殺活動
1、秒殺活動開始結束時間不能重疊(針對一個B端,如果有開發平台則每個商戶不能重疊)
2、秒殺活動的規則一般是:當天/未過期/開始時間最早的一條,如果需要同時顯示多個秒殺活動,類似京東,則需要另外設計
3、秒殺活動的倒計時:在前台用js控制/開始前顯示:離秒殺開始還剩00:00:00/開始后顯示:離秒殺結束還剩:00:00:00
秒殺活動結束后,自動替換下一個秒殺活動,如果沒有則不顯示秒殺活動
秒殺活動結束后,自動替換下一個秒殺活動,如果沒有則不顯示秒殺活動
4、秒殺活動一般時間范圍為當天,不會跨天;時間精確到秒
5、可根據秒殺庫存數、秒殺銷售數在前端顯示秒殺銷售進度
6、秒殺活動表的基本設計
編號、活動名稱、活動類型、開始時間、結束時間、是否有效、活動描述、創建時間、創建人、修改時間、修改人
秒殺商品
1、一般來說,秒殺商品只需要設置秒殺價,但有些特殊的業務場景,比如某系統所有商品都是【價格+積分】的組合,那么秒殺商品通常也需要設置【秒殺價格+秒殺積分】
2、選擇秒殺商品時應將其相關信息列舉清晰,如商品名稱、規格、原價、優惠價、積分、庫存、是否顯示、秒殺Title說明、顯示序號(秒殺商品以一個SKU為單位進行設置)
3、秒殺商品的圖片需要單獨設置,比如PC、APP、微信可能需要設置不同圖片
4、秒殺庫存的設置:不能大於SKU庫存,還需考慮秒殺開始前的購買情況,開始前購買是否減秒殺庫存
5、秒殺銷售數:記錄秒殺銷售數,主要用戶統計和前端顯示
6、秒殺商品表的基本設計
商品編號、活動編號、秒殺價格、秒殺積分、庫存數、銷售數、顯示順序、秒殺圖片(各種客服端)、商品描述、是否有效、創建時間、創建人、修改時間、修改人
秒殺使用技術
一、價格服務
1、引入秒殺活動后,所有顯示商品價格的地方都需要判斷該商品是否是秒殺商品並獲取秒殺價格(不管有沒有秒殺活動都需要調用相關邏輯)
2、獲取秒殺價格服務的調用量非常大,所以需要考慮優化
1、引入緩存,秒殺價格從緩存獲取
2、定時任務更新緩存:當任務檢測到價格變化時,實時更新緩存
3、價格服務的參數盡可能簡單
1、輸入:商品編號、客戶端類型、其它可能的擴展字段
2、輸出:商品編號、秒殺價、秒殺積分、其它秒殺信息
二、
鎖
1、因為秒殺瞬間並發比較大,所以很可能影響到庫存,如果庫存數據在緩存緩存中,需要對緩存加鎖;如果在數據庫中判斷,則需要對數據庫加鎖