package jnpf.cultivate.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import jnpf.model.cultivate.po.learn.FtbCultivateLearnTask;
import jnpf.model.cultivate.po.learn.FtbCultivateLearnTaskExam;
import jnpf.model.cultivate.resp.TaskRelationExamVo;
import jnpf.model.cultivate.v2.task.vo.FtbCultivateLearnTaskExamVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @Author: peng.hao
 * @create: 2024/9/9:11:05
 */
public interface FtbCultivateLearnTaskExamMapper extends BaseMapper<FtbCultivateLearnTaskExam> {
    /**
     * 批量查询任务管理的考试信息
     *
     * @param taskIds 任务id集合
     * @return 任务关联的考试
     */
    List<TaskRelationExamVo> queryExamBaseInfo(@Param("taskIds") List<String> taskIds);

    /**
     * 根据考试ID查询任务列表（进行中）
     *
     * @param examId 考试ID
     */
    List<FtbCultivateLearnTask> queryTaskListForExam(@Param("examId") String examId);


    /**
     * 根据考试ID查询任务列表(未发布,未开始)
     *
     * @param examId 考试ID
     */
    List<FtbCultivateLearnTask> queryTaskListForExamNoPublish(@Param("examId") String examId);

    /**
     * 根据考试ID查询任务列表(未发布,未开始,进行中)
     *
     * @param examId 考试ID
     */
    List<FtbCultivateLearnTask> queryTaskListForExamAll(@Param("examId") String examId);

    int insertBatch(@Param("list") List<FtbCultivateLearnTaskExam> list);

    /**
     * 根据任务 ID 查询考试列表 (关联考试表，要求考试未删除且有效)
     *
     * @param taskId 任务 ID
     * @return 任务关联的考试列表
     */
    List<FtbCultivateLearnTaskExamVo> listByTaskIdWithExam(@Param("taskId") String taskId);

    List<FtbCultivateLearnTaskExamVo> listByTaskIdAndPhaseId(@Param("taskId") String taskId, @Param("phaseId") String phaseId);

    /**
     * 检查考试是否被学习任务绑定（关联任务主表）
     *
     * @param examId 考试ID
     * @return 绑定数量（0或1）
     */
    Integer checkExamBinding(@Param("examId") String examId);
}