Java生鮮電商平台-訂單架構實戰
生鮮電商中訂單中心是一個電商后台系統的樞紐,在這訂單這一環節上需要讀取多個模塊的數據和信息進行加工處理,並流向下一環節;因此訂單模塊對一電商系統來說,重要性不言而喻。
同時,訂單是一個公司生存甚至盈利的核心,而電商系統中的訂單系統則是支撐訂單處理的載體,因此訂單系統的設計則十分重要。

一、訂單架構
要了解訂單系統,首先我們要從訂單系統的信息架構上去認識訂單系統,從而對訂單系統建立整體認知;

二、訂單狀態
定義:為適應組織分工的需求和提升效率,系統將整個交易業務流程拆分成若干個可控的環節。
1. 訂單正向狀態
待付款:用戶提交訂單后,尚未付款,等待用戶支付,由於待付款訂單會鎖定庫存,所以會設置超時自動取消功能。
待發貨:用戶付款之后等待商家發貨。
待收貨:商家以發貨,等待用戶收貨。
已完成:用戶確認收貨后,訂單交易完成。
已取消:付款之前取消訂單。超時未付款或用戶取消訂單都會產生這種訂單狀態。
售后中:用戶在付款后發貨前申請退款,或商家發貨后用戶申請退,換貨。
2. 訂單售后狀態
待審核:用戶提交退換貨申請后,等待審核的狀態,在用戶已付款待發貨的狀態下,訂單尚未推送至倉庫或在倉庫攔截發貨成功,系統可直接審核通過。當審核不通過時,回轉至正常流程中。
待退貨入庫:退貨申請審核通過之后,等待用戶退貨入庫。
待退款:退貨入庫成功后,等待退款給用戶。
待換貨入庫:換貨申請審核通過,等待用戶換貨入庫。
換貨出庫中: 換貨入庫之后,生成換貨出庫單,訂單出庫。
售后成功:當退貨,退款成功之后,流轉至售后成功狀態,退貨,退款的售后成功在主流程下屬於交易關閉。
3. 訂單下單流程圖

1.在訂單過程中進行安全校驗,主要是為了檢測用戶是否在黑名單上,用戶購買行為是否正常等,當檢測到不正常時終止下單;
2.從商品中心獲取商品信息(SKU,規格,價格等)
3.從營銷中心獲取商品,訂單促銷信息(優惠券,促銷活動),判斷是否滿足優惠條件,計算出優惠金額。
4.在會員中心獲取會員權益,例如平台抵扣積分,優惠券折扣條件等。
5.在調度中心檢驗銷售層庫存,按照調度規則鎖定區域庫存。
6.根據拆單規則(商家,倉庫,訂單類型等)將訂單拆分成若干個子訂單,根據運費模板計算運費,根據商品金額,運費,優惠金額計算應付金額(實付款)。
三、優惠分攤
定義:是指在實際銷售中將訂單的優惠去分攤到每一件SKU中去結算。
訂單實付金額=商品金額(SKU金額總計)+運費-總優惠金額
總優惠金額=促銷活動優惠金額+優惠券優惠金額+虛擬幣抵扣金額
按照商品比例分攤。
案例:
訂單中有甲乙兩店的商品A、B、C、D、E 包郵。商品A,D參加跨店滿200減40的活動(活動1),商品B,C參加滿100減10的活動(活動2)另外用戶還使用了100元現金券。
訂單優惠金額=40+10+100=150元.
依據優惠分攤原則:則各項的優惠金額為:

四、訂單拆分
定義:為了方便訂單的發貨與結算,系統依據一定的規則(物流、倉庫等因素)將用戶訂單拆分成若干個發貨單。

不同店鋪:在電商平台類架構下,由於商品歸屬權不同,涉及財務結算和物流發貨的問題,需要根據店鋪歸屬問題對訂單進行拆單。例如淘寶,天貓的商品在下單時會將訂單根據不同店鋪進行拆分成若干個子訂單。
不同倉庫:若同一訂單分散在不同倉庫,則應按照倉庫歸屬進行拆分訂單。當一件商品在多個倉庫有貨時,應根據物流的區域的時效選擇倉庫進行拆單。
不同品類:由於商品的屬性不同一樣會產生拆單需求,例如易碎品需要特殊包裝,超大物品(鋼琴,座椅)需要單獨包裝。有些商品不能放在一起,同樣需要拆單。
物流因素:不同物流公司對單個包裹的重量或體積都有特殊要求,需要根據SKU的毛重和體積來計算包裹的總重量和體積,超出物流公司限制的也需要拆單。
商品價值:根據商品價值需要拆單的主要涉及海淘和跨境的商品;國家對每筆跨境訂單有單次限額,對年度跨境商品訂單總金額也有限制,當單次購買金額超過限制金額時,也需要對訂單進行拆單。
