package jnpf.cultivate.service;


import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import jnpf.model.cultivate.dto.course.FtbCultivateCourseChapterDTO;
import jnpf.model.cultivate.dto.course.FtbCultivateCourseChapterUpdateDTO;
import jnpf.model.cultivate.dto.course.app.FtbGlobalCurriculumAppWrapDTO;
import jnpf.model.cultivate.po.course.FtbCultivateCourse;
import jnpf.model.cultivate.po.course.FtbCultivateCourseChapter;
import jnpf.model.cultivate.v2.course.vo.app.V2ChapterAppDetails;
import jnpf.model.cultivate.vo.course.app.FtbGlobalCurriculumAppVO;
import jnpf.model.cultivate.vo.course.app.FtbGlobalCurriculumAppWrapVO;
import jnpf.model.cultivate.vo.course.web.FtbCultivateCourseChapterDetailsVO;
import jnpf.model.cultivate.vo.course.web.FtbCultivateCourseChapterVO;

public interface FtbCultivateCourseChapterService extends IService<FtbCultivateCourseChapter> {


    /**
     * 添加课程章节
     *
     * @param ftbCultivateCourseDTO 课程章节参数
     */
    void add(FtbCultivateCourseChapterDTO ftbCultivateCourseDTO);

    /**
     * 删除课程章节记录
     *
     * @param id 课程章节id
     */
    void delete(String id);

    /**
     * 查询课程章节列表
     *
     * @param page     分页对象，包含了分页信息和查询结果
     * @param courseId 课程ID，用于标识需要查询的课程章节
     * @return 返回包含课程章节信息的分页对象
     */
    Page<FtbCultivateCourseChapterVO> queryList(Page<FtbCultivateCourseChapterVO> page, String courseId);

    /**
     * 更新章节信息
     *
     * @param ftbCultivateCourseDTO 章节信息参数
     */
    void updateChapter(FtbCultivateCourseChapterUpdateDTO ftbCultivateCourseDTO);

    /**
     * 获取通用课程列表的分页数据
     *
     * @param page                          页面对象，包含分页信息和已有的课程数据
     * @param ftbGlobalCurriculumAppWrapDTO 封装的查询条件对象，用于筛选课程
     * @return 返回一个 FtbGlobalCurriculumAppWrapVO 对象，包含根据条件筛选后的课程列表和分页信息
     */
    FtbGlobalCurriculumAppWrapVO generalCourseList(Page<FtbGlobalCurriculumAppVO> page, FtbGlobalCurriculumAppWrapDTO ftbGlobalCurriculumAppWrapDTO);

    /**
     * 根据ID获取培养课程章节详情
     *
     * @param id 章节的唯一标识符
     * @return 返回包含章节详细信息的FtbCultivateCourseChapterDetailsVO对象
     */
    FtbCultivateCourseChapterDetailsVO courseDetails(String id);

    /**
     * 同步岗位
     *
     * @param ftbCultivateCourse
     */
    void asyncPosition(FtbCultivateCourse ftbCultivateCourse);

    /**
     * 获取V2版本课程章节详情
     *
     * @param id 课程章节ID
     * @return 课程章节详情
     */
    V2ChapterAppDetails courseDetailsV2(String id);
}
