快递系统数据库架构
这个本项目的后端地址。
客户表customer
用户是在本系统注册的用户。
id
用户唯一标识username
用户名,唯一phone
电话号码,唯一email
邮箱,唯一password_hash
密码哈希salt
盐值address
地址簿,用来记录用户常用地址,json格式
员工表employee
员工表记录了所有参与揽收、运输、派送过程的所有人员。
id
员工唯一标识name
员工姓名phone
电话号码,唯一email
邮箱,唯一password_hash
密码哈希salt
盐值serve_at
工作网点
网点表logistic
记录各级网点信息。SQL脚本参照logistics.sql
id
转运中心或网点的唯一标识。name
名称。parent_id
父级转运中心或网点的id
。用于建立层级关系,顶级转运中心此字段为NULL。level
转运中心或网点的级别(例如,国家级、省级、市级、区/县级等)。district
区/县city
城市province
省份contact_info
联系方式(电话或邮箱)
运单表 shipment
运单是用户支付的唯一单位,它会包含一个或多个包裹(考虑到可能会有如搬家的情况)。
id
运单唯一标识origin
出发地,外键参照logistic.id
destination
目的地,外键参照logistic.id
price
运单价格status
运单状态 :enum{'pending', 'cod_pending', 'paid', 'cancelled'}
分别代表待支付(默认)、到付待支付、已支付、取消。customer_id
外键参照customer.id
1:1
包裹表 package
包裹是现实世界中的一个包裹,是用户会装箱的最小单位。
id
包裹唯一标识create_date
创建时间status
包裹状态 :enum{'pending', 'processing', 'in_transit','delivering','signed', 'cancelled'}
分别代表待支付(默认)、处理中、运输中、派送中、已签收、已取消。shipment_id
对应运单id,外键参照shipment.id
1:Nbatch_id
对应转运批次id,外键参照batch.id
1:Nweight
重量size
尺寸
转运批次表 batch
转运批次是指快递网点之间的运送最小单位。出于对包裹大小区别、目的地区别的考虑,会对1个或多个包裹建立一个转运批次。
id
转运批次唯一标识create_date
创建时间origin
出发地,外键参照logistic.id
destination
目的地,外键参照logistic.id
responsible
责任人,外键参照employee.id
status
转运状态 :enum{in_trans, arrive}
vehicle_id
外键参照vehicles.id
(该转运批次所在载具id,如果已经到达目的地记录最后所在载具id)1:1
载具表vehicle
载具可能包含车辆、船舶、列车、航班,记录其对应车牌号/班次号
id
: 载具唯一标识type
: 载具类型,例如车辆、船舶、列车、航班等shift
: 车牌号/班次号coordinate
: 载具经纬度信息,GIS的POINT格式,用于记录载具当前位置,为此列建立空间索引current_batch_id
: 当前批次ID,外键参照batch.id
,表示当前载具所承载的转运批次,1:1关系current_location_id
: 当前位置ID,外键参照logistic.id
,表示当前载具所在位置,1:N关系(一个载具只能在一个位置,但一个位置可能有多个载具)
核心业务流程
- 运单创建
功能描述: 用户通过物流管理系统创建运单,每个运单可以包含一个或多个包裹。此过程涉及录入包裹的细节,如重量、尺寸等信息,并生成唯一的运单号以跟踪运输过程。 - 包裹揽收
功能描述: 快递员在用户指定地点揽收包裹,并使用移动设备更新运单状态为“已揽收”,同时包裹被运输至就近的区域网点。 - 区域网点处理
功能描述: 区域网点接收到来自不同用户的多个包裹,根据包裹的大小进行分装处理:
大包裹:每个大包裹单独建立一个转运批次。
小包裹:多个小包裹合并打包成一个转运批次。
装车后,这些批次被发往上级分拣中心。 - 分拣中心处理
功能描述: 分拣中心对收到的包裹进行拆包,并根据包裹的目的地重新建立转运批次。这一过程利用自动化分拣技术,确保每个包裹准确地被分配到正确的转运批次,然后发往对应的转运中心。 - 转运中心处理
功能描述: 目的地转运中心接收到来自分拣中心的转运批次后,再次进行拆包和处理,根据具体的目的地地址重新建立转运批次,以便将包裹运输到更接近最终目的地的网点。 - 末端网点派送
功能描述: 对应网点接收到包裹后,进行最后一次拆包,并根据最终目的地地址分配派送任务。快递员根据派送任务进行最后一公里的配送。 - 用户签收与支付
功能描述:
用户签收:快递员完成包裹派送后,用户对包裹进行签收确认,运单状态更新为“已签收”。
支付处理:如果运单是到付,用户在签收时完成支付操作,系统记录支付状态。