一、訂單是什么
訂單的本意是指你購(gòu)買商品之后生成的單據(jù)憑證,只是在電商中,它是虛擬的。
主流的下單方式
整個(gè)電商體系中常見的下單方式有2種,購(gòu)物車下單和直接下單。
淘寶稱之為購(gòu)物車結(jié)算和立即購(gòu)買,正常情況下你可以任選一種去購(gòu)物。但是在秒殺之類的特殊場(chǎng)景中,只支持直接下單。
京東也稱之為購(gòu)物車結(jié)算和立即購(gòu)買,不同的是,正常情況下你必須通過(guò)購(gòu)物車去結(jié)算,秒殺情況下你可以選擇立即購(gòu)買和購(gòu)物車結(jié)算。
訂單的類型
由于不同的下單方式,其實(shí)導(dǎo)致訂單的類型有2種。
簡(jiǎn)單來(lái)說(shuō)購(gòu)物車結(jié)算的訂單肯定包含了基于sku不同的多個(gè)子訂單,而每個(gè)子訂單包含n件同一sku。而立即購(gòu)買的訂單是包含n件同一sku。
然后淘寶的PM因?yàn)楹罄m(xù)增加了購(gòu)物車結(jié)算這一下單方式,而不得不想出一套規(guī)則,那就是父訂單和子訂單。當(dāng)然還有很多其他原因。
此次購(gòu)物,整體稱之為交易,生成了一個(gè)父訂單號(hào)。如果它是購(gòu)物車結(jié)算,那么有N個(gè)子訂單。如果他是立即購(gòu)買,那么只有1個(gè)子訂單。
從技術(shù)角度來(lái)定義,那就是trade稱為父訂單,order稱為子訂單,或者說(shuō)trade是一筆交易單,子訂單是每筆交易中的商品明細(xì)單,trade與order可以是一對(duì)多的關(guān)系,trade是由使用購(gòu)物車生成。
當(dāng)一筆交易只有一個(gè)子訂單,那么tid=oid,這個(gè)時(shí)候主要看trade結(jié)構(gòu)體里面的內(nèi)容,當(dāng)一筆交易有多筆子訂單(類似于購(gòu)物車購(gòu)買方式),那么tid=oid,這個(gè)時(shí)候主要看order結(jié)構(gòu)體里面的內(nèi)容。
二、訂單的邏輯拆分
根據(jù)以上的規(guī)則,訂單邏輯上面應(yīng)該按照這樣的方式來(lái)拆分。

基于這樣的設(shè)計(jì)方式,才可以去支持退款退貨,以及設(shè)計(jì)活動(dòng)、優(yōu)惠券等營(yíng)銷功能。
三、訂單的金額拆分
進(jìn)而得到訂單的金額是如何拆分的,其中營(yíng)銷得來(lái)的優(yōu)惠拆分到每一個(gè)子訂單,以及每一個(gè)sku的實(shí)際支付單價(jià)。

四、訂單狀態(tài)機(jī)
訂單的狀態(tài)是一個(gè)很復(fù)雜的事情,決定著用戶,商家的每一個(gè)操作。
不含退款退貨
如果你們的商城比較特殊,無(wú)需提供退款退貨功能,那么訂單狀態(tài)機(jī)比較簡(jiǎn)單。

包含退款退貨
那么比較復(fù)雜,相當(dāng)于多了一層狀態(tài)機(jī)。

五、總結(jié)
訂單模塊的架構(gòu)設(shè)計(jì),以上基本上把主要的內(nèi)容講了一遍。按照這樣的方式去設(shè)計(jì),至少可以兼顧大部分商城的訂單需求。