package com.seer.teach.admin.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.seer.teach.admin.request.TeachTextsQueryReq;
import com.seer.teach.admin.request.TeachTextsReq;
import com.seer.teach.admin.request.TeachTextVideoUpdateReq;
import com.seer.teach.admin.response.TeachTextsResp;
import org.springframework.web.multipart.MultipartFile;

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

/**
 * <p>
 * 教学文本管理服务接口
 * </p>
 *
 * @author Lingma
 * @since 2025-12-04
 */
public interface AdminTeachTextsService {

    /**
     * 分页查询教学文本列表
     *
     * @param req 查询条件
     * @return 教学文本分页数据
     */
    IPage<TeachTextsResp> pageTeachTexts(TeachTextsQueryReq req);

    /**
     * 根据ID获取教学文本详情
     *
     * @param id 教学文本ID
     * @return 教学文本实体
     */
    TeachTextsResp getTeachTextById(Integer id);

    /**
     * 添加教学文本
     *
     * @param req 教学文本信息
     * @return 是否添加成功
     */
    boolean addTeachText(TeachTextsReq req);

    /**
     * 更新教学文本信息
     *
     * @param id  教学文本ID
     * @param req 教学文本信息
     * @return 是否更新成功
     */
    boolean updateTeachText(Integer id, TeachTextsReq req);

    /**
     * 删除教学文本
     *
     * @param id 教学文本ID
     * @return 是否删除成功
     */
    boolean deleteTeachText(Integer id);

    /**
     * 更新教学文本排序
     *
     * @param id  教学文本ID
     * @param sort 教学文本信息
     * @return 是否更新成功
     */
    boolean updateTeachTextSort(Integer id, Integer sort);
    
    /**
     * 更新教学文本的视频脚本和URL
     *
     * @param id  教学文本ID
     * @param req 视频脚本和URL信息
     * @return 是否更新成功
     */
    boolean updateTeachTextVideo(Integer id, TeachTextVideoUpdateReq req);

    /**
     * 上传教学视频 并更新url
     *
     * @param textId  教学文本ID
     * @param videoFile 教学视频文件
     * @return 是否上传成功
     */
    String uploadTeachVideoAndUpdateUrl(Integer textId, MultipartFile videoFile);
    
    /**
     * 下载教学视频
     *
     * @param textId 教学文本ID
     * @param response HTTP响应对象
     */
    void downloadTeachVideo(Integer textId, HttpServletResponse response);
}