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

63 lines
1.9 KiB
SQL
Executable File

-- =====================================================
-- 同步现有订单的快递单号到物流追踪表
-- =====================================================
-- 执行时间:2026-04-07
-- 说明:将 zyt_tcm_prescription_order 表中已有的快递单号同步到 zyt_express_tracking 表
-- =====================================================
-- 插入现有订单的快递单号到物流追踪表
-- 只插入有快递单号且不为空的订单
INSERT INTO `zyt_express_tracking` (
`order_id`,
`order_type`,
`tracking_number`,
`express_company`,
`recipient_phone`,
`recipient_name`,
`recipient_address`,
`auto_update`,
`update_interval`,
`next_update_time`,
`create_time`,
`update_time`
)
SELECT
o.`id` AS `order_id`,
'prescription' AS `order_type`,
o.`tracking_number`,
CASE
WHEN o.`express_company` = '' OR o.`express_company` IS NULL THEN 'auto'
ELSE o.`express_company`
END AS `express_company`,
o.`recipient_phone`,
o.`recipient_name`,
o.`shipping_address` AS `recipient_address`,
1 AS `auto_update`,
600 AS `update_interval`,
UNIX_TIMESTAMP() AS `next_update_time`,
UNIX_TIMESTAMP() AS `create_time`,
UNIX_TIMESTAMP() AS `update_time`
FROM `zyt_tcm_prescription_order` o
WHERE o.`tracking_number` IS NOT NULL
AND o.`tracking_number` != ''
AND o.`delete_time` IS NULL
AND NOT EXISTS (
-- 避免重复插入
SELECT 1 FROM `zyt_express_tracking` t
WHERE t.`tracking_number` = o.`tracking_number`
);
-- 显示同步结果
SELECT
COUNT(*) AS '已同步的快递单号数量'
FROM `zyt_express_tracking`
WHERE `delete_time` IS NULL;
-- 显示待更新的快递单号(未签收的)
SELECT
COUNT(*) AS '待自动更新的快递单号数量'
FROM `zyt_express_tracking`
WHERE `auto_update` = 1
AND `is_signed` = 0
AND `delete_time` IS NULL;