Files
zyt/server/database/migrations/create_express_tracking_tables.sql
T
2026-05-11 17:49:38 +08:00

155 lines
7.7 KiB
SQL
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
-- ============================================
-- 物流追踪系统数据库表
-- ============================================
-- 1. 物流订单表(主表)
CREATE TABLE IF NOT EXISTS `zyt_express_tracking` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`order_id` int(11) NOT NULL DEFAULT '0' COMMENT '关联订单IDprescription_order表)',
`order_type` varchar(50) NOT NULL DEFAULT 'prescription' COMMENT '订单类型',
`tracking_number` varchar(80) NOT NULL DEFAULT '' COMMENT '快递单号',
`express_company` varchar(50) NOT NULL DEFAULT 'auto' COMMENT '快递公司编码',
`express_company_name` varchar(100) NOT NULL DEFAULT '' COMMENT '快递公司名称',
`recipient_phone` varchar(20) NOT NULL DEFAULT '' COMMENT '收件人手机号',
`recipient_name` varchar(100) NOT NULL DEFAULT '' COMMENT '收件人姓名',
`recipient_address` varchar(500) NOT NULL DEFAULT '' COMMENT '收件地址',
-- 物流状态
`current_state` varchar(10) NOT NULL DEFAULT '0' COMMENT '当前物流状态:0在途,1揽收,2疑难,3签收,4退签,5派件,6退回,7转投,8清关,10待清关,11清关中,12已清关,13清关异常,14拒签',
`current_state_text` varchar(50) NOT NULL DEFAULT '' COMMENT '当前状态文本',
`is_signed` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已签收:0否,1是',
`sign_time` int(11) NOT NULL DEFAULT '0' COMMENT '签收时间',
-- 最新轨迹
`latest_trace_time` varchar(50) NOT NULL DEFAULT '' COMMENT '最新轨迹时间',
`latest_trace_context` varchar(500) NOT NULL DEFAULT '' COMMENT '最新轨迹内容',
`latest_location` varchar(200) NOT NULL DEFAULT '' COMMENT '最新位置',
-- 查询信息
`last_query_time` int(11) NOT NULL DEFAULT '0' COMMENT '最后查询时间',
`query_count` int(11) NOT NULL DEFAULT '0' COMMENT '查询次数',
`data_source` varchar(50) NOT NULL DEFAULT '' COMMENT '数据来源:kuaidi100/official',
-- 预计信息
`estimated_arrival_time` varchar(50) NOT NULL DEFAULT '' COMMENT '预计到达时间',
`total_time` varchar(50) NOT NULL DEFAULT '' COMMENT '总耗时',
`remain_time` varchar(50) NOT NULL DEFAULT '' COMMENT '剩余时间',
-- 自动更新控制
`auto_update` tinyint(1) NOT NULL DEFAULT '1' COMMENT '是否自动更新:0否,1是',
`update_interval` int(11) NOT NULL DEFAULT '1800' COMMENT '更新间隔(秒),默认30分钟',
`next_update_time` int(11) NOT NULL DEFAULT '0' COMMENT '下次更新时间',
-- 通知设置
`notify_on_sign` tinyint(1) NOT NULL DEFAULT '1' COMMENT '签收时通知:0否,1是',
`notify_on_problem` tinyint(1) NOT NULL DEFAULT '1' COMMENT '异常时通知:0否,1是',
`notified_states` varchar(500) NOT NULL DEFAULT '' COMMENT '已通知的状态(JSON数组)',
-- 扩展信息
`route_info` text COMMENT '路由信息(JSON',
`extra_data` text COMMENT '扩展数据(JSON',
-- 时间戳
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
`update_time` int(11) NOT NULL DEFAULT '0' COMMENT '更新时间',
`delete_time` int(11) DEFAULT NULL COMMENT '删除时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_tracking_number` (`tracking_number`),
KEY `idx_order_id` (`order_id`),
KEY `idx_state` (`current_state`),
KEY `idx_auto_update` (`auto_update`, `next_update_time`),
KEY `idx_create_time` (`create_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物流追踪主表';
-- 2. 物流轨迹明细表
CREATE TABLE IF NOT EXISTS `zyt_express_trace` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tracking_id` int(11) NOT NULL DEFAULT '0' COMMENT '关联tracking表ID',
`tracking_number` varchar(80) NOT NULL DEFAULT '' COMMENT '快递单号(冗余,便于查询)',
-- 轨迹信息
`trace_time` varchar(50) NOT NULL DEFAULT '' COMMENT '轨迹时间',
`trace_time_stamp` int(11) NOT NULL DEFAULT '0' COMMENT '轨迹时间戳',
`trace_context` varchar(1000) NOT NULL DEFAULT '' COMMENT '轨迹内容',
-- 状态信息
`status` varchar(50) NOT NULL DEFAULT '' COMMENT '物流状态名称',
`status_code` varchar(10) NOT NULL DEFAULT '' COMMENT '物流状态码',
-- 位置信息
`location` varchar(200) NOT NULL DEFAULT '' COMMENT '当前位置',
`area_code` varchar(50) NOT NULL DEFAULT '' COMMENT '行政区域编码',
`area_name` varchar(200) NOT NULL DEFAULT '' COMMENT '行政区域名称',
`area_center` varchar(100) NOT NULL DEFAULT '' COMMENT '区域中心坐标',
-- 扩展信息
`extra_data` text COMMENT '扩展数据(JSON',
-- 时间戳
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_tracking_id` (`tracking_id`),
KEY `idx_tracking_number` (`tracking_number`),
KEY `idx_trace_time_stamp` (`trace_time_stamp`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物流轨迹明细表';
-- 3. 物流状态变更记录表
CREATE TABLE IF NOT EXISTS `zyt_express_state_log` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tracking_id` int(11) NOT NULL DEFAULT '0' COMMENT '关联tracking表ID',
`tracking_number` varchar(80) NOT NULL DEFAULT '' COMMENT '快递单号',
-- 状态变更
`old_state` varchar(10) NOT NULL DEFAULT '' COMMENT '旧状态',
`old_state_text` varchar(50) NOT NULL DEFAULT '' COMMENT '旧状态文本',
`new_state` varchar(10) NOT NULL DEFAULT '' COMMENT '新状态',
`new_state_text` varchar(50) NOT NULL DEFAULT '' COMMENT '新状态文本',
-- 变更信息
`change_time` int(11) NOT NULL DEFAULT '0' COMMENT '变更时间',
`change_reason` varchar(500) NOT NULL DEFAULT '' COMMENT '变更原因(最新轨迹内容)',
-- 通知信息
`is_notified` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否已通知:0否,1是',
`notify_time` int(11) NOT NULL DEFAULT '0' COMMENT '通知时间',
`notify_result` varchar(500) NOT NULL DEFAULT '' COMMENT '通知结果',
-- 时间戳
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_tracking_id` (`tracking_id`),
KEY `idx_tracking_number` (`tracking_number`),
KEY `idx_change_time` (`change_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物流状态变更记录表';
-- 4. 物流查询日志表
CREATE TABLE IF NOT EXISTS `zyt_express_query_log` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '主键ID',
`tracking_number` varchar(80) NOT NULL DEFAULT '' COMMENT '快递单号',
`express_company` varchar(50) NOT NULL DEFAULT '' COMMENT '快递公司编码',
-- 查询信息
`query_type` varchar(50) NOT NULL DEFAULT 'manual' COMMENT '查询类型:manual手动,auto自动',
`query_source` varchar(50) NOT NULL DEFAULT '' COMMENT '查询来源:kuaidi100/official',
`query_time` int(11) NOT NULL DEFAULT '0' COMMENT '查询时间',
-- 查询结果
`is_success` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否成功:0否,1是',
`error_code` varchar(50) NOT NULL DEFAULT '' COMMENT '错误码',
`error_message` varchar(500) NOT NULL DEFAULT '' COMMENT '错误信息',
-- 响应信息
`response_time` int(11) NOT NULL DEFAULT '0' COMMENT '响应时间(毫秒)',
`trace_count` int(11) NOT NULL DEFAULT '0' COMMENT '轨迹数量',
-- 时间戳
`create_time` int(11) NOT NULL DEFAULT '0' COMMENT '创建时间',
PRIMARY KEY (`id`),
KEY `idx_tracking_number` (`tracking_number`),
KEY `idx_query_time` (`query_time`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='物流查询日志表';