This commit is contained in:
Yangxt
2026-09-30 11:11:54 +08:00
parent cb9b7a4bd4
commit 2fb57ec490
160 changed files with 14764 additions and 53 deletions
@@ -0,0 +1,17 @@
-- 表:wms_carrier
-- 用途:承运商。租户配置的承运商主数据。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:对接承运商 API 的凭证不放本表,避免和可展示主数据混在一起;需要时再单独加密存储。
CREATE TABLE `wms_carrier` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`carrier_code` VARCHAR(32) NOT NULL COMMENT '承运商编码,租户内唯一',
`carrier_name` VARCHAR(128) NOT NULL COMMENT '承运商名称',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_carrier_code` (`tenant_code`, `carrier_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='承运商';
@@ -0,0 +1,26 @@
-- 表:wms_freight_rule
-- 用途:运费规则。渠道上的重量段首重续重价格。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:重量段重叠由应用层拒绝。金额使用 DECIMAL。
CREATE TABLE `wms_freight_rule` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`rule_code` VARCHAR(32) NOT NULL COMMENT '规则编码,租户内唯一',
`channel_code` VARCHAR(32) NOT NULL COMMENT '渠道编码',
`country_code` VARCHAR(8) NOT NULL DEFAULT '' COMMENT '目的国,空表示不限',
`min_weight` DECIMAL(12,4) NOT NULL DEFAULT 0.0000 COMMENT '重量段下限千克,含',
`max_weight` DECIMAL(12,4) NOT NULL COMMENT '重量段上限千克,不含',
`currency` CHAR(3) NOT NULL DEFAULT 'CNY' COMMENT '币种',
`first_weight` DECIMAL(12,4) NOT NULL COMMENT '首重千克',
`first_price` DECIMAL(16,4) NOT NULL COMMENT '首重价格',
`extra_weight` DECIMAL(12,4) NOT NULL COMMENT '续重单位千克',
`extra_price` DECIMAL(16,4) NOT NULL COMMENT '每续重单位价格',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_rule_code` (`tenant_code`, `rule_code`),
KEY `idx_tenant_channel` (`tenant_code`, `channel_code`, `country_code`),
CONSTRAINT `chk_freight_weight` CHECK (`max_weight` > `min_weight` AND `first_weight` > 0 AND `extra_weight` > 0)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='运费规则';
@@ -0,0 +1,21 @@
-- 表:wms_logistics_channel
-- 用途:物流渠道。仓库实际可选用的承运商服务。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:发货单选渠道,不直接选平台物流接口。
CREATE TABLE `wms_logistics_channel` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`channel_code` VARCHAR(32) NOT NULL COMMENT '渠道编码,租户内唯一',
`channel_name` VARCHAR(64) NOT NULL COMMENT '渠道名称',
`carrier_code` VARCHAR(32) NOT NULL COMMENT '承运商编码',
`service_code` VARCHAR(32) NOT NULL COMMENT '服务编码',
`warehouse_code` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '适用仓库,空表示该租户全部仓库',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`remark` VARCHAR(500) NOT NULL DEFAULT '' COMMENT '备注',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_channel_code` (`tenant_code`, `channel_code`),
KEY `idx_tenant_wh` (`tenant_code`, `warehouse_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='物流渠道';
@@ -0,0 +1,17 @@
-- 表:wms_logistics_service
-- 用途:物流服务。承运商下的服务产品,如标准、快递、经济。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:新增承运商服务只加行,不改发货核心单据。
CREATE TABLE `wms_logistics_service` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`carrier_code` VARCHAR(32) NOT NULL COMMENT '承运商编码',
`service_code` VARCHAR(32) NOT NULL COMMENT '服务编码',
`service_name` VARCHAR(64) NOT NULL COMMENT '服务名称',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 启用,disabled 停用',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_carrier_service` (`tenant_code`, `carrier_code`, `service_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='物流服务';
@@ -0,0 +1,27 @@
-- 表:wms_shipment
-- 用途:发货单。包裹交给承运商的记录。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:状态变为 shipped 时扣减 picked_qty 并写 biz_type=ship 的流水,同时回写出库与订单的已发数量。获取面单、同步轨迹走队列,不在用户请求里等待承运商。
CREATE TABLE `wms_shipment` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`shipment_no` VARCHAR(64) NOT NULL COMMENT '发货单号,租户内唯一',
`outbound_no` VARCHAR(64) NOT NULL COMMENT '出库单号',
`package_no` VARCHAR(64) NOT NULL COMMENT '包裹号',
`warehouse_code` VARCHAR(32) NOT NULL COMMENT '仓库编码',
`channel_code` VARCHAR(32) NOT NULL COMMENT '物流渠道编码',
`carrier_code` VARCHAR(32) NOT NULL COMMENT '承运商编码',
`tracking_no` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '运单号,取得面单前可空',
`status` VARCHAR(32) NOT NULL DEFAULT 'pending' COMMENT 'pending 待获取面单,labeled 已有面单,shipped 已交出,exception 异常,delivered 已妥投,cancelled 已取消',
`shipped_at` DATETIME(3) NULL COMMENT '交运时间',
`created_by` VARCHAR(64) NOT NULL DEFAULT '' COMMENT '创建人 user_code',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_shipment_no` (`tenant_code`, `shipment_no`),
UNIQUE KEY `uk_tenant_package` (`tenant_code`, `package_no`),
KEY `idx_tenant_outbound` (`tenant_code`, `outbound_no`),
KEY `idx_tenant_tracking` (`tenant_code`, `tracking_no`),
KEY `idx_tenant_status` (`tenant_code`, `status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='发货单';
@@ -0,0 +1,21 @@
-- 表:wms_tracking_event
-- 用途:轨迹事件。运单轨迹,按时间追加。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:同步任务用承运商事件时间加事件码做幂等,重复拉取不插重复行。
CREATE TABLE `wms_tracking_event` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`shipment_no` VARCHAR(64) NOT NULL COMMENT '发货单号',
`tracking_no` VARCHAR(64) NOT NULL COMMENT '运单号',
`event_time` DATETIME(3) NOT NULL COMMENT '承运商事件时间',
`event_code` VARCHAR(32) NOT NULL DEFAULT '' COMMENT '承运商事件码',
`description` VARCHAR(255) NOT NULL DEFAULT '' COMMENT '事件描述',
`event_location` VARCHAR(128) NOT NULL DEFAULT '' COMMENT '事件地点',
`raw_payload` JSON NULL COMMENT '原始报文,不得包含密钥',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
KEY `idx_tenant_tracking_time` (`tenant_code`, `tracking_no`, `event_time`),
KEY `idx_tenant_shipment` (`tenant_code`, `shipment_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='轨迹事件';
@@ -0,0 +1,19 @@
-- 表:wms_waybill
-- 用途:面单。发货单对应的面单文件,允许作废后重开。
-- 约定:InnoDB / utf8mb4 / 无外键,表间按业务编码关联。详见 docs/database/00-conventions.md
-- 说明:同一发货单同时只能有一张 active 面单,由应用层保证。文件上传遵守安全规范,路径不暴露公网目录。
CREATE TABLE `wms_waybill` (
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '内部主键',
`tenant_code` VARCHAR(32) NOT NULL COMMENT '租户编码',
`waybill_no` VARCHAR(64) NOT NULL COMMENT '面单号,租户内唯一',
`shipment_no` VARCHAR(64) NOT NULL COMMENT '发货单号',
`label_format` VARCHAR(16) NOT NULL COMMENT 'pdf、zpl 或 png',
`label_path` VARCHAR(255) NOT NULL COMMENT '面单文件存储路径,不存二进制',
`status` VARCHAR(32) NOT NULL DEFAULT 'active' COMMENT 'active 当前有效,voided 已作废',
`created_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`updated_at` DATETIME(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '更新时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tenant_waybill_no` (`tenant_code`, `waybill_no`),
KEY `idx_tenant_shipment` (`tenant_code`, `shipment_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='面单';