一、概述

在物流系统中,中台只负责物流订单的流转,具体的物流履行往往需要对接第三方快递公司。由于第三方快递公司的技术标准不一样,因此我们需要对第三方快递公司的接口进行封装,这里涉及到两大类封装,一个是下发请求的封装,一个是接收回传的物流详情的封装。对于下发快递公司,我们不仅仅是接口层面的封装,而是抽象出了一套服务模板,让快递公司的物流服务以一种产品形式呈现给商家和用户。对于物流详情,我们会设计一套自己的数据模型,来对接不同的快递公司。

二、物流服务

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

(未经同意,请勿转载)

基于中台思想的物流系统设计(四):物流服务与物流详情相关推荐

  1. 基于中台思想的物流系统设计(二):构建物流订单能力

    一.引言 物流订单能力作为基础能力,需要设计一套稳定的订单模型,以及一套能够在高并发环境下持续可用的接口.这些接口作为原子接口,供上层业务复用.上层业务无论多么复杂,通过这些原子接口,最终都会收敛到稳 ...

  2. 基于中台思想的物流系统设计(一)

    一.总体设计 在中台架构中,我们往往把一个系统划分为基础能力层和产品服务层.其中,基础能力层聚焦于稳定收敛的业务模型和基础服务本身,不会随着业务和前台产品的调整发生变化,平台产品层则专注于通过流程编排 ...

  3. 基于中台思想的物流系统设计(三):构建物流地址能力

    一.引言 在电商物流领域我们会涉及到地址,其中包括了基础的四级地址和用户填写的地址.四级地址在整个从下单到收货的业务流程中都会用到,因此设计的时候要考虑如何最大限度地提高QPS.用户地址在下单的时候让 ...

  4. 基于java的快递物流查询系统_毕业论文-快递管理基于java的物流快递管理系统设计.doc...

    毕业论文-快递管理基于java的物流快递管理系统设计 快递管理系统 毕业设计论文 题 目 快递管理系统 姓 名 王敏雪 所 属 系 数学与计算机科学 专 业 计算机科学与技术 班 级 07级计科三班 ...

  5. 基于4G DTU和工业4G路由器的互联网+智慧物流解决方案

    一.行业背景 智慧物流是一种以信息技术为支撑,在物流的运输.仓储.包装.装卸搬运.流通加工.配送.信息服务等各个环节实现系统感知.全面分析,及时处理及自我调整功能,实现物流规整智慧.发现智慧.创新智慧 ...

  6. 嵌入式项目实战——基于QT的视频监控系统设计(四)

    嵌入式项目实战--基于QT的视频监控系统设计(四) 进入到五一假期的第四天,通过前三天的分享,相信你应该已经掌握了QT的基本使用.UDP网络编程.v4l2视频处理模块.多线程编程等基本的知识点.其实昨 ...

  7. 基于物联网的智能家居系统设计(课设)

    基于物联网的智能家居系统设计(课设) 摘 要 一.概述 二.系统分析 三.系统设计 四.系统实现 1.硬件实现 2.软件实现 五.结论与心得 六.参考文献 摘 要   科技的快速发展给人们的生活带来了 ...

  8. java毕业设计——基于Java+Socket的视频会议系统设计与实现(毕业论文+程序源码)——视频会议系统

    基于Java+Socket的视频会议系统设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于Java+Socket的视频会议系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下 ...

  9. 【IoT】基于 CC2530 的 ZigBee 物联网系统设计

    1.1设计背景 无线传感器网络是目前研究的热门领域,它集成 了多门学科的知识,应用领域广泛,因此深受国际社会 的关注. 在 21 世纪里,无线传感器网络技术是具有 较大影响力技术中的一个热门技术,也是 ...

最新文章

  1. UVa11022 String Factoring(kmp+dp)
  2. linux eclipse java_从Linux终端编译运行Eclipse Java项目
  3. Storm,Trident,Spark Streaming,Samza和Flink主流流处理框架比较
  4. 936焊台(恒温电烙铁)温度不可调的维修 (Z)
  5. 进程handle获取线程_获取进程中的线程列表
  6. java 添加注解_你知道Java中的package-info的作用吗?
  7. 基于POLARDB数据库的压测实践
  8. python的底层实现_Python底层封装实现方法详解
  9. 【参与开源】J2EE开源项目JEECG快速开发平台,欢迎广大技术爱好者参与,第三期招募新成员
  10. 每日一道算法题--leetcode 746--使用最小花费爬楼梯--python
  11. python开发聊天机器人_Python实现机器人聊天
  12. open函数返回-1_Linux驱动开发 / 字符设备驱动内幕 (1)
  13. 搜狗浏览器安装插件(.crx)
  14. linux安装谷歌中文,CentOS 7安装谷歌拼音中文输入法
  15. 修复YYC松鼠短视频系统搜索功能无法使用问题
  16. uniapp-连接服务器超时,点击重试
  17. 老爷“鸡”升级小记!
  18. Deepin Linux系统安装及显示器配置教程(可竖屏)
  19. 修改织梦dedecms后台默认admin账号的方法
  20. php设置字体为黑体,css如何设置黑体样式

热门文章

  1. 【Python】文本转语音库pyttsx3
  2. 计算机二级java判卷标准_计算机二级考试的有什么衡量的评分标准?
  3. 【鹏哥C语言网课笔记】初识C语言
  4. 利用 Sony Vegas 制作消音伴奏教程
  5. .Text blog的一点点安装心得
  6. matlab的实验报告,Matlab实验报告.doc
  7. 解决 Origin 平台安装慢的办法
  8. 网络命令以及如何使用Ipconfig.exe工具查看TCP/IP配置
  9. Natas 幽灵王病毒分析
  10. 【高强度U盘文件夹加密工具】