package com.yonge.cooleshow.biz.dal.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yonge.cooleshow.auth.api.entity.SysUser;
import com.yonge.cooleshow.biz.dal.dto.search.VideoGroupSearch;
import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yonge.cooleshow.biz.dal.vo.*;

import java.util.List;

/**
 * VideoLessonGroupService服务类
 *
 * @author yzp
 * @version v1.0
 * @date 2022-03-25 23:46:28
 **/
public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
    IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch query);

    List<VideoLessonGroupVo> selectPage(VideoLessonGroupSearch query);

    VideoLessonGroup selectGroup(Long groupId);

    void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);

    void updateGroup(VideoLessonExamineVo examineVo);
    /**
     * 更新上架状态
     * @param shelvesVo
     */
    void updateShelves(VideoLessonShelvesVo shelvesVo);

    void deleteGroup(Long id);

    void add(VideoLessonVo lessonVo, SysUser sysUser);

    IPage<VideoLessonStudentDetailVo> selectStudentPage(IPage<VideoLessonStudentDetailVo> page, VideoLessonSearch search);

    IPage<VideoLessonTeacherVo> selectTeacherPage(IPage<VideoLessonTeacherVo> page, VideoLessonSearch search);

    IPage<VideoLessonPurchaseVo> selectPurchaseStudent(IPage<VideoLessonPurchaseVo> page, VideoLessonSearch search);

    VideoLessonStudentVo selectVideoLesson(Long groupId);

    void update(VideoLessonVo lessonVo, SysUser sysUser);

    IPage<LessonGroupVo> selectLessonGroup(IPage<LessonGroupVo> page, VideoLessonGroupSearch query);

    IPage<VideoLessonAuthGroup> queryGroupList(IPage<VideoLessonAuthGroup> page, VideoGroupSearch query);

    IPage<VideoLessonAuthGroup> queryGroupHistoryList(IPage<VideoLessonAuthGroup> page, VideoGroupSearch search);

    VideoLessonAuthGroup authGroupDetil(Long videoGroupId);

    IPage<LessonGroupVo> selectLessonGroupById(IPage<LessonGroupVo> page, VideoLessonGroupSearch query);

    CountVideoGroupVo countVideoGroup();

    /**
     * 视频课分享分润
     *
     * @param sysUser 推荐人信息
     * @param videoGroupId 课程组id
     * @return
     */
    ShareProfitVo shareVideoCourseProfit(SysUser sysUser, Long videoGroupId);


}