package jnpf.cultivate.service;


import com.baomidou.mybatisplus.extension.service.IService;
import com.github.pagehelper.PageInfo;
import jnpf.model.cultivate.po.question.FtbCultivateQuestion;
import jnpf.model.cultivate.req.questionbank.AddQuestionReq;
import jnpf.model.cultivate.req.questionbank.EditQuestionReq;
import jnpf.model.cultivate.req.questionbank.QueryQuestionReq;
import jnpf.model.cultivate.resp.*;

import java.util.List;
/**
 * 题目业务接口
 *
 * @author xgl
 * @create 2024-09-29
 */
public interface FtbCultivateQuestionService extends IService<FtbCultivateQuestion> {

    /**
     * 分页列出题库中题目列表【根据题库ID】
     *
     * @param req
     * @return
     */
    PageInfo<QuestionVo> getPageList(QueryQuestionReq req);

    /**
     * 查询题目信息
     *
     * @param questionId 题目ID
     * @return
     */
    QuestionVo getInfo(String questionId);

    /**
     * 查询题目信息，包含选项
     * @param questionId 题目ID
     * @return
     */
    QuestionVo getQuestionAndOption(String questionId);

    /**
     * 新增题目
     *
     * @param questionBankId 题库ID
     * @param req            题目信息
     */
    void insertData(String questionBankId, AddQuestionReq req);

    /**
     * 修改题目
     *
     * @param req
     */
    void updateData(EditQuestionReq req);

    /**
     * 删除题目
     * @param id 题目ID
     */
    void deleteData(String id);

    /**
     * 检测题库是否可以被删除
     *
     * @param questionBankId 题库ID
     * @return
     */
    CanDeleteMsg checkQuestionBankCanDelete(String questionBankId);

    /**
     * 检测题目是否可以删除
     *
     * @param id 题目ID
     * @return
     */
    QuestionCanDeleteMsg checkQuestionCanDelete(String id);

    /**
     * 导入题目
     *
     * @param questionBankId  题库ID
     * @param allQuestionList 题目列表
     */
    ImportQuestionResultVo importData(String questionBankId, List<AddQuestionReq> allQuestionList);

    /**
     * 查询重复题目
     * @param req
     * @return
     */
    PageInfo<QuestionVo> queryRepeatQuestion(QueryQuestionReq req);

    /**
     * 批量检测题目是否可以删除
     * @param ids 题目id集合
     * @return
     */
    QuestionCanDeleteMsg batchCheckCanDel(List<String> ids);

    /**
     * 批量删除题目
     * @param ids 题目id集合
     */
    void batchDel(List<String> ids);

    /**
     * 根据题库id查询所有题目列表
     * @param questionBankId 题库ID
     * @return
     */
    List<UserQuestionVo> queryAllQuestionByQuestionBankId(String questionBankId);

    /**
     * 给题库中导入题目
     * @param questionBankId 题目ID
     * @param normal 题目数据
     * @return
     */
    ImportQuestionResultVo realImportData(String questionBankId, List<ExcelImportQuestionResultReq> normal);

    /**
     * 根据题库id统计各题库的题目数量
     * @param ids 题库id集合
     * @return
     */
    List<QuestionCountDto> countForClassifyId(List<String> ids);
}
