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

銀河1號發表於2018-11-25

一、概述

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

二、物流服務

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

四、總結

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


更多文章歡迎訪問 http://www.apexyun.com/


聯絡郵箱:public@space-explore.com

(未經同意,請勿轉載)


相關文章