package ink.wgink.module.examine.service.paper.question;

import ink.wgink.module.examine.pojo.dtos.paper.question.PaperQuestionDTO;
import ink.wgink.module.examine.pojo.dtos.question.QuestionDTO;
import ink.wgink.module.examine.pojo.vos.paper.question.PaperQuestionRandomSaveVO;
import ink.wgink.pojo.ListPage;
import ink.wgink.pojo.result.SuccessResultList;

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

/**
 * @Description: 试卷试题
 * @Author: WenG
 * @Date: 2022/5/23 23:44
 * @Version: 1.0
 **/
public interface IPaperQuestionService {

    /**
     * 保存
     *
     * @param paperId
     * @param questionIds
     */
    void save(String paperId, List<String> questionIds);

    /**
     * 随机保存
     *
     * @param paperId
     * @param paperQuestionRandomSaveVO
     */
    void saveRandom(String paperId, PaperQuestionRandomSaveVO paperQuestionRandomSaveVO);

    /**
     * 删除
     *
     * @param paperQuestionIds
     */
    void delete(List<String> paperQuestionIds);

    /**
     * 试卷试题列表
     *
     * @param paperId
     * @param params
     * @return
     */
    List<PaperQuestionDTO> list(String paperId, Map<String, Object> params);

    /**
     * 试卷试题分页列表
     *
     * @param page
     * @return
     */
    SuccessResultList<List<PaperQuestionDTO>> listPage(ListPage page);

    /**
     * 试卷试题分页列表
     *
     * @param paperId
     * @param page
     * @return
     */
    SuccessResultList<List<PaperQuestionDTO>> listPage(String paperId, ListPage page);

    /**
     * 不包含试卷的试题分页列表
     *
     * @param excludePaperId
     * @param page
     * @return
     */
    SuccessResultList<List<QuestionDTO>> listPageQuestionByExcludePaperId(String excludePaperId, ListPage page);

}
