1. 程式人生 > >基於中臺思想的物流系統設計(四):物流服務與物流詳情

基於中臺思想的物流系統設計(四):物流服務與物流詳情

一、概述

在物流系統中,中臺只負責物流訂單的流轉,具體的物流履行往往需要對接第三方快遞公司。由於第三方快遞公司的技術標準不一樣,因此我們需要對第三方快遞公司的介面進行封裝,這裡涉及到兩大類封裝,一個是下發請求的封裝,一個是接收回傳的物流詳情的封裝。對於下發快遞公司,我們不僅僅是介面層面的封裝,而是抽象出了一套服務模板,讓快遞公司的物流服務以一種產品形式呈現給商家和使用者。對於物流詳情,我們會設計一套自己的資料模型,來對接不同的快遞公司。

二、物流服務

1、概念模型

物流服務從模型上又分成三個部分:服務模板、快遞公司模型和運費模板。物流服務從流程上來說分成三個階段:物流服務的表達、物流服務的路由、物流服務的履行。


首先我們會錄入快遞公司,並且配置好快遞公司的運費模板,然後我們會編輯服務模板,最後我們把可以提供相應服務的快遞公司掛載到對應的服務模板下面。完成上面的步驟後,商家就可以針對不同的商品選擇對應的服務模板,掛載了服務模板的商品在使用者交易下單的時候是可以看到物流服務的,這時候就會讓使用者選擇服務模板下的不同快遞公司,然後根據快遞公司的運費模板進行物流費用的計算,從而完成訂單金額的計算,後續商家發貨的時候,中臺會根據訂單上的物流服務快照資訊,呼叫不同的快遞公司進行發貨。

2、資料模型

ER資料模型如下圖所示:


2.1、logistics_service 描述:物流服務模板
欄位名稱 欄位型別 是否可為空 描述
id bigint 主鍵
service_name varchar(32) 服務模板名稱
service_code varchar(32) 服務模板code
type int 模板型別
status int 模板狀態
is_delete int 是否刪除標記
feature varchar(1024) 擴充套件欄位
version int 版本號,預設0
gmt_created Datetime 建立時間
gmt_modified Datetime 修改時間
索引欄位:id、service_code
2.2、logistics_company
欄位名稱 欄位型別 是否可為空 描述
id bigint 主鍵
company_name varchar(32) 快遞公司名稱
company_code varchar(32) 快遞公司編碼
telephone varchar(32) 公司手機號
phone varchar(32) 公司座機號
country varchar(32) 國家
address varchar(1024) 公司地址
company_url varchar(1024) 公司網站地址
company_logo varchar(1024) 公司logo圖片地址
status int 狀態
is_delete int 是否刪除
feature varchar(1024) 擴充套件欄位
version int 版本號,預設為0
gmt_created Datetime 建立時間
gmt_modified Datetime 修改時間
索引欄位:id、company_code
2.3、logistics_service_company 描述:物流服務模板與物流公司的關聯表
欄位名稱 欄位型別 是否可以為空 描述
id bigint 主鍵
service_id bigint 服務模板ID
company_id bigint 物流公司ID
gmt_created Datetime 建立時間
gmt_modified Datetime 修改時間
索引:id、service_id、company_id
2.4、freight_template 描述:運費模板
欄位名稱 欄位型別 是否可為空 描述
id bigint 主鍵
template_name varchar(32) 運費模板名稱
company_id bigint 公司ID
company_code varchar(32) 公司code
template_type int 模板型別
is_default int 是否預設
is_delete int 是否刪除
status int 狀態
feature varchar(1024) 擴充套件欄位
version int 版本號,預設0
gmt_created Datetime 建立時間
gmt_modified Datetime 修改時間
索引:id、company_id、company_code
2.5、freight_template_detail 描述:運費模板明細
欄位名稱 欄位型別 是否可為空 描述
id bigint 主鍵
template_id bigint 運費模板ID
sendAreaCode varchar(32) 發貨地四級地址code
sendAreaName varchar(64) 發貨地四級地址名稱
sendAreaLevel int 發貨地四級地址level
receiveAreaCode varchar(32) 收貨地四級地址code
receiveAreaName varchar(64) 收貨地四級地址名稱
receiveAreaLevel int 收貨地四級地址level
min_weight Decimal 重量下限
max_weight Decimal 重量上限
min_volumn Decimal 體積下限
max_volumn Decimal 體積上限
min_count int 數量下限
max_count int 數量上限
price Decimal 價格
is_default int 是否預設
is_delete int 是否刪除
status int 狀態
calculate_type int 計算型別:1 重量 2體積 3 數量
priority int 優先順序,預設0
feature varchar(1024) 擴充套件欄位
version int 版本號,預設0
gmt_created Datetime 建立時間
gmt_modified Datetime 修改時間
索引:id、template_id、sendAreaCode、receiveAreaCode

