<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          如何設(shè)計(jì)訂單系統(tǒng)?這篇寫得太好了!

          共 4858字,需瀏覽 10分鐘

           ·

          2020-12-06 01:25

          往期熱門文章:

          1、往期精選優(yōu)秀博文都在這里了!
          2、如果MySQL磁盤滿了,會發(fā)生什么?還真被我遇到了!
          3、阿里開源的27個(gè)項(xiàng)目,值得收藏!
          4、花30分鐘,用Jenkins部署碼云上的SpringBoot項(xiàng)目
          5、為了甩鍋,我寫了個(gè)牛逼的日志切面!


          本文來源:r6d.cn/uEJQ

          本文主要講述了在傳統(tǒng)電商企業(yè)中,訂單系統(tǒng)應(yīng)承載的角色,就訂單系統(tǒng)所包含的主要功能模塊梳理了設(shè)計(jì)思路,并對訂單系統(tǒng)未來的發(fā)展做了一些思考。

          1. 訂單系統(tǒng)在企業(yè)中的角色

          在搭建企業(yè)訂單系統(tǒng)之前,需要先梳理企業(yè)整體業(yè)務(wù)系統(tǒng)之間的關(guān)系和訂單系統(tǒng)上下游關(guān)系,只有劃分清業(yè)務(wù)系統(tǒng)邊界,才能確定訂單系統(tǒng)的職責(zé)與功能,進(jìn)而保證各系統(tǒng)之間高效簡潔的工作。

          2. 訂單系統(tǒng)與各業(yè)務(wù)系統(tǒng)的關(guān)系

          (1)對外系統(tǒng):
          所有給企業(yè)外部用戶使用的系統(tǒng)都在這一層,包括官網(wǎng)、普通用戶使用的C端,還包括給商戶使用的商家后臺和在各個(gè)銷售渠道進(jìn)行分銷的系統(tǒng),比如與銀行信用卡中心合作、微信合作在合作商的平臺露出本企業(yè)的產(chǎn)品。這類系統(tǒng)站在與客戶接觸的最前線,是公司實(shí)現(xiàn)商業(yè)模式的橋頭堡。
          (2)管理中后臺:
          每個(gè)C端的業(yè)務(wù)形態(tài)都會有一個(gè)對應(yīng)的系統(tǒng)模塊,如負(fù)責(zé)管理平臺交易的訂單系統(tǒng),管理優(yōu)惠信息的促銷系統(tǒng),管理平臺所有產(chǎn)品的產(chǎn)品系統(tǒng),以及管理所有對外系統(tǒng)顯示內(nèi)容的內(nèi)容系統(tǒng)等。
          (3)公共服務(wù)系統(tǒng):
          隨著企業(yè)的發(fā)展,信息化建設(shè)到達(dá)一定程度后,企業(yè)需要將通用功能服務(wù)化、平臺化,以保證應(yīng)用架構(gòu)的合理性,提升服務(wù)效率。這類系統(tǒng)主要給其他應(yīng)用系統(tǒng)提供基礎(chǔ)服務(wù)能力支持。

          3. 訂單系統(tǒng)上下游關(guān)系

          由此可見,訂單系統(tǒng)對上接收用戶信息,將用戶信息轉(zhuǎn)化為產(chǎn)品訂單,同時(shí)管理并跟蹤訂單信息和數(shù)據(jù),承載了公司整個(gè)交易線的重要對客環(huán)節(jié)。對下則銜接產(chǎn)品系統(tǒng)、促銷系統(tǒng)、倉儲系統(tǒng)、會員系統(tǒng)、支付系統(tǒng)等,對整個(gè)電商平臺起著承上啟下的作用。

          4. 訂單系統(tǒng)的業(yè)務(wù)架構(gòu)

          (1)訂單服務(wù)
          該模塊的主要功能是用戶日常使用的服務(wù)和頁面,主要有訂單列表、訂單詳情、在線下單等,還包括為公共業(yè)務(wù)模塊提供的多維度訂單數(shù)據(jù)服務(wù)。
          (2)訂單邏輯
          訂單系統(tǒng)的核心,起著至關(guān)重要的作用,在訂單系統(tǒng)負(fù)責(zé)管理訂單創(chuàng)建、訂單支付、訂單生產(chǎn)、訂單確認(rèn)、訂單完成、取消訂單等訂單流程。還涉及到復(fù)雜的訂單狀態(tài)規(guī)則、訂單金額計(jì)算規(guī)則以及增減庫存規(guī)則等。在4節(jié)核心功能設(shè)計(jì)中會重點(diǎn)來說。
          (3)底層服務(wù)
          信息化建設(shè)達(dá)到一定程度的企業(yè),一般會將公司公共服務(wù)模塊化,比如:產(chǎn)品,會構(gòu)建對應(yīng)的產(chǎn)品系統(tǒng),代碼、數(shù)據(jù)庫,接口等相對獨(dú)立。但是,這也帶來了一個(gè)問題,比如:訂單創(chuàng)建的場景下需要獲取的信息分散在各個(gè)系統(tǒng)。
          如果需要從各個(gè)公共服務(wù)系統(tǒng)調(diào)用:一是會花費(fèi)大量時(shí)間,二是代碼的維護(hù)成本非常高。因此,訂單系統(tǒng)接入所需的公共服務(wù)模塊接口,在訂單系統(tǒng)即可完成對接公共系統(tǒng)的服務(wù)。

          訂單系統(tǒng)核心功能

          1. 訂單中所包含的內(nèi)容信息

          為了使訂單系統(tǒng)能夠?qū)τ唵芜M(jìn)行高效、精準(zhǔn)的管理和跟蹤,訂單會儲存關(guān)于產(chǎn)品、優(yōu)惠、用戶、支付信息等一系列的訂單實(shí)時(shí)數(shù)據(jù),來和下游系統(tǒng),如:促銷、倉儲、物流進(jìn)行交互。
          以一個(gè)通用B2C商城的訂單為例,梳理其包含的信息如下:
          這里要注意的是訂單類型,隨著平臺業(yè)務(wù)的不斷發(fā)展,品類豐富、交易方式豐富后,需要對訂單進(jìn)行多維度的分類管理,同時(shí)訂單類型利于訂單系統(tǒng)的擴(kuò)展性。每種訂單類型將會對應(yīng)一套流程及一套狀態(tài),便于對訂單進(jìn)行分類管理和復(fù)用。

          2. 流程引擎

          流程是指從平臺角度出發(fā),將訂單從創(chuàng)建到完成的整個(gè)流轉(zhuǎn)過程進(jìn)行抽象,從而形成了一套標(biāo)準(zhǔn)流程規(guī)則。而不同的產(chǎn)品類型或交易類型在系統(tǒng)中的流程會千差萬別,因此為了方便對訂單流程進(jìn)行管理,會組建流程引擎模塊。
          每套訂單流程中會包含正向流程及逆向流程,正向流程可以比作一次順利的網(wǎng)購體驗(yàn)過程中,后臺系統(tǒng)之間的信息流轉(zhuǎn)。逆向流程則是修改訂單、取消訂單、退款、退貨等各種動作引起的后臺系統(tǒng)流程,同時(shí)每個(gè)流程觸發(fā)的條件又可分為系統(tǒng)觸發(fā)和人工觸發(fā)兩種場景。
          (1)正向流程
          以一個(gè)通用B2C商城的訂單系統(tǒng)為例,根據(jù)其實(shí)際業(yè)務(wù)場景,其訂單流程可抽象為5大步驟:訂單創(chuàng)建>訂單支付>訂單生產(chǎn)>訂單確認(rèn)>訂單完成。
          而每個(gè)步驟的背后,訂單是如何在多系統(tǒng)之間交互流轉(zhuǎn)的,可概括如下圖:
          訂單創(chuàng)建:
          用戶下單后,系統(tǒng)需要生成訂單,此時(shí)需要先獲取下單中涉及的商品信息,然后獲取該商品所涉及到的優(yōu)惠信息,如果商品不參與優(yōu)惠信息,則無此環(huán)節(jié)。
          接著獲取該賬戶的會員權(quán)益,這里要注意的是:優(yōu)惠信息與會員權(quán)益的區(qū)別,比如:商品滿減是優(yōu)惠信息,SUPER會員全場9.8折指的是會員權(quán)益,一個(gè)是針對商品,另一個(gè)是針對賬戶。其次就是優(yōu)惠活動的疊加規(guī)則和優(yōu)先級規(guī)則等。
          增減庫存規(guī)則是指訂單中的商品,何時(shí)從倉儲系統(tǒng)中對相應(yīng)商品庫存進(jìn)行扣除,目前主流有兩種方式:
          下單減庫存——即用戶下單成功時(shí)減少庫存數(shù)量
          • 優(yōu)勢:用戶體驗(yàn)友好,系統(tǒng)邏輯簡潔;
          • 缺點(diǎn):會導(dǎo)致惡意下單或下單后卻不買,使得真正有需求的用戶無法購買,影響真實(shí)銷量;
          解決辦法:
          1. 設(shè)置訂單有效時(shí)間,若訂單創(chuàng)建成功N分鐘不付款,則訂單取消,庫存回滾;
          2. 限購,用各種條件來限制買家的購買件數(shù),比如一個(gè)賬號、一個(gè)ip,只能買一件;
          3. 風(fēng)控,從技術(shù)角度進(jìn)行判斷,屏蔽惡意賬號,禁止惡意賬號購買。
          付款減庫存——即用戶支付完成并反饋給平臺后再減少庫存數(shù)量
          • 優(yōu)勢:減少無效訂單帶來的資源損耗;
          • 缺點(diǎn):因第三方支付返回結(jié)果存在時(shí)差,同一時(shí)間多個(gè)用戶同時(shí)付款成功,會導(dǎo)致下單數(shù)目超過庫存,商家?guī)齑娌蛔闳菀滓l(fā)斷貨和投訴,成本增加。
          解決辦法:
          1. 付款前再次校驗(yàn)庫存,如確認(rèn)訂單要付款時(shí)再驗(yàn)證一次,并友好提示用戶庫存不足;
          2. 增加提示信息:在商品詳情頁,訂單步驟頁面提示不及時(shí)付款,不能保證有庫存等。
          綜上所述,兩種方式各有優(yōu)缺點(diǎn),因此,需結(jié)合實(shí)際場景進(jìn)行考慮,如:秒殺、搶購、促銷活動等,可使用下單減庫存的方式。而對于產(chǎn)品庫存量大,并發(fā)流量沒有那么強(qiáng)的產(chǎn)品使用付款減庫存的方式。
          將兩種方式帶入到銷售場景中,關(guān)聯(lián)商品類型、促銷類型、供需關(guān)系等,靈活使用,以充分發(fā)揮計(jì)算機(jī)系統(tǒng)的優(yōu)勢。
          訂單支付:
          用戶支付完訂單后,需要獲取訂單的支付信息,包括支付流水號、支付時(shí)間等。支付完訂單接著就是等商家發(fā)貨,但在發(fā)貨過程中,根據(jù)平臺業(yè)務(wù)模式的不同,可能會涉及到訂單的拆分。
          訂單拆分一般分兩種:
          • 一種是用戶挑選的商品來自于不同渠道(自營與商家,商家與商家);
          • 另一種是在SKU層面上拆分訂單:不同倉庫,不同運(yùn)輸要求的SKU,包裹重量體積限制等因素需要將訂單拆分。
          訂單拆分也是一個(gè)相對獨(dú)立的模塊,這里就不詳細(xì)描述了。
          訂單生產(chǎn):訂單生產(chǎn),是指產(chǎn)品從企業(yè)到用戶這一流程的概述。如電商平臺中,商家發(fā)貨過程已有一個(gè)標(biāo)準(zhǔn)化的流程,訂單內(nèi)容會發(fā)送到倉庫,倉庫對商品進(jìn)行打單、揀貨、包裝、交接快遞進(jìn)行配送。
          訂單確認(rèn):收到貨后,訂單系統(tǒng)需要在快遞被簽收后提醒用戶對商品做評價(jià)。這里要注意,確認(rèn)收到貨不代表交易成功,相反是售后服務(wù)的開始。
          訂單完成:訂單完成是指在收到貨X天的狀態(tài),此時(shí)訂單不在售后的支持時(shí)間范圍內(nèi)。到此,一個(gè)訂單的正向流程就算走完了。
          (2)逆向流程
          上面說到逆向流程是各種修改訂單、取消訂單、退款、退貨等操作,需要梳理清楚這些流程與正向流程的關(guān)系,才能理清訂單系統(tǒng)完整的訂單流程。
          訂單修改:可梳理訂單內(nèi)信息,根據(jù)信息關(guān)聯(lián)程度及業(yè)務(wù)訴求,設(shè)定訂單的可修改范圍是什么,比如:客戶下單后,想修改收貨人地址及電話。此時(shí)只需對相應(yīng)數(shù)據(jù)進(jìn)行更新即可。
          訂單取消:用戶提交訂單后沒有進(jìn)行支付操作,此時(shí)用戶原則上屬于取消訂單,因?yàn)檫€未付款,則比較簡單,只需要將原本提交訂單時(shí)扣減的庫存補(bǔ)回,促銷優(yōu)惠中使用的優(yōu)惠券,權(quán)益等視平臺規(guī)則,進(jìn)行相應(yīng)補(bǔ)回。
          退款:用戶支付成功后,客戶發(fā)出退款的訴求后,需商戶進(jìn)行退款審核,雙方達(dá)成一致后,系統(tǒng)應(yīng)以退款單的形式完成退款,關(guān)聯(lián)原訂單數(shù)據(jù)。因商品無變化,所以不需考慮與庫存系統(tǒng)的交互,僅需考慮促銷系統(tǒng)及支付系統(tǒng)交互即可。
          退貨:用戶支付成功后,客戶發(fā)出退貨的訴求后,需商戶進(jìn)行退款審核,雙方達(dá)成一致后,需對庫存系統(tǒng)進(jìn)行補(bǔ)回,支付系統(tǒng)、促銷系統(tǒng)以退款單形式完成退款。最后,在退款/退貨流程中,需結(jié)合平臺業(yè)務(wù)場景,考慮優(yōu)惠分?jǐn)偟倪壿?,在發(fā)生退款/退貨時(shí),優(yōu)惠該如何退回的處理規(guī)則和流程。
          (3)狀態(tài)機(jī)
          狀態(tài)機(jī)是管理訂單狀態(tài)邏輯的工具。狀態(tài)機(jī)可歸納為3個(gè)要素,即現(xiàn)態(tài)、動作、次態(tài)。
          1. 現(xiàn)態(tài):是指當(dāng)前所處的狀態(tài)。
          2. 動作:動作執(zhí)行完畢后,可以遷移到新的狀態(tài),也可以仍舊保持原狀態(tài)。
          3. 次態(tài):動作滿足后要遷往的新狀態(tài),“次態(tài)”是相對于“現(xiàn)態(tài)”而言的,“次態(tài)”一旦被激活,就轉(zhuǎn)變成新的“現(xiàn)態(tài)”了。
          狀態(tài)機(jī)的設(shè)計(jì)需要結(jié)合平臺實(shí)際業(yè)務(wù)場景,將狀態(tài)間的切換細(xì)化成了執(zhí)行了某個(gè)動作。
          以一個(gè)B2C商城的訂單系統(tǒng)舉例如下:
          訂單系統(tǒng)為了高效的對訂單進(jìn)行跟蹤和管理,會對訂單流程當(dāng)中的關(guān)鍵節(jié)點(diǎn),抽象出訂單狀態(tài)。而訂單狀態(tài)從不同用戶的角度可分為,系統(tǒng)訂單狀態(tài)、商家訂單狀態(tài)、買家訂單狀態(tài)等。
          對于訂單系統(tǒng)來說,訂單狀態(tài)細(xì)分的顆粒度越細(xì)、越明確,訂單系統(tǒng)管理的精度和可靠性就越高,比如:在待付款和待發(fā)貨兩個(gè)狀態(tài)中,訂單系統(tǒng)后臺會細(xì)分為訂單超時(shí)取消、訂單支付失敗、訂單付款完成等。
          因此,訂單狀態(tài)模塊中,通常會維護(hù)狀態(tài)映射表,以不同的用戶角色對系統(tǒng)訂單狀態(tài)進(jìn)行重新劃分,以滿足不同用戶的需求。
          除此以外,隨著電商平臺的不斷發(fā)展,不同的業(yè)務(wù)類型,所對應(yīng)的訂單狀態(tài)都會有所區(qū)別。所以,訂單系統(tǒng)中一般會儲存多套狀態(tài)機(jī),以滿足不同的訂單類型來使用。

          訂單系統(tǒng)的發(fā)展

          訂單系統(tǒng)的主體框架,和主要業(yè)務(wù)模塊已基本講完,那么隨著企業(yè)的發(fā)展,業(yè)務(wù)量和業(yè)務(wù)形式不斷變化,企業(yè)有可能形成多個(gè)訂單系統(tǒng)并存以滿足不同的業(yè)務(wù)需要的情況。
          業(yè)務(wù)系統(tǒng)架構(gòu)如下:
          這種狀況的出現(xiàn),將會給平臺帶來非常大的發(fā)展瓶頸,如:
          三個(gè)訂單系統(tǒng),每個(gè)訂單系統(tǒng)處理不同類型的訂單,沒有統(tǒng)一的訂單銷量、訂單狀態(tài)信息,網(wǎng)站前臺對訂單的狀態(tài)展示與控制不統(tǒng)一,只能是在網(wǎng)站前臺會員中心硬代碼維護(hù)一套面向會員的統(tǒng)一訂單明細(xì)與狀態(tài)數(shù)據(jù)。而無線側(cè)上線后,由于不了解前臺網(wǎng)站會員中心的訂單狀態(tài)管理邏輯,所以需要把前臺網(wǎng)站的訂單明細(xì)及狀態(tài)管理再在無線應(yīng)用側(cè)再實(shí)現(xiàn)一遍。
          三套后臺訂單系統(tǒng)與公共業(yè)務(wù)系統(tǒng)如會員中心、支付與財(cái)務(wù)、促銷工具、客戶分單等系統(tǒng)都需要對接一遍,公共業(yè)務(wù)處理邏輯不統(tǒng)一,一旦邏輯變更,多個(gè)系的同一個(gè)接口都要修改一遍,接口的重復(fù)維護(hù)開發(fā)工作量大。
          訂單開發(fā)目前分到事業(yè)部,各個(gè)事業(yè)部只會考慮自己的邏輯,不會考慮公共架構(gòu),只會越走越遠(yuǎn)。碰到像無線這樣的項(xiàng)目,需要對接各個(gè)事業(yè)部,無線側(cè)應(yīng)用上線進(jìn)展慢。
          因此未來的訂單系統(tǒng)可拆分為訂單中心與業(yè)務(wù)訂單系統(tǒng)兩個(gè)模塊,以管理公司所有訂單數(shù)據(jù),并為各個(gè)模塊提供統(tǒng)一服務(wù)。

          最后

          對于企業(yè)訂單系統(tǒng)的搭建,并不是要做的大而全、也不是要小而精。而需要結(jié)合市場、公司、業(yè)務(wù)的實(shí)際情況來最終制定系統(tǒng)設(shè)計(jì)方案和產(chǎn)品迭代計(jì)劃。
          最終,和公司整體發(fā)展相互協(xié)調(diào),相輔相成。
          往期熱門文章:

          1、歷史文章分類導(dǎo)讀列表!精選優(yōu)秀博文都在這里了!》

          2、你以為JDK8之后用HashMap就沒事了?死循環(huán)問題依然存在!
          3、14 個(gè) Spring MVC 頂級技巧,隨時(shí)用隨時(shí)爽,一直用一直爽
          4、交公糧了:十一在家我都逛了哪些技術(shù)網(wǎng)站?
          5高并發(fā)和海量數(shù)據(jù)下的 9 個(gè) Redis 經(jīng)典案例剖析!

          6、Docker 禁止被列入美國“實(shí)體名單”的國家、企業(yè)、個(gè)人使用

          7、日志框架到底是Logback 還是 Log4j2?
          8、IDEA 2020.2 重磅發(fā)布,動畫級新功能預(yù)覽!
          9、數(shù)據(jù)庫鏈接池終于搞對了,這次直接從100ms優(yōu)化到3ms!

          10、互聯(lián)網(wǎng)公司忽悠員工的黑話,套路太深了。。。
          瀏覽 29
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产操逼网 | 国产精品一级淫荡精品录像 | 亚洲无码视频免费看 | 中国毛片播放 | 先锋在线资源福利 |