一、引言
物流订单能力作为基础能力,需要设计一套稳定的订单模型,以及一套能够在高并发环境下持续可用的接口。这些接口作为原子接口,供上层业务复用。上层业务无论多么复杂,通过这些原子接口,最终都会收敛到稳定的订单模型中来,这也是区分基础能力和产品服务的一个重要的边界。
本文通过以下5点来介绍如何构建一套物流订单能力:
1、模型设计
2、状态机设计
3、高并发创建接口
4、高并发更新接口
5、高并发查询接口
二、物流订单数据模型设计
首先来看ER模型
一共四张表,主模型是logistics_order、logistics_order_package和logistics_order_item表,logistics_order_unique是去重表。
1、logistics_order
描述:物流订单主单表,整张表大概分为以下几部分信息
表结构设计
字段名称 |
字段类型 |
是否必填 |
描述 |
id |
bigint |
必填 |
主键 |
lg_order_code |
varchar(128) |
必填 |
物流单号 |
trade_order_code |
varchar(128) |
非必填 |
交易单号 |
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) |
非必填 |
四级地址编码 |
buyer_id |
bigint |
必填 |
买家ID |
buyer_name |
varchar(64) |
非必填 |
买家昵称 |
seller_id |
bigint |
非必填 |
卖家ID |
seller_name |
varchar(64) |
非必填 |
卖家昵称 |