Java生鮮電商平臺-訂單架構實戰安全
生鮮電商中訂單中心是一個電商後臺系統的樞紐,在這訂單這一環節上須要讀取多個模塊的數據和信息進行加工處理,並流向下一環節;所以訂單模塊對一電商系統來講,重要性不言而喻。架構
同時,訂單是一個公司生存甚至盈利的核心,而電商系統中的訂單系統則是支撐訂單處理的載體,所以訂單系統的設計則十分重要。設計
1、訂單架構3d
要了解訂單系統,首先咱們要從訂單系統的信息架構上去認識訂單系統,從而對訂單系統創建總體認知;orm
2、訂單狀態io
定義:爲適應組織分工的需求和提高效率,系統將整個交易業務流程拆分紅若干個可控的環節。form
1. 訂單正向狀態模板
待付款:用戶提交訂單後,還沒有付款,等待用戶支付,因爲待付款訂單會鎖定庫存,因此會設置超時自動取消功能。電商
待發貨:用戶付款以後等待商家發貨。class
待收貨:商家以發貨,等待用戶收貨。
已完成:用戶確認收貨後,訂單交易完成。
已取消:付款以前取消訂單。超時未付款或用戶取消訂單都會產生這種訂單狀態。
售後中:用戶在付款後發貨前申請退款,或商家發貨後用戶申請退,換貨。
2. 訂單售後狀態
待審覈:用戶提交退換貨申請後,等待審覈的狀態,在用戶已付款待發貨的狀態下,訂單還沒有推送至倉庫或在倉庫攔截髮貨成功,系統可直接審覈經過。當審覈不經過時,迴轉至正常流程中。
待退貨入庫:退貨申請審覈經過以後,等待用戶退貨入庫。
待退款:退貨入庫成功後,等待退款給用戶。
待換貨入庫:換貨申請審覈經過,等待用戶換貨入庫。
換貨出庫中: 換貨入庫以後,生成換貨出庫單,訂單出庫。
售後成功:當退貨,退款成功以後,流轉至售後成功狀態,退貨,退款的售後成功在主流程下屬於交易關閉。
3. 訂單下單流程圖
1.在訂單過程當中進行安全校驗,主要是爲了檢測用戶是否在黑名單上,用戶購買行爲是否正常等,當檢測到不正常時終止下單;
2.從商品中心獲取商品信息(SKU,規格,價格等)
3.從營銷中心獲取商品,訂單促銷信息(優惠券,促銷活動),判斷是否知足優惠條件,計算出優惠金額。
4.在會員中心獲取會員權益,例如平臺抵扣積分,優惠券折扣條件等。
5.在調度中心檢驗銷售層庫存,按照調度規則鎖定區域庫存。
6.根據拆單規則(商家,倉庫,訂單類型等)將訂單拆分紅若干個子訂單,根據運費模板計算運費,根據商品金額,運費,優惠金額計算應付金額(實付款)。
3、優惠分攤
定義:是指在實際銷售中將訂單的優惠去分攤到每一件SKU中去結算。
訂單實付金額=商品金額(SKU金額總計)+運費-總優惠金額
總優惠金額=促銷活動優惠金額+優惠券優惠金額+虛擬幣抵扣金額
按照商品比例分攤。
案例:
訂單中有甲乙兩店的商品A、B、C、D、E 包郵。商品A,D參加跨店滿200減40的活動(活動1),商品B,C參加滿100減10的活動(活動2)另外用戶還使用了100元現金券。
訂單優惠金額=40+10+100=150元.
依據優惠分攤原則:則各項的優惠金額爲:
4、訂單拆分
定義:爲了方便訂單的發貨與結算,系統依據必定的規則(物流、倉庫等因素)將用戶訂單拆分紅若干個發貨單。
不一樣店鋪:在電商平臺類架構下,因爲商品歸屬權不一樣,涉及財務結算和物流發貨的問題,須要根據店鋪歸屬問題對訂單進行拆單。例如淘寶,天貓的商品在下單時會將訂單根據不一樣店鋪進行拆分紅若干個子訂單。
不一樣倉庫:若同一訂單分散在不一樣倉庫,則應按照倉庫歸屬進行拆分訂單。當一件商品在多個倉庫有貨時,應根據物流的區域的時效選擇倉庫進行拆單。
不一樣品類:因爲商品的屬性不一樣同樣會產生拆單需求,例如易碎品須要特殊包裝,超大物品(鋼琴,座椅)須要單獨包裝。有些商品不能放在一塊兒,一樣須要拆單。
物流因素:不一樣物流公司對單個包裹的重量或體積都有特殊要求,須要根據SKU的毛重和體積來計算包裹的總重量和體積,超出物流公司限制的也須要拆單。
商品價值:根據商品價值須要拆單的主要涉及海淘和跨境的商品;國家對每筆跨境訂單有單次限額,對年度跨境商品訂單總金額也有限制,當單次購買金額超過限制金額時,也須要對訂單進行拆單。