-- ============================================================================= -- 刷脸照片保留期(最多 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;