Java生鮮電商平臺-訂單配送模塊的架構與設計

Java生鮮電商平臺-訂單配送模塊的架構與設計

?

生鮮電商系統最終的目的還是用戶下單支付購買,

所以訂單管理系統是電商系統中最為復雜的系統,其作為中樞決定著整個商城的運轉,

本文將對于生鮮類電商平臺的訂單設計做一個完整的分析,也對前階段工作做一個復盤總結

訂單系統設計的好壞,決定了平臺的可用性、后期的功能拓展和商城價值;訂單系統貫穿于整個商城系統,其他各個系統的設計也是為訂單系統提供數據支撐。從用戶提交訂單的那一刻到訂單完成,到售后,都需要訂單管理系統來管理。

訂單管理系統從流程生成過程,大致分為三部分:

1.階段一、訂單生成過程:用戶通過平臺選擇商品,選擇添加至購物車(某些平臺下單過程無加入購物車流程),生成訂單價格,提交訂單,后臺根據優惠信息、活動信息、會員價等生成訂單金額,一般具體到每個商品訂單實付金額。

2.階段二、訂單配送過程:用戶支付完成,從倉儲發貨、配送、用戶收貨后訂單完成,如無提起售后流程,一般訂單到此就算完成,正常的訂單到階段二流程即結束了。

3.階段三、訂單異常、售后流程:用戶在前兩個階段過程中發起支付取消、提起商品售后流程,一般在訂單商品配送過程中是不允許用戶發起退款,等用戶收到貨物后才可發起售后,對于生鮮類平臺,可能不會做退貨的功能。

一、訂單生成過程

首先,是用戶在商城內選購商品,這個階段可以叫做用戶購物行為。

然后,是系統調取各個系統的數據,計算訂單的最終價格,這個階段可以叫做數據處理過程。

最后,是將訂單價格在用戶端顯示,這個階段叫做表現層顯示。

訂單數據流程

1、訂單提交生成過程

用戶下單后系統需要生成訂單,生成訂單過程需獲取商品信息,商品是否涉及相關優惠活動;獲取用戶會員信息(由于小程序做了付費會員,付費會員與普通會員購物部分商品有不同優惠力度和商品價格差異)。

用戶提交商品訂單時需要考慮商品庫存問題:1.用戶提交訂單時鎖定商品庫存,即下單減庫存。2.用戶付款后鎖定商品庫存。何時鎖定商品庫存得看具體情況,個人感覺下單鎖庫存在商品庫存不多,商品暢銷情況下用戶體驗更好,避免在用戶支付完成后商家無庫存發貨。由于社區生鮮類商品,貨損較嚴重,所以設計為用戶付款后鎖定庫存。

2、支付訂單后是否需要拆單/合單

訂單拆單:客戶同時在多家店鋪下單,不同的店鋪的商品在正常情況下是要拆開的;自營平臺商品的訂單是否需要拆單根據發貨倉是否相同,發貨倉不同,也是需要根據商品發貨單進行拆單。總之同一個訂單,會有多個包裹多個運單發貨,就需要將訂單查看。

訂單合單:同一個用戶不同訂單需要考慮是否合單發貨,需根據實際情況而定,訂單合單后,多個訂單生成一個發貨單發貨。

3、訂單商品優惠分攤

1. 為什么要對訂單金額進行分攤?

首要因素是退款,在訂單付款成功之后,如果不針對單個商品進行金額分攤,那么如果用戶需要退訂單中的部分商品,沒法計算需要退的金額。同樣如果只是單一商品品類券,則根據符合優惠券使用條件的商品進行分攤,其他商品按照商品售賣價格。

財務對賬:將優惠金額分攤到每個商品上,能核算統一訂單下的每個商品分別分攤的優惠金額,比如:平臺券,一個使用平臺券的訂單最終需要計算每個商品分攤的優惠金額,以確定每個商品的實際付款金額和享受平臺優惠的金額。

核算成本:通過把優惠金額分攤到每個商品上去,運營,財務或采購人員可以評估營銷活動的成本。

2. 優惠金額分攤邏輯

按照最小維度進行分攤:即優惠金額需要分攤到每個商品,且同一個商品采購數量大于1時,該商品最終只能有一個分攤后的價格

優惠分攤比例:按照商品金額分攤對應比例的優惠,保證不同商品享受優惠的公平性,否則會出現商品應分攤的優惠大于商品的銷售價或影響用戶體驗。

誤差處理:減小誤差主要途徑是在算法層面上進行優化,同時也無法避免誤差,多余的誤差需要按照不同的優惠活動分別存儲起來,在財務對賬和退款的時候需要用到。

