package com.fs.course.service;

import java.util.List;

import com.fs.common.core.domain.R;
import com.fs.course.domain.FsUserCourseFavorite;
import com.fs.course.param.FsUserCourseListUParam;
import com.fs.course.vo.FsUserCourseFavoriteListUVO;
import com.fs.course.vo.FsUserCourseListUVO;
import com.fs.course.vo.FsUserCourseStudyListUVO;

/**
 * 课程收藏Service接口
 *
 * @author fs
 * @date 2024-05-15
 */
public interface IFsUserCourseFavoriteService
{
    /**
     * 查询课程收藏
     *
     * @param favoriteId 课程收藏主键
     * @return 课程收藏
     */
    public FsUserCourseFavorite selectFsUserCourseFavoriteByFavoriteId(Long favoriteId);

    /**
     * 查询课程收藏列表
     *
     * @param fsUserCourseFavorite 课程收藏
     * @return 课程收藏集合
     */
    public List<FsUserCourseFavorite> selectFsUserCourseFavoriteList(FsUserCourseFavorite fsUserCourseFavorite);

    /**
     * 新增课程收藏
     *
     * @param fsUserCourseFavorite 课程收藏
     * @return 结果
     */
    public int insertFsUserCourseFavorite(FsUserCourseFavorite fsUserCourseFavorite);

    /**
     * 修改课程收藏
     *
     * @param fsUserCourseFavorite 课程收藏
     * @return 结果
     */
    public int updateFsUserCourseFavorite(FsUserCourseFavorite fsUserCourseFavorite);

    /**
     * 批量删除课程收藏
     *
     * @param favoriteIds 需要删除的课程收藏主键集合
     * @return 结果
     */
    public int deleteFsUserCourseFavoriteByFavoriteIds(Long[] favoriteIds);

    /**
     * 删除课程收藏信息
     *
     * @param favoriteId 课程收藏主键
     * @return 结果
     */
    public int deleteFsUserCourseFavoriteByFavoriteId(Long favoriteId);

    R checkFavorite(Long courseId, long userId);

    int deleteFavorite(Long courseId, long userId);

    List<FsUserCourseFavoriteListUVO> selectFsUserCourseFavoriteListUVO(FsUserCourseListUParam param);

}
