-- =============================================== -- 运单服务数据库初始化脚本 -- 数据库: erp_db -- =============================================== -- ---------------------------- -- 1. 运单表 waybills -- ---------------------------- CREATE TABLE IF NOT EXISTS `waybills` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `order_id` BIGINT NOT NULL COMMENT '订单ID', `express_code` VARCHAR(50) NOT NULL COMMENT '快递公司编码', `waybill_no` VARCHAR(100) NOT NULL COMMENT '运单号', `print_content` TEXT COMMENT '电子面单打印内容(JSON)', `status` VARCHAR(20) NOT NULL DEFAULT 'unused' COMMENT '状态: unused-未使用, used-已使用, cancelled-已取消, void-已作废', `used_at` DATETIME COMMENT '使用时间', `cancelled_at` DATETIME COMMENT '取消时间', `cancel_reason` VARCHAR(500) COMMENT '取消原因', `voided_at` DATETIME COMMENT '作废时间', `void_reason` VARCHAR(500) COMMENT '作废原因', `tenant_id` BIGINT COMMENT '租户ID', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', `deleted_at` DATETIME COMMENT '删除时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_waybill_no` (`waybill_no`), KEY `idx_order_id` (`order_id`), KEY `idx_express_code` (`express_code`), KEY `idx_status` (`status`), KEY `idx_tenant_id` (`tenant_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='运单表'; -- ---------------------------- -- 2. 运单状态跟踪表 waybill_status -- ---------------------------- CREATE TABLE IF NOT EXISTS `waybill_status` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `waybill_no` VARCHAR(100) NOT NULL COMMENT '运单号', `carrier` VARCHAR(50) COMMENT '快递公司编码', `status` VARCHAR(30) COMMENT '状态', `location` VARCHAR(255) COMMENT '当前位置', `description` VARCHAR(500) COMMENT '状态描述', `last_trace_time` DATETIME COMMENT '最后轨迹时间', `signed_time` DATETIME COMMENT '签收时间', `receiver_name` VARCHAR(100) COMMENT '签收人姓名', `receiver_phone` VARCHAR(20) COMMENT '签收人电话', `tenant_id` BIGINT COMMENT '租户ID', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间', PRIMARY KEY (`id`), UNIQUE KEY `uk_waybill_no` (`waybill_no`), KEY `idx_carrier` (`carrier`), KEY `idx_status` (`status`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='运单状态跟踪表'; -- ---------------------------- -- 3. 物流轨迹明细表 logistics_traces -- ---------------------------- CREATE TABLE IF NOT EXISTS `logistics_traces` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `waybill_no` VARCHAR(100) NOT NULL COMMENT '运单号', `carrier` VARCHAR(50) COMMENT '快递公司编码', `status` VARCHAR(50) COMMENT '状态', `location` VARCHAR(255) COMMENT '地点', `description` VARCHAR(500) COMMENT '轨迹描述', `trace_time` DATETIME COMMENT '轨迹时间', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_waybill_no` (`waybill_no`), KEY `idx_trace_time` (`trace_time`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='物流轨迹明细表'; -- ---------------------------- -- 4. 打印日志表 print_logs -- ---------------------------- CREATE TABLE IF NOT EXISTS `print_logs` ( `id` BIGINT NOT NULL AUTO_INCREMENT COMMENT '主键ID', `order_id` BIGINT NOT NULL COMMENT '订单ID', `action` VARCHAR(20) NOT NULL COMMENT '操作类型: print-打印, reprint-补打, change-换单', `operator_id` BIGINT COMMENT '操作人ID', `old_waybill_no` VARCHAR(100) COMMENT '原运单号', `new_waybill_no` VARCHAR(100) COMMENT '新运单号', `reason` VARCHAR(500) COMMENT '原因', `tenant_id` BIGINT COMMENT '租户ID', `created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), KEY `idx_order_id` (`order_id`), KEY `idx_action` (`action`), KEY `idx_operator_id` (`operator_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='打印日志表'; -- =============================================== -- 运单状态说明 -- =============================================== -- waybills.status: -- unused - 未使用(面单申请后默认状态) -- used - 已使用(扫描出库等操作后) -- cancelled - 已取消(向快递公司取消成功) -- void - 已作废(系统内部作废) -- -- waybill_status.status: -- pending - 待揽收 -- in_transit - 运输中 -- out_for_delivery - 派送中 -- signed - 已签收 -- rejected - 拒收 -- returned - 退回 -- exception - 异常 -- ===============================================