package jnpf.cultivate.v2.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import jnpf.model.cultivate.CultivatePage;
import jnpf.model.cultivate.v2.course.vo.app.*;
import jnpf.model.cultivate.v2.position.req.V2MyCultivateCommonCourseForAppReq;

public interface V2CultivateCourseAppService {

    /**
     * 获取课程详情
     *
     * @param courseId 课程id
     * @param userId   用户id
     * @return 课程详情
     */
    V2CourseDetailsAppVO courseDetails(V2CourseAppDto dto);

    /**
     * 获取课程大纲
     *
     * @param courseId 课程id
     * @param userId   用户id
     * @return 课程详情
     */
    V2CourseOutlineAppVo courseOutline(String courseId, String userId);

    /**
     * 获取章节详情
     *
     * @param id 章节id
     * @return 章节详情
     */
    V2ChapterAppDetails chapterDetails(String id, String userId);

    /**
     * 章节学习
     *
     * @param chapterStudyDTO 章节学习参数
     */
    void chapterStudy(V2ChapterStudyVo chapterStudyDTO);

    /**
     * 持续时间记录
     *
     * @param chapterStudyDTO 持续时间记录参数
     */
    void durationRecord(V2ChapterStudyVo chapterStudyDTO);

    /**
     * 增加当前课程浏览量
     *
     * @param courseId 课程id
     */
    void courseBrowsing(String courseId);

    /**
     * 通用课程列表
     *
     * @param dto  参数
     * @param page 分页参数
     * @return 课程列表
     */
    Page<AppCommonCourseSimpleVo> commonCourseList(V2MyCultivateCommonCourseForAppReq dto, CultivatePage page);

    LastStudyCourseVo queryLastStudyCourse();

    CommonCourseCountVo commonCourseCount(V2MyCultivateCommonCourseForAppReq dto);
}
