package com.ruoyi.hezhi.mapper;

import com.ruoyi.hezhi.domain.TbExamSubject;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 考试题目Mapper接口
 *
 * @author ruoyi
 * @date 2024-11-04
 */
public interface TbExamSubjectMapper
{
    /**
     * 查询考试题目
     *
     * @param examSubjectId 考试题目主键
     * @return 考试题目
     */
    public TbExamSubject selectTbExamSubjectByExamSubjectId(Long examSubjectId);

    /**
     * 查询考试题目列表
     *
     * @param tbExamSubject 考试题目
     * @return 考试题目集合
     */
    public List<TbExamSubject> selectTbExamSubjectList(TbExamSubject tbExamSubject);

    /**
     * 新增考试题目
     *
     * @param tbExamSubject 考试题目
     * @return 结果
     */
    public int insertTbExamSubject(TbExamSubject tbExamSubject);

    /**
     * 修改考试题目
     *
     * @param tbExamSubject 考试题目
     * @return 结果
     */
    public int updateTbExamSubject(TbExamSubject tbExamSubject);

    /**
     * 删除考试题目
     *
     * @param examSubjectId 考试题目主键
     * @return 结果
     */
    public int deleteTbExamSubjectByExamSubjectId(Long examSubjectId);

    /**
     * 批量删除考试题目
     *
     * @param examSubjectIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteTbExamSubjectByExamSubjectIds(Long[] examSubjectIds);

    /**
     * 查询所有题目
     *
     * @param params 参数
     * @return 结果
     */
    List<Map<String,Object>> queryByParam(Map<String,Object> params);

    /**
     * 题库详情
     *
     * @param params 参数
     * @return 结果
     */
    public Map<String,Object> getExamSubjectInfo(Map<String,Object> params);

    /**
     * 专项练习（考试标题）
     *
     * @return 结果
     */
    public List<Map<String,Object>> getSpecialPracticeList(Map<String,Object> params);

    /**
     * 查询练习题数量
     *
     * @return 结果
     */
    public List<Map<String,Object>> getPracticeListCount(Map<String,Object> params);

    /**
     * 章节练习（考试标题）
     *
     * @return 结果
     */
    public List<Map<String,Object>> getMajorPracticeList();

    /**
     * 筛选条件下单选、多选、判断、论述题目数
     *
     * @param params 参数
     * @return 结果
     */
    public Map<String,Object> getExamSubjectNum(Map<String,Object> params);

    /**
     * 随机生成考试题目列表
     *
     * @param params 考试题目
     * @return 考试题目集合
     */
    public List<TbExamSubject> randomGenerateTbExamSubjectList(Map<String,Object> params);

    /**
     * 查询题目
     * @param examId 考试ID
     * @param subjectWarehouseClassId 模拟考试ID
     * @return 结果
     */
    public List<TbExamSubject> getExamSubjectList(@Param("examId") Long examId,
                                            @Param("subjectWarehouseClassId") Long subjectWarehouseClassId);
}
