Files
jcgl-dev/dev/sql/apt_rev01/25_photo_retention.sql
T
2026-11-12 13:36:24 +08:00

42 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.
-- =============================================================================
-- 刷脸照片保留期(最多 1 个月)+ 定期清理任务登记
-- 清理范围:apt_tablet_face_photo 中 COALESCE(uploaded_at, captured_at, create_time)
-- 早于 now - retentionDays 的记录:先删文件,再物理删记录。
-- 保留天数由 apt.photo.retention-days 控制(默认 30,上限按业务 1 个月)。
-- 任务:aptPhotoPurgeTask.purge(),建议每天 03:30(避开叫乘高峰)。
-- 幂等:sys_job 按 invoke_target 判重,可重复执行。
-- =============================================================================
SET NAMES utf8mb4;
INSERT INTO sys_job
(job_name, job_group, invoke_target, cron_expression,
misfire_policy, concurrent, status, create_by, create_time, remark)
SELECT '刷脸照片过期清理(保留 30 天)',
'SYSTEM',
'aptPhotoPurgeTask.purge()',
'0 30 3 * * ?',
'1',
1,
'1',
'IT-5',
NOW(3),
'每天 03:30 清理超过 apt.photo.retention-days(默认 30 天)的照片文件与记录'
FROM DUAL
WHERE NOT EXISTS (
SELECT 1 FROM sys_job WHERE invoke_target = 'aptPhotoPurgeTask.purge()'
);
-- -----------------------------------------------------------------------------
-- 校验
-- -----------------------------------------------------------------------------
SELECT '=== 44. 清理任务登记(应 1 行,status=1)===' AS section;
SELECT job_id, job_name, invoke_target, cron_expression, status
FROM sys_job
WHERE invoke_target = 'aptPhotoPurgeTask.purge()';
SELECT '=== 45. 当前照片记录与最老时间 ===' AS section;
SELECT COUNT(*) AS photos,
MIN(COALESCE(uploaded_at, captured_at, create_time)) AS oldest_at,
SUM(COALESCE(uploaded_at, captured_at, create_time) < DATE_SUB(NOW(3), INTERVAL 30 DAY)) AS expired
FROM apt_tablet_face_photo;