Files
ruoyi-java/sql/wecom_share_link_logistics_job_backfill_historical.sql
2026-04-03 00:34:07 +08:00

49 lines
1.9 KiB
SQL
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.

-- ---------------------------------------------------------------------------
-- 历史补录(可选):从 wecom_inbound_trace 批量写入 wecom_share_link_logistics_job
--
-- 优先使用后台「企微分享链物流」页「从追踪补录历史」按钮Java 与线上一致,支持 http/https、备注行含链等
--
-- 需 MySQL 8.0.14+LATERAL、REGEXP_SUBSTR。可重复执行按 job_key 去重)。
-- ---------------------------------------------------------------------------
INSERT INTO wecom_share_link_logistics_job (
job_key, from_user_name, tracking_url, remark, touser_push, status, scan_attempts, last_note,
create_time, update_time
)
SELECT
CONCAT('tracebf', t.id),
t.from_user_name,
COALESCE(
NULLIF(REGEXP_SUBSTR(t.content, 'https://3\\.cn/[A-Za-z0-9\\-]+'), ''),
NULLIF(REGEXP_SUBSTR(t.content, 'http://3\\.cn/[A-Za-z0-9\\-]+'), ''),
NULLIF(REGEXP_SUBSTR(p.content, 'https://3\\.cn/[A-Za-z0-9\\-]+'), ''),
NULLIF(REGEXP_SUBSTR(p.content, 'http://3\\.cn/[A-Za-z0-9\\-]+'), '')
),
t.content,
t.from_user_name,
'IMPORTED',
0,
CONCAT('from_trace_id=', t.id, '|sql_batch'),
t.create_time,
t.create_time
FROM wecom_inbound_trace t
LEFT JOIN LATERAL (
SELECT p0.content
FROM wecom_inbound_trace p0
WHERE p0.from_user_name = t.from_user_name
AND p0.id < t.id
AND (p0.content LIKE '%https://3.cn/%' OR p0.content LIKE '%http://3.cn/%')
ORDER BY p0.id DESC
LIMIT 1
) AS p ON TRUE
WHERE t.reply_content LIKE '%已加入查询队列%'
AND COALESCE(
NULLIF(REGEXP_SUBSTR(t.content, 'https://3\\.cn/[A-Za-z0-9\\-]+'), ''),
NULLIF(REGEXP_SUBSTR(t.content, 'http://3\\.cn/[A-Za-z0-9\\-]+'), ''),
NULLIF(REGEXP_SUBSTR(p.content, 'https://3\\.cn/[A-Za-z0-9\\-]+'), ''),
NULLIF(REGEXP_SUBSTR(p.content, 'http://3\\.cn/[A-Za-z0-9\\-]+'), '')
) IS NOT NULL
AND NOT EXISTS (
SELECT 1 FROM wecom_share_link_logistics_job e WHERE e.job_key = CONCAT('tracebf', t.id)
);