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

1、概述

在物流系統中,中臺只負責物流訂單的流轉,具體的物流履行每每須要對接第三方快遞公司。因爲第三方快遞公司的技術標準不同,所以咱們須要對第三方快遞公司的接口進行封裝,這裏涉及到兩大類封裝,一個是下發請求的封裝,一個是接收回傳的物流詳情的封裝。對於下發快遞公司,咱們不單單是接口層面的封裝,而是抽象出了一套服務模板,讓快遞公司的物流服務以一種產品形式呈現給商家和用戶。對於物流詳情,咱們會設計一套本身的數據模型,來對接不一樣的快遞公司。

2、物流服務

一、概念模型

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


首先咱們會錄入快遞公司,而且配置好快遞公司的運費模板,而後咱們會編輯服務模板,最後咱們把能夠提供相應服務的快遞公司掛載到對應的服務模板下面。完成上面的步驟後,商家就能夠針對不一樣的商品選擇對應的服務模板,掛載了服務模板的商品在用戶交易下單的時候是能夠看到物流服務的,這時候就會讓用戶選擇服務模板下的不一樣快遞公司,而後根據快遞公司的運費模板進行物流費用的計算,從而完成訂單金額的計算,後續商家發貨的時候,中臺會根據訂單上的物流服務快照信息,調用不一樣的快遞公司進行發貨。

二、數據模型

ER數據模型以下圖所示:


2.一、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.二、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.三、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.四、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.五、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

3、物流詳情

一、流程設計


物流訂單發貨的時候,會發送異步消息,物流詳情接收到消息後建立一個物流詳情單,而後去訂閱第三方快遞公司,而後快遞公司會異步回傳物流詳情給咱們。對於一些沒法訂閱物流詳情的快遞公司,咱們經過定時任務定時批量查物流詳情,同步到咱們的數據庫中。

二、數據模型


2.一、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.二、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

4、總結

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


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


聯繫郵箱:public@space-explore.com數據庫

(未經贊成,請勿轉載)異步

相關文章
相關標籤/搜索