feat(render): 添加视频渲染作业轮询服务

- 在RenderJobV2Client中新增createFinalizeMP4Task接口用于创建MP4合成任务
- 在RenderJobIntegrationService中实现createFinalizeMP4Task方法
- 创建TaskRenderJobMappingEntity实体类用于跟踪任务与渲染作业关联
- 创建TaskRenderJobMappingMapper接口及对应XML映射文件
- 在TaskTaskServiceImpl中添加mapping表写入逻辑
- 新增RenderJobPollingService定时轮询服务处理渲染状态流转
- 实现从PENDING到PREVIEW_READY再到MP4_COMPOSING最后到COMPLETED的状态转换
- 添加MP4合成任务创建及状态更新功能
This commit is contained in:
2026-01-24 21:20:09 +08:00
parent d25d09cb66
commit ad3741fd15
8 changed files with 637 additions and 0 deletions

View File

@@ -0,0 +1,64 @@
package com.ycwl.basic.mapper.task;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ycwl.basic.model.task.entity.TaskRenderJobMappingEntity;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.Date;
import java.util.List;
/**
* Task与RenderJob关联Mapper
*/
@Mapper
public interface TaskRenderJobMappingMapper extends BaseMapper<TaskRenderJobMappingEntity> {
/**
* 根据taskId查询mapping
*/
TaskRenderJobMappingEntity selectByTaskId(@Param("taskId") Long taskId);
/**
* 根据renderJobId查询mapping
*/
TaskRenderJobMappingEntity selectByRenderJobId(@Param("renderJobId") Long renderJobId);
/**
* 查询需要轮询的记录
* 条件:状态为PENDING或PREVIEW_READY,且最后检查时间超过指定间隔
*/
List<TaskRenderJobMappingEntity> selectPendingForPolling(
@Param("statuses") List<String> statuses,
@Param("checkIntervalSeconds") int checkIntervalSeconds,
@Param("limit") int limit
);
/**
* 更新渲染状态和片段信息
*/
int updateRenderStatus(
@Param("id") Long id,
@Param("renderStatus") String renderStatus,
@Param("publishedCount") Integer publishedCount,
@Param("segmentCount") Integer segmentCount,
@Param("previewUrl") String previewUrl,
@Param("mp4Url") String mp4Url,
@Param("lastCheckTime") Date lastCheckTime
);
/**
* 更新为失败状态
*/
int updateToFailed(
@Param("id") Long id,
@Param("errorCode") String errorCode,
@Param("errorMessage") String errorMessage,
@Param("lastCheckTime") Date lastCheckTime
);
/**
* 增加重试次数
*/
int incrementRetryCount(@Param("id") Long id);
}