解構(gòu)電商、O2O:平臺(tái)的“生命中軸線”-訂單系統(tǒng)
時(shí)間:2023-03-15 02:52:02 | 來源:電子商務(wù)
時(shí)間:2023-03-15 02:52:02 來源:電子商務(wù)
設(shè)計(jì)訂單系統(tǒng)時(shí)包含幾個(gè)大的方向需要考慮,這些內(nèi)容決定了訂單系統(tǒng)的穩(wěn)定性和可持續(xù)性。
訂單字段訂單字段包含了訂單中需要記錄的信息,他的作用主要用于溝通其他系統(tǒng),為下游系統(tǒng)提供信息依據(jù)。結(jié)構(gòu)如圖
訂單信息包括訂單號(hào)和訂單狀態(tài)機(jī)。訂單號(hào)作為訂單識(shí)別的標(biāo)識(shí),往往由一串?dāng)?shù)字組成,根據(jù)訂單的增加進(jìn)行自增,也可以在設(shè)計(jì)訂單號(hào)的時(shí)候考慮訂單加密設(shè)置(否則別人通過訂單編號(hào)就能計(jì)算出對(duì)應(yīng)的銷售量)。訂單號(hào)后續(xù)用作訂單唯一標(biāo)示用于對(duì)接WMS和TMS時(shí)的訂單識(shí)別。訂單狀態(tài)機(jī)在下面章節(jié)會(huì)詳細(xì)描述,這里不做展開。
用戶信息這里指購買人的相關(guān)信息,主要包括姓名、地址、手機(jī)號(hào)。O2O還會(huì)多一種情況就是自提點(diǎn),這樣地址則會(huì)變?yōu)樽蕴狳c(diǎn)的地址。地址信息在后續(xù)會(huì)作用在WMS和TMS上用于區(qū)分區(qū)域和配送安排。
購買商品信息指購買商品的基本信息和庫存,金額由于比較特殊所以我把金額獨(dú)立在商品信息以外說,不過邏輯上其實(shí)都屬于商品信息范疇。商品信息主要影響庫存更新和WMS生產(chǎn)。
金額信息是記錄訂單產(chǎn)生的商品金額。除了要記錄最終的金額,過程金額也需要記錄。比如商品分?jǐn)偟膬?yōu)惠金額、支付金額,應(yīng)付金額等。在后續(xù)的訂單結(jié)算、退換貨、財(cái)務(wù)等環(huán)節(jié)都需要使用。
時(shí)間信息是記錄訂單每個(gè)節(jié)點(diǎn)的觸發(fā)時(shí)間。
這里我們特別說下關(guān)于訂單標(biāo)識(shí)位的概念,訂單標(biāo)識(shí)位有的地方叫服務(wù)標(biāo)記,有的地方叫SendPay,其實(shí)從邏輯上來說都是一樣的意義。標(biāo)識(shí)位是一串若干位數(shù)的字符串,通過對(duì)不同位定義來代表不同的含義。比如我們?cè)谟唵沃性O(shè)置一個(gè)字段,這個(gè)字段具備100位數(shù)字,每一位數(shù)據(jù)可以從1到9,代表不同含義。這樣我們就就可以可以通過這100位字符串代表訂單的不同含義和標(biāo)記,比如第14位代表預(yù)售,如果是0則代表正常訂單,如果是1代表預(yù)售訂單。標(biāo)識(shí)位主要用于對(duì)訂單的特殊邏輯進(jìn)行標(biāo)記處理,以便下游系統(tǒng)在接收訂單后可以根據(jù)標(biāo)記為判斷進(jìn)行業(yè)務(wù)處理,比如分揀、倉配類型、是否大小件貴品等。
訂單流程訂單流程是指整個(gè)訂單從產(chǎn)生到完成整個(gè)流轉(zhuǎn)過程。他包括正向流程和逆向流程。
正向流程是訂單正常生產(chǎn)到配送的過程如下圖。下述列舉的模塊是一般電商通用的功能,部分可能根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景有所增加調(diào)整。020場(chǎng)景下出庫、合包裹、發(fā)票準(zhǔn)備等工作是由商家方進(jìn)行,部分工作是屬于線下場(chǎng)景。
整個(gè)流程涉及到的環(huán)節(jié)非常多。這里面提幾個(gè)細(xì)節(jié)上需要注意的地方:
- 訂單生成環(huán)節(jié)存在超時(shí)未支付自動(dòng)取消的過程。庫存的占用會(huì)在訂單取消后釋放。
- 如果選擇COD(貨到付款)則支付環(huán)節(jié)相應(yīng)轉(zhuǎn)移到訂單配送之后,而過程中所有與款項(xiàng)相關(guān)的邏輯變?yōu)橹徊僮鹘痤~數(shù)字,不對(duì)結(jié)算和賬戶進(jìn)行打退款操作。
- 金額分?jǐn)傂枰狡?,這個(gè)在上文有說明,這里就不做贅述。
- 訂單系統(tǒng)審核主要用戶對(duì)惡意用戶或者刷單情況進(jìn)行處理。系統(tǒng)可根據(jù)白名單、黑名單、消費(fèi)頻次、促銷品購買量當(dāng)方面做風(fēng)控規(guī)則。如果后續(xù)會(huì)進(jìn)入到人工審核,則規(guī)則上可以適當(dāng)從寬。當(dāng)觸發(fā)規(guī)則需要進(jìn)行訂單退訂的行為。此處設(shè)計(jì)時(shí)要小心對(duì)用戶體驗(yàn)的損害,往往前臺(tái)文案上說明當(dāng)前節(jié)點(diǎn)是審核狀態(tài)或者是等待接單。
- 在O2O領(lǐng)域有催單的概念,而傳統(tǒng)電商則是通過關(guān)聯(lián)第三方物流的物流信息進(jìn)行跟蹤。催單觸發(fā)考慮到實(shí)際場(chǎng)景,一般會(huì)設(shè)定一定的時(shí)間間隔,間隔時(shí)間內(nèi)只觸發(fā)一次催單的請(qǐng)求。
- 預(yù)售等貨和移倉需要做成SOA服務(wù),以便在交易頁面計(jì)算預(yù)計(jì)時(shí)間和預(yù)計(jì)到貨時(shí)間。移倉處理依賴倉庫的情況,也會(huì)涉及到后續(xù)拆分和合并包裹的邏輯。
- 訂單生產(chǎn)時(shí)先要判斷報(bào)缺情況,如果出現(xiàn)報(bào)缺問題則要考慮整單報(bào)缺、部分報(bào)缺、換貨或者換轉(zhuǎn)退的情況(庫存,倉促調(diào)撥和退款)。報(bào)缺情況分為系統(tǒng)報(bào)缺和實(shí)物報(bào)缺,這是承接但相對(duì)獨(dú)立的兩個(gè)環(huán)節(jié)。
- 電商系統(tǒng)要考慮7天無理由退貨的場(chǎng)景,即訂單狀態(tài)完成后申請(qǐng)退貨。此時(shí)主要涉及的是金額上的計(jì)算以及一些財(cái)務(wù)程序(如發(fā)票等)問題的處理。
逆向流程則指訂單發(fā)生取消、退貨等情況時(shí)引發(fā)的訂單流程過程,如下圖2-43。在設(shè)計(jì)逆向流程時(shí)建議和正向獨(dú)立分開,通過訂單號(hào)等信息進(jìn)行關(guān)聯(lián),避免耦合過多邏輯無法延展設(shè)計(jì)。
逆向流程的觸發(fā)主要有幾種情況:
- 用戶自主取消訂單(整單)
- 風(fēng)控系統(tǒng)觸發(fā)取消訂單(整單)
- 客服接到客訴仲裁后觸發(fā)取消訂單(整單)
- 超時(shí)未支付取消訂單(整單)
- 換貨報(bào)缺轉(zhuǎn)為退單(整單、部分報(bào)缺)
觸發(fā)條件考慮兩個(gè)方面
- 訂單狀態(tài)機(jī)(某一節(jié)點(diǎn)后如訂單生產(chǎn)后不允許取消訂單)。
- 訂單生成時(shí)間(主要是O2O方面,考慮到配送時(shí)間和線下流程的不規(guī)范,有可能出現(xiàn)狀態(tài)機(jī)沒觸發(fā)更新但實(shí)際流程在流轉(zhuǎn)的情況)
其他要注意的一些內(nèi)容:
- 當(dāng)退單被商家拒絕后需要轉(zhuǎn)入客服仲裁的環(huán)節(jié)
- 部分退的訂單促銷一般保持享用狀態(tài),但金額按照分?jǐn)偟慕痤~進(jìn)行退款。
從業(yè)務(wù)流程上來看是按照上述的節(jié)點(diǎn)進(jìn)行流轉(zhuǎn)的,但從系統(tǒng)結(jié)構(gòu)來看訂單系統(tǒng)的流程其實(shí)拆分成若干的步驟完成。從生成到最終完成所有相關(guān)訂單處理后選定對(duì)應(yīng)的倉庫推送給WMS進(jìn)行生產(chǎn)、配送,主要的處理邏輯如下圖
上圖列舉的是一些主要的訂單功能,不過不是所有的,每個(gè)電商的訂單系統(tǒng)都會(huì)有一些自己獨(dú)有的系統(tǒng)拆分,不過邏輯上來說是一樣的。首先是生成訂單,從交易系統(tǒng)獲取基本的數(shù)據(jù)進(jìn)行生產(chǎn)訂單,包括母單和子單。生成的訂單信息會(huì)提交給訂單中心,風(fēng)控模塊首先會(huì)針對(duì)訂單信息進(jìn)行判斷是否屬于惡意訂單,如果屬于惡意訂單則申請(qǐng)系統(tǒng)取消并回告用戶。非惡意的訂單則根據(jù)所屬倉庫、支付方式、訂單類型等維度判斷拆單和需要下傳的下游信息。同時(shí)管道服務(wù)會(huì)將對(duì)應(yīng)的訂單信息同步給相關(guān)的非業(yè)務(wù)系統(tǒng)比如臺(tái)賬記賬,發(fā)票等。在拆單和預(yù)分揀的時(shí)候有些情況會(huì)出現(xiàn)用戶訂單生成后但暫時(shí)沒有匹配到對(duì)應(yīng)的倉庫進(jìn)行下發(fā)的情況,那么在訂單的狀態(tài)節(jié)點(diǎn)中可以增加一個(gè)訂單轉(zhuǎn)移的概念,未轉(zhuǎn)移的訂單認(rèn)為還是僅僅完成的生成,而轉(zhuǎn)移后的訂單才會(huì)下發(fā)倉庫進(jìn)行生產(chǎn)。訂單還有兩個(gè)模塊是屬于全局性質(zhì)的,即promise和訂單跟蹤或者也叫狀態(tài)回告。Promise主要負(fù)責(zé)提供計(jì)算預(yù)計(jì)送達(dá)時(shí)間,他會(huì)根據(jù)倉配情況和供應(yīng)商情況整體計(jì)算。而訂單跟蹤可以理解為對(duì)應(yīng)訂單狀態(tài)機(jī)在發(fā)生變化時(shí)需要通知相關(guān)業(yè)務(wù)系統(tǒng),訂單回告可以通過MQ的方式由業(yè)務(wù)系統(tǒng)訂閱,一旦有變更則有訂單系統(tǒng)主動(dòng)推送業(yè)務(wù)系統(tǒng)信息以保證及時(shí)性。這里的回告圖上由于篇幅只畫了回告交易,其實(shí)其他業(yè)務(wù)系統(tǒng)也可以接受回告信息。
訂單狀態(tài)機(jī)關(guān)于狀態(tài)機(jī),在百度百科的定位為:
關(guān)于狀態(tài)機(jī)的一個(gè)極度確切的描述是它是一個(gè)有向圖形,由一組節(jié)點(diǎn)和一組相應(yīng)的轉(zhuǎn)移函數(shù)組成。狀態(tài)機(jī)通過響應(yīng)一系列事件而“運(yùn)行”。每個(gè)事件都在屬于“當(dāng)前” 節(jié)點(diǎn)的轉(zhuǎn)移函數(shù)的控制范圍內(nèi),其中函數(shù)的范圍是節(jié)點(diǎn)的一個(gè)子集。函數(shù)返回“下一個(gè)”(也許是同一個(gè))節(jié)點(diǎn)。這些節(jié)點(diǎn)中至少有一個(gè)必須是終態(tài)。當(dāng)?shù)竭_(dá)終態(tài), 狀態(tài)機(jī)停止。
由上述定義可以看到,狀態(tài)機(jī)的概念是用來表示按照一定的方向通過觸發(fā)不同節(jié)點(diǎn)產(chǎn)生數(shù)據(jù)流轉(zhuǎn)的過程。在訂單中通過情景觸發(fā)訂單狀態(tài)的變化來表達(dá)訂單流轉(zhuǎn)的過程就是訂單狀態(tài)機(jī)。如下圖
電商
O2O電商和O2O的主體流程是相同的,不同的在于物流配送環(huán)節(jié)電商較O2O更為復(fù)雜。此處只表明了主要的訂單狀態(tài)機(jī),倉儲(chǔ)物流內(nèi)的物流單流轉(zhuǎn)不在此范圍內(nèi)。狀態(tài)機(jī)原則上使用結(jié)果值而不使用過程值,比如使用支付成功作為節(jié)點(diǎn)而不使用支付中作為節(jié)點(diǎn)。
訂單狀態(tài)機(jī)要融合訂單流程來設(shè)計(jì)觸發(fā)節(jié)點(diǎn),訂單流程的邏輯點(diǎn)要多于狀態(tài)機(jī),一般在當(dāng)前流程環(huán)節(jié)完成后最后更新狀態(tài)機(jī)。
訂單推送當(dāng)狀態(tài)機(jī)發(fā)生變化時(shí),需要將對(duì)應(yīng)的變化情況告知給相關(guān)人員以便了解當(dāng)前訂單的情況。這就是訂單推送的作用。訂單推送和回告的區(qū)別在于回告是周知系統(tǒng),而推送是通過觸達(dá)手段推送給具體的人。
訂單推送的觸發(fā)依賴于狀態(tài)機(jī)的變化,涉及到的信息包括
- 推送對(duì)象(用戶、物流人員、商家)
- 推送方式(push,短信)
- 推送節(jié)點(diǎn)(狀態(tài)機(jī))
關(guān)鍵詞:系統(tǒng),生命,平臺(tái)