package com.dora.service;

import com.dora.dto.CourseCategoryDto;
import com.dora.dto.CourseDetailDto;
import com.dora.dto.CourseListItemDto;
import com.dora.dto.CourseUpdateDto;
import com.dora.dto.CourseVideoDetailDto;
import com.dora.dto.CourseVideoPlayDto;
import com.dora.dto.PageResultDto;
import com.dora.entity.Course;

import java.util.List;

/**
 * 课程服务接口
 */
public interface CourseService {
    
    /**
     * 获取热门课程分类
     */
    List<CourseCategoryDto> getCategories();
    
    /**
     * 获取热门课程列表
     */
    PageResultDto<CourseListItemDto> getHotCourses(int page, int size);
    
    /**
     * 根据分类获取课程列表
     */
    PageResultDto<CourseListItemDto> getCoursesByCategory(String category, int page, int size);
    
    /**
     * 获取课程详情
     */
    Course getCourseById(Long id);

    /**
     * 获取课程详情（包含章节和视频）
     */
    CourseDetailDto getCourseDetail(Long id, Long userId);

    /**
     * 更新课程（包含章节和视频的完整更新）
     */
    CourseDetailDto updateCourse(Long courseId, Long userId, CourseUpdateDto updateDto);

    /**
     * 获取课程视频详情（包含权限信息，所有用户可访问）
     */
    CourseVideoDetailDto getCourseVideoDetail(Long courseId, Long userId);

    /**
     * 获取课程视频播放凭证（需权限验证）
     */
    CourseVideoPlayDto.PlayAuthResponse getCourseVideoPlayAuth(CourseVideoPlayDto.GetPlayAuthRequest request, Long userId);
} 