erp-java/services/waybill-service/deploy/sql/init.sql

110 lines
5.1 KiB
SQL

-- ===============================================
-- 运单服务数据库初始化脚本
-- 数据库: 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 - 异常
-- ===============================================