package shop.alien.mapper.system;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.springframework.stereotype.Repository;
import shop.alien.entity.SecondVideoTask;

import java.util.List;

/**
 * 视频审核任务Mapper接口
 */
@Mapper
@Repository
public interface SecondVideoTaskMapper extends BaseMapper<SecondVideoTask> {

    /**
     * 查询待处理的审核任务
     * @return 审核任务列表
     */
    @Select("SELECT * FROM second_video_task WHERE status IN ('SUBMITTED', 'PROCESSING') ORDER BY create_time ASC LIMIT 100")
    List<SecondVideoTask> selectPendingTasks();

    /**
     * 根据任务ID查询任务详情
     * @param taskId 任务ID
     * @return 任务详情
     */
    @Select("SELECT * FROM second_video_task WHERE task_id = #{taskId}")
    SecondVideoTask selectByTaskId(@Param("taskId") String taskId);

    /**
     * 更新任务状态
     * @param taskId 任务ID
     * @param status 状态
     * @return 更新记录数
     */
    @Update("UPDATE second_video_task SET status = #{status}, update_time = NOW() WHERE task_id = #{taskId}")
    int updateTaskStatus(@Param("taskId") String taskId, @Param("status") String status);

    /**
     * 更新任务结果
     * @param taskId 任务ID
     * @param status 状态
     * @param riskLevel 风险级别
     * @param result 审核结果
     * @return 更新记录数
     */
    @Update("UPDATE second_video_task SET status = #{status}, risk_level = #{riskLevel}, result = #{result}, update_time = NOW() WHERE task_id = #{taskId}")
    int updateTaskResult(@Param("taskId") String taskId, @Param("status") String status,
                         @Param("riskLevel") String riskLevel, @Param("result") String result);

    /**
     * 增加重试次数
     * @param id 任务ID
     * @return 更新记录数
     */
    @Update("UPDATE second_video_task SET retry_count = retry_count + 1, update_time = NOW() WHERE id = #{id}")
    int incrementRetryCount(@Param("id") Long id);
}