feat(media): 新增缺失转码产物自动补齐

This commit is contained in:
Zhou Weidong authored and trae-solo-agent committed 2026-10-23 14:14:39 +08:00
1 parent df2da25833
commit 40728e685b
10 files changed
+510 -2

No files matched your search

@@ -4,6 +4,46 @@ package com.fruitshorts.content.dal.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fruitshorts.content.dal.entity.DramaEpisode;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
public interface DramaEpisodeMapper extends BaseMapper<DramaEpisode> {
/**
* 查询需要补转码的分集:有片源但没有可用码率产物,或缺少缩略图轴,且当前没有排队/执行中的任务。
*
* @param afterId 上一批处理到的分集 ID,用于游标轮转,避免固定前 N 条长期占用名额
* @param limit 单批上限
* @param requireFrames 是否把"缺缩略图"也视为缺失;关闭雪碧图时传 false
*/
@Select("""
<script>
SELECT e.id, e.drama_id, e.video_asset_id, e.video_url
FROM drama_episode e
WHERE e.deleted = 0
AND e.id &gt; #{afterId}
AND (e.video_asset_id &gt; 0
OR (e.video_url IS NOT NULL AND e.video_url &lt;&gt; ''))
AND NOT EXISTS (
SELECT 1 FROM transcode_task t
WHERE t.episode_id = e.id AND t.status IN ('QUEUED', 'RUNNING'))
AND (
NOT EXISTS (
SELECT 1 FROM media_rendition r
WHERE r.episode_id = e.id AND r.deleted = 0 AND r.status = 'ready')
<if test="requireFrames">
OR NOT EXISTS (
SELECT 1 FROM media_thumbnail m
WHERE m.episode_id = e.id AND m.deleted = 0)
</if>
)
ORDER BY e.id ASC
LIMIT #{limit}
</script>
""")
List<DramaEpisode> selectTranscodeBackfillCandidates(@Param("afterId") long afterId,
@Param("limit") int limit,
@Param("requireFrames") boolean requireFrames);
}