這里必須提一下,這里訂單商品優惠分攤的前提是訂單中商品符合優惠條件,訂單中不符合優惠條件的商品不參與優惠分攤。

二、訂單配送過程

用戶在下單完成后,限制了用戶退款訂單狀態,只允許用戶在訂單狀態為:待發貨和配送完成狀態下才可以申請退款。支付完成后訂單發貨狀態共分為:待發貨、分揀中、配送中、商品到達代收點、配送完成、用戶已取貨這幾個狀態。

訂單生成配送過程

1、針對有缺貨/無貨情況

避免生鮮水果類商品的貨損過大問題,倉儲一般備貨較少,有時需及時從生產商拿貨,就可能會出現商品不足、無貨的情況,如發生缺貨、無貨的情況,是否補單發貨,還是直接退款給用戶

生成補貨單發貨或者退款:在倉儲發貨分揀發現缺貨、無貨情況時可發起異常配送流程,針對缺貨、無貨的商品按照訂單生成時間判斷影響了具體哪些用戶訂單,在缺貨、無貨商品訂單中操作想應的補貨或者退款操作

這里需要說明一點,我們強調的是客服主動跟受影響的用戶進行溝通,而非系統自動發起補貨或退款。

2、用戶同一天下單多次的訂單是否需要合單發貨

針對同一用戶同一天內的訂單是否需要合成一個發貨單發貨,需要根據具體場景具體考慮,如果做了合成一個發貨單,幾單包裹在一起是否一個包裹能裝下,如果是需要兩三個包裹裝的話,只有一個發貨單如何處理,都是需要考慮解決方案。

三、訂單異常、售后流程

訂單售后一般包括未支付訂單取消、下單完成后未配送前發起退款申請,配送完成后的訂單申請售后過程,未支付訂單的取消和下單完成后未配送前發起的退款申請,系統在接收到退款申請時會自動給用戶訂單退款;配送完成后的訂單由于商品性質的原因,限定了不支持無理由退貨退款,并且沒有做退貨流程的處理,主要考慮到商品退回至倉庫已無價值。

訂單系統逆流程的分支很多,需要兼顧業務場景,一般在從0到1的過程中,售后流程會先通過線下的方式解決,以便能把資源集中在更核心的部分。

轉載于:https://www.cnblogs.com/jurendage/p/11227425.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/247392.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/247392.shtml
英文地址,請注明出處:http://en.pswp.cn/news/247392.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue項目,webpack中配置src路徑別名及使用

默認會有‘’別名,指向src目錄,還可以添加自定義別名等等。 使用方法 使用別名一般就三種情況:在js中用,在css中用,在html文檔內用 js中用,最簡單: import {getName} from /util/namecss中使用&#xff0…

fastclick庫的介紹和使用

移動端點擊延遲事件 1. 移動端瀏覽器在派發點擊事件的時候,通常會出現300ms左右的延遲 2. 原因: 移動端的雙擊會縮放導致click判斷延遲 fastclick 是具有消除移動端瀏覽器上的點擊事件的 300ms 的延遲的作用。 注意幾點 1、PC端無效 2、Android 上的 Chrome …

toString()和String.valueOf()的區別(轉)

慣例廣告一發,對于初學真,真的很有用www.java1234.com,去試試吧! 有的朋友在用這兩個的時候感覺差不多 其實,很多時候效果是差不多的 但是,有的時候用.toString()會報錯,而用String.valueOf()就…

kylin框架中使用postcss-px2rem

1.kylin框架的使用不做介紹 2.頁面中 html模板頁面中已經使用clientWidth/375*100px,已經賦值了html的fontsize隨頁面寬度而變化。 比如寬度375的屏 html的fontsize為100px kylin加載postcss-px2rem cnpm i --save-dev postcss-px2rem 在根目錄下的plugin.js中 var px2rem…

VS2005無法啟動解決方法(轉)

一直有一個問題困擾,VS2005用得好好滴,突然有一天開始就進不去了,啟動了以后,沒有任何界面的出現,但是打開任務管理器,卻能夠看到進程的存在,真是奇怪了,我試圖卸載并且重新安裝&…

kylinH5框架之項目組件理解

目錄 組件介紹 組件聲明結構 組件接口 script dependency template style 狀態注入 接口聲明 組件介紹 Component 擴充自 Vue 的組件, 提供了 Vue 組件對等的輸入參數能力。在代碼書寫時提供類 class 的裝飾器 Decorator 風格。 import { Component, Watch } from al…

Markdown 語法簡介

這是標題一 標題二 標題三 print(hello) 這是一個python 第一點 thiw dhaishd 第二點 轉載于:https://www.cnblogs.com/BlogOfEr/p/11229682.html

kylinH5框架之項目開發調試

