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