package com.seer.teach.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.seer.teach.admin.request.ExampleQuestionsQueryReq;
import com.seer.teach.admin.request.ExampleQuestionsReq;
import com.seer.teach.admin.request.CheckAndScoreReq;
import com.seer.teach.admin.response.ExampleQuestionsResp;
import com.seer.teach.teacher.module.entity.RichTextTemplateEntity;

import java.util.Collection;
import java.util.List;

/**
 * <p>
 * 例题管理服务接口
 * </p>
 *
 * @author ZS
 * @since 2025-10-24
 */
public interface AdminExampleQuestionsService {

    /**
     * 分页查询例题列表
     *
     * @param req 查询条件
     * @return 例题分页数据
     */
    IPage<ExampleQuestionsResp> pageExampleQuestions(ExampleQuestionsQueryReq req);

    /**
     * 根据ID获取例题详情
     *
     * @param id 例题ID
     * @return 例题实体
     */
    ExampleQuestionsResp getExampleQuestionById(Integer id);

    /**
     * 添加例题
     *
     * @param req 例题信息
     * @return 是否添加成功
     */
    boolean addExampleQuestion(ExampleQuestionsReq req);

    /**
     * 批量保存生成的例题
     *
     * @param reqList 例题信息列表
     * @return 是否添加成功
     */
    boolean batchSaveGeneratedExampleQuestions(List<ExampleQuestionsReq> reqList);

    /**
     * 更新例题信息
     *
     * @param id  例题ID
     * @param req 例题信息
     * @return 是否更新成功
     */
    boolean updateExampleQuestion(Integer id, ExampleQuestionsReq req);

    /**
     * 更新例题检查状态和评分
     *
     * @param id  例题ID
     * @param req 检查状态和评分信息
     * @return 是否更新成功
     */
    boolean updateExampleQuestionCheckAndScore(Integer id, CheckAndScoreReq req);

    /**
     * 批量更新例题检查状态
     *
     * @param ids ID列表
     * @param isChecked 检查状态
     * @return 是否更新成功
     */
    boolean batchUpdateExampleQuestionCheck(List<Integer> ids, Integer isChecked);

    /**
     * 删除例题
     *
     * @param id 例题ID
     * @return 是否删除成功
     */
    boolean deleteExampleQuestion(Integer id);


    /**
     * 根据知识点ID列表更新例题的富文本内容
     *
     * @param knowledgePointIds 知识点ID列表
     * @param richTextTemplate 模板
     * @return 是否更新成功
     */
    boolean updateExampleQuestionsHtmlByKnowledgePointIds(Collection<Integer> knowledgePointIds, RichTextTemplateEntity richTextTemplate);

}