業務流程圖:
流程說明:
用戶在點擊秒殺按鈕,選擇規格尺寸,數量后,點擊確認最終跳轉到確認訂單頁。


在點擊"確認"按鈕后,api會把相關參數封裝后調用促銷結算接口。
1.促銷這邊首先做基本參數的校驗判斷,然后是單用戶每次最大購買數量,單用戶最大購買次數判斷,秒殺活動時間,秒殺會員范圍判斷。
2.促銷這邊判斷完以后再做計算商品秒殺金額,並組裝前端商品信息,是否包郵信息,並將這些信息返回給api.
3.提交訂單,調用訂單系統保存訂單接口。
4.保存訂單接口先做訂單主信息,訂單明細信息的校驗。然后是做防重復提交,前端提交訂單時,傳遞的checkId,用於防止后台重復處理,如下圖所示。

5.生成訂單號,調用促銷預占秒殺活動庫存接口。
6.預占秒殺活動接口先判斷秒殺活動是否存在,活動狀態是否是進行中,如果是進行中則計算秒殺庫存,redis中存有秒殺預占庫存,秒殺一次,秒殺預占庫存就加秒殺商品的數量,加完以后跟秒殺活動庫存比較,如果大於秒殺活動庫存則提示庫存不足,如果庫存足夠,則繼續往下執行,會員購買次數加1,存入redis.返回true給訂單。
7.訂單中心如果捕捉到異常則調促銷中心加庫存接口。扣減訂單真實庫存,訂單側的預占庫存加秒殺商品的數量,可用庫存減秒殺商品的數量,訂單商品總庫存不變,一開始訂單商品總庫存==訂單可用庫存。如果訂單側扣減失敗則要回滾庫存,要調促銷側的加庫存接口。
8.促銷側加庫存接口邏輯是,活動庫存加回來,會員購買次數減1.
9.訂單側扣減完庫存,更新緩存和DB。
10.訂單支付完成后,調訂單接口,修改訂單狀態。