三、物流詳情

1、流程設計


物流訂單發貨的時候,會發送非同步訊息,物流詳情接收到訊息後建立一個物流詳情單,然後去訂閱第三方快遞公司,然後快遞公司會非同步回傳物流詳情給我們。對於一些無法訂閱物流詳情的快遞公司,我們通過定時任務定時批量查物流詳情,同步到我們的資料庫中。

2、資料模型


2.1、logistics_detail 描述:物流詳情單
欄位名稱 欄位型別 是否必填 描述
id bigint 必填 主鍵
lg_detail_code varchar(128) 必填 物流詳情單號
outer_id varchar(128) 必填 外部單號
outer_order_type int 必填 外部單型別:1物流訂單
receiver_id bigint 非必填 收貨人ID
receiver_name varchar(64) 非必填 收貨人姓名
receiver_telephone varchar(32) 非必填 收貨人電話
receiver_province varchar(32) 非必填 收貨人省份
receiver_city varchar(64) 非必填 收貨人城市
receiver_area varchar(64) 非必填 收貨人地區
receiver_street varchar(64) 非必填 收貨人街道
receiver_address varchar(1024) 非必填 收貨人詳細地址
receiver_address_code varchar(32) 非必填 四級地址編碼
sender_id bigint 非必填 發貨人ID
sender_name varchar(64) 非必填 發貨人姓名
sender_telephone varchar(32) 非必填 發貨人電話
sender_province varchar(32) 非必填 發貨人省份
sender_city varchar(64) 非必填 發貨人城市
sender_area varchar(64) 非必填 發貨人地區
sender_street varchar(64) 非必填 發貨人街道
sender_address varchar(1024) 非必填 發貨人詳細地址
sender_address_code varchar(32) 非必填 四級地址編碼
mail_no varchar(128) 必填 運單號
company_code varchar(32) 非必填 快遞公司code
company_name varchar(32) 非必填 快遞公司名稱
service_code varchar(32) 非必填 服務模板code
status int 必填 狀態
is_delete int 必填 是否刪除
feature varchar(1024) 非必填 擴充套件欄位
version int 非必填 版本號,預設0
gmt_created Datetime 必填 建立時間
gmt_modified Datetime 必填 修改時間
索引:id、lg_detail_code、unique(outer_id,outer_order_type)
2.2、logistics_detail_node
欄位名稱 欄位型別 是否必填 描述
id bigint 必填 主鍵
lg_detail_code varchar(128) 必填 物流詳情單code
mail_no varchar(128) 必填 運單號
node_time Datetime 非必填 物流詳情節點時間
node_detail varchar(2048) 非必填 物流詳情節點內容
sort_value int 非必填 排序
feature varchar(1024) 非必填 擴充套件欄位
version int 非必填 版本號,預設0
gmt_created Datetime 必填 建立時間
gmt_modified Datetime 必填 修改時間
索引:id、lg_detail_code

四、總結

物流服務和物流詳情是對第三方快遞公司的一層抽象和封裝,相對來說比較簡單,下一篇文章我們將進入重點內容:產品服務層的設計。


聯絡郵箱:[email protected]

(未經同意,請勿轉載)