-- ============================================ -- 物流追踪系统数据库表 -- ============================================ -- 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 '关联订单ID(prescription_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='物流查询日志表';