進行開發調試,需要完成以下步驟: 安裝依賴開發調試構建生產 點擊 代碼示例,獲取 Kylin Demo,并完成以下操作。 安裝依賴 進入項目根目錄,使用 cnpm 安裝 npm 依賴: # 安裝npm依賴 cnpm install 開發調試…

Java生鮮電商平臺-深入訂單拆單架構與實戰

Java生鮮電商平臺-深入訂單拆單架構與實戰 Java生鮮電商中在做拆單的需求,細思極恐,思考越深入,就會發現里面涉及的東西越來越多,要想做好訂單拆單的功能,還是相當有難度, 因此總結了一下拆單功能細節&…

python3中Requests將verify設置為False后,取消警告的方式

import requests resp requests.get(https://www.***.com, verifyFalse)調用成功但是會有如下警告信息: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedo…

kylinH5框架之項目腳手架

頁面介紹 Page 是一個 Webview 的邏輯抽象層,同時也是組件掛載的根節點。 代碼引入 import { Page } from ali/kylin-framework; 頁面聲明結構 一個Page包含的接口在頁面接口中聲明,提供了對 Vue 實例的完整控制能力,簡易的 Page 使用如…

博弈論學習筆記

決定近段時間復習一下博弈論順便寫點筆記。 大佬博客:幾種常見博弈模型https://blog.csdn.net/wr132/article/details/51213331 SG函數與SG定理https://www.cnblogs.com/ECJTUACM-873284962/p/6921829.html 無敵的博弈總結https://blog.csdn.net/acm_cxlove/article…

Promise鏈式調用和解決回調地獄的ES7終極解決方法async,await

promise鏈式調用 **then 是成功回調&#xff0c;只要在then后邊return一個promise就可以繼續then**<script type"text/javascript">let p1new Promise(function(resolve,reject){setTimeout(function(){resolve()//成功回調// reject()//失敗回調},2000)//2秒…

1.MySQL目錄結構

分為兩個目錄&#xff1a; 1.安裝目錄&#xff1a; 2.數據目錄&#xff1a; 在Linux下 yum安裝mysql后使用 find / -name my.cnf 找到mysql數據文件的位置 轉載于:https://www.cnblogs.com/sdrbg/p/11237231.html

對promise.all底層的實現的研究

1.Promise.all(iterable)返回一個新的Promise實例,此實例在iterable參數內素有的Promise都fulfilled或者參數中不包含Promise時&#xff0c;狀態變成fulfilled。 如果參數中Promise有一個失敗rejected &#xff0c;此實例回調失敗&#xff0c;失敗原因的是第一個失敗Promise的返…

vue-provide/inject輕松實現跨級訪問祖先組件

provide&#xff1a;Object | () > Object inject&#xff1a;Array<string> | { [key: string]: string | Symbol | Object } provide 和 inject 主要為高階插件/組件庫提供用例。并不推薦直接用于應用程序代碼中。是2.2.0版本 新增的。 這對選項需要一起使用&#x…

python 操作redis,存取為字節格式,避免轉碼加

這種情況連接數據庫&#xff0c;對數據的存取都是字節類型&#xff0c;存取時還得轉碼一下 from redis import Redis# 實例化redis對象rdb Redis(hostlocalhost, port6379, db0,passwordaaa123) rdb.set(name, root) name rdb.get(name) print(name)為了避免上述情況&#x…

element ui table scrollTop 滾動到行頭或行尾

1.設置table的ref為tableList2.設置滾動至頂部this.$refs.tableList.bodyWrapper.scrollTop 0;3.設置滾動至底部this.$refs.tableList.bodyWrapper.scrollTop this.$refs.tableList.bodyWrapper.scrollHeight;//如果請求完更新數據&#xff0c;需要使用$nextTick this.$nextTic…

Element-UI中Drawer抽屜去除標題自帶藍色框

當點擊事件drawertrue時&#xff0c;抽匣回打開 這時抽匣的標題會出現一個難看的藍色邊框&#xff0c;一會就會消失&#xff0c;但是好丑&#xff0c;所以要去掉它 解決方法 /deep/ :focus {outline: 0;} vue組件中&#xff0c;在style設置為scoped的時候&#xff0c;里面在…

Java生鮮電商平臺-B2B生鮮的互聯網思維

Java生鮮電商平臺-B2B生鮮的互聯網思維 在互聯網高速發展的今天&#xff0c;為我們的生活帶來了眾多便利。然而互聯網從早期的萌芽狀態到現在婦孺皆知&#xff0c;它的崛起速度遠遠超乎世人的想象。人們開始關注互聯網并且研究它&#xff0c;而思維模式的研究則是從深層次研究事…