package com.fs.course.service;

import java.util.List;

import com.fs.common.core.domain.R;
import com.fs.course.domain.FsUserVideo;
import com.fs.course.param.*;
import com.fs.course.vo.FsUserVideoListPVO;
import com.fs.course.vo.FsUserVideoPVO;
import com.fs.course.param.FsUserVideoParam;
import com.fs.course.vo.FsUserVideoListUVO;

/**
 * 课堂视频Service接口
 *
 * @author fs
 * @date 2024-05-15
 */
public interface IFsUserVideoService
{
    /**
     * 查询课堂视频
     *
     * @param videoId 课堂视频主键
     * @return 课堂视频
     */
    public FsUserVideo selectFsUserVideoByVideoId(String videoId);

    /**
     * 查询课堂视频列表
     *
     * @param fsUserVideo 课堂视频
     * @return 课堂视频集合
     */
    public List<FsUserVideo> selectFsUserVideoList(FsUserVideo fsUserVideo);

    /**
     * 新增课堂视频
     *
     * @param fsUserVideo 课堂视频
     * @return 结果
     */
    public int insertFsUserVideo(FsUserVideo fsUserVideo);

    /**
     * 修改课堂视频
     *
     * @param fsUserVideo 课堂视频
     * @return 结果
     */
    public int updateFsUserVideo(FsUserVideo fsUserVideo);

    /**
     * 批量删除课堂视频
     *
     * @param videoIds 需要删除的课堂视频主键集合
     * @return 结果
     */
    public int deleteFsUserVideoByVideoIds(String[] videoIds);

    /**
     * 删除课堂视频信息
     *
     * @param videoId 课堂视频主键
     * @return 结果
     */
    public int deleteFsUserVideoByVideoId(String videoId);

    List<FsUserVideo> selectFsUserVideoListByCourseId(FsUserVideo fsUserVideo);

    R addUserVideo(FsUserVideoAddParam param);

    List<FsUserVideoListPVO> selectFsUserVideoListPVO(FsUserVideoParam param);

    int updateLikes(Long videoId, Integer type);

    int updateFavorite(Long videoId, Integer type);

    List<FsUserVideoListUVO> selectFsUserVideoListUVO(FsUserVideoListUParam param);

    List<FsUserVideoListUVO> selectFsUserFavoriteVideoListUVO(FsUserVideoFavoriteListUParam param);

    FsUserVideoPVO selectFsUserVideoPVOByVideoId(Long videoId);

    int updateShares(Long videoId);

    FsUserVideoListUVO getVideoById(Long videoId);

    int auditUserVideos(FsUserVideoAuditParam param);

    int updateFsUserVideoIsShow(Long[] videoIds, int i);

    void updateVideoUrl();
}
