package com.fs.course.service;

import java.util.List;
import com.baomidou.mybatisplus.extension.service.IService;
import com.fs.common.core.domain.R;
import com.fs.course.domain.FsCourseWatchComment;
import com.fs.course.param.FsCourseWatchCommentListParam;
import com.fs.course.param.FsCourseWatchCommentPageParam;
import com.fs.course.param.FsCourseWatchCommentSaveParam;
import com.fs.course.vo.FsCourseWatchCommentListVO;
import com.fs.course.vo.FsCourseWatchCommentVO;

/**
 * 看课评论Service接口
 *
 * @author fs
 * @date 2025-05-26
 */
public interface IFsCourseWatchCommentService extends IService<FsCourseWatchComment>{
    /**
     * 查询看课评论
     *
     * @param commentId 看课评论主键
     * @return 看课评论
     */
    FsCourseWatchComment selectFsCourseWatchCommentByCommentId(Long commentId);

    /**
     * 查询看课评论列表
     *
     * @param fsCourseWatchCommentPageParam 看课评论
     * @return 看课评论集合
     */
    List<FsCourseWatchCommentListVO> selectFsCourseWatchCommentList(FsCourseWatchCommentPageParam fsCourseWatchCommentPageParam);

    /**
     * 新增看课评论
     *
     * @param fsCourseWatchComment 看课评论
     * @return 结果
     */
    int insertFsCourseWatchComment(FsCourseWatchComment fsCourseWatchComment);

    /**
     * 修改看课评论
     *
     * @param fsCourseWatchComment 看课评论
     * @return 结果
     */
    int updateFsCourseWatchComment(FsCourseWatchComment fsCourseWatchComment);

    /**
     * 批量删除看课评论
     *
     * @param commentIds 需要删除的看课评论主键集合
     * @return 结果
     */
    int deleteFsCourseWatchCommentByCommentIds(Long[] commentIds);

    /**
     * 删除看课评论信息
     *
     * @param commentId 看课评论主键
     * @return 结果
     */
    int deleteFsCourseWatchCommentByCommentId(Long commentId);

    /**
     * 保存评论/弹幕数据
     * @param param 入参
     * @return
     */
    R saveH5CourseWatchComment(FsCourseWatchCommentSaveParam param);

    /**
     * 撤销评论
     * @param commentId 评论id
     * @return R
     */
    R revokeH5CourseWatchComment(Long commentId);

    /**
     * 查询评论列表
     * @param param 入参
     * @return list
     */
    List<FsCourseWatchCommentVO> selectH5CourseWatchComments(FsCourseWatchCommentListParam param);

}
