package com.seer.teach.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.seer.teach.admin.request.CheckAndScoreReq;
import com.seer.teach.admin.request.MaterialDocQueryReq;
import com.seer.teach.admin.request.MaterialDocReq;
import com.seer.teach.admin.request.MaterialDocSaveReq;
import com.seer.teach.admin.response.MaterialDocResp;

import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * <p>
 * 教材文档管理服务接口
 * </p>
 *
 * @author ZS
 * @since 2025-10-23
 */
public interface AdminMaterialDocService {

    /**
     * 分页查询教材文档列表
     *
     * @param req 查询条件
     * @return 教材文档分页数据
     */
    IPage<MaterialDocResp> pageMaterialDocs(MaterialDocQueryReq req);

    /**
     * 根据ID获取教材文档详情
     *
     * @param id 教材文档ID
     * @return 教材文档实体
     */
    MaterialDocResp getMaterialDocById(Long id);

    /**
     * 添加教材文档
     *
     * @param req 教材文档信息
     * @return 是否添加成功
     */
    boolean addMaterialDoc(MaterialDocSaveReq req);

    /**
     * 更新教材文档信息
     *
     * @param id  教材文档ID
     * @param req 教材文档信息
     * @return 是否更新成功
     */
    boolean updateMaterialDoc(Long id, MaterialDocReq req);

    /**
     * 删除教材文档
     *
     * @param id 教材文档ID
     * @return 是否删除成功
     */
    boolean deleteMaterialDoc(Integer id);

    /**
     * 下载教材文档
     *
     * @param id 教材文档ID
     * @param response HTTP响应对象
     * @throws IOException IO异常
     */
    void downloadMaterialDoc(Long id, HttpServletResponse response) throws IOException;
    
    /**
     * 解析教材文档
     *
     * @param id 教材文档ID
     * @return 是否解析成功
     */
    boolean parseMaterialDoc(Long id);

    /**
     * 更新教材文档的审核和评分信息
     *
     * @param id 教材文档ID
     * @param req 教材文档的审核和评分信息
     * @return 是否更新成功
     */
    boolean updateMaterialDocCheckAndScore(Integer id, CheckAndScoreReq req);
}