namespace Dpz.Core.Service.RepositoryService;

public interface IVideoService
{
    /// <summary>
    /// 获取视频列表
    /// </summary>
    /// <returns></returns>
    Task<List<VmVideo>> GetVideosAsync();

    /// <summary>
    /// 保存视频信息
    /// </summary>
    /// <param name="video"></param>
    /// <returns></returns>
    Task SaveInformationAsync(VmVideo video);

    /// <summary>
    /// 获取视频详情
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<VmVideo?> GetVideoAsync(string id);

    /// <summary>
    /// 添加一次播放次数
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task AddPlayAsync(string id);

    /// <summary>
    /// 更新视频评论数
    /// </summary>
    /// <param name="videoId">视频ID</param>
    /// <param name="count">评论数</param>
    /// <param name="cancellationToken"></param>
    Task UpdateCommentCountAsync(
        string videoId,
        int count,
        CancellationToken cancellationToken = default
    );

    /// <summary>
    /// 更新视频弹幕数
    /// </summary>
    /// <param name="videoId">视频ID</param>
    /// <param name="count">弹幕数</param>
    /// <param name="cancellationToken"></param>
    Task UpdateDanmakuCountAsync(
        string videoId,
        int count,
        CancellationToken cancellationToken = default
    );
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

这是一个视频服务的接口定义,属于 Dpz.Core.Service.RepositoryService 命名空间。该接口 IVideoService 定义了视频相关的核心业务操作方法。让我逐一解释每个方法的功能:

接口方法分析

1. 视频查询方法

Task<List<VmVideo>> GetVideosAsync();
Task<VmVideo?> GetVideoAsync(string id);
  • GetVideosAsync(): 异步获取所有视频列表,返回 VmVideo 对象的集合
  • GetVideoAsync(string id): 根据视频ID异步获取单个视频详情,返回可空的 VmVideo 对象

2. 视频信息管理

Task SaveInformationAsync(VmVideo video);
  • 异步保存视频信息,用于新增或更新视频数据

3. 播放统计

Task AddPlayAsync(string id);
  • 为指定视频ID增加一次播放计数,用于统计视频播放量

4. 互动数据更新

Task UpdateCommentCountAsync(string videoId, int count, CancellationToken cancellationToken = default);
Task UpdateDanmakuCountAsync(string videoId, int count, CancellationToken cancellationToken = default);
  • UpdateCommentCountAsync: 更新视频的评论数量
  • UpdateDanmakuCountAsync: 更新视频的弹幕数量
  • 两个方法都支持取消令牌(CancellationToken)用于异步操作的取消控制

设计特点

  1. 异步设计: 所有方法都返回 Task,支持异步操作,提高应用性能
  2. 领域驱动: 使用 VmVideo 视图模型对象,体现了良好的分层架构
  3. 可取消操作: 更新方法支持 CancellationToken,便于长时间运行的操作控制
  4. 职责明确: 接口专注于视频相关的核心业务操作,符合单一职责原则

这个接口通常会被具体的服务类实现,用于处理视频平台的核心功能,如视频管理、播放统计、用户互动等业务场景。

评论加载中...