using Dpz.Core.Public.ViewModel.Request;
using Dpz.Core.Public.ViewModel.Response;

namespace Dpz.Core.Service.RepositoryService;

public interface IMusicService : ICacheService
{
    /// <summary>
    /// 保存音乐
    /// </summary>
    /// <param name="uploadActionRequest"></param>
    /// <returns></returns>
    Task<MusicResponse?> SaveAsync(MusicUploadActionRequest uploadActionRequest);

    /// <summary>
    /// 获取所有分组
    /// </summary>
    /// <returns></returns>
    Task<List<string>> GetGroupsAsync();

    /// <summary>
    /// 修改音乐信息
    /// </summary>
    /// <param name="informationRequest"></param>
    /// <returns></returns>
    Task<MusicResponse> EditMusicInformationAsync(EditMusicInformationRequest informationRequest);

    /// <summary>
    /// 分页获取音乐信息
    /// </summary>
    /// <param name="pageIndex"></param>
    /// <param name="pageSize"></param>
    /// <param name="title"></param>
    /// <returns></returns>
    Task<IPagedList<MusicResponse>> GetPagesAsync(int pageIndex, int pageSize, string? title = null);

    /// <summary>
    /// 获取单个音乐信息
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<MusicResponse?> GetAsync(string id);

    /// <summary>
    /// 删除音乐
    /// </summary>
    /// <param name="id"></param>
    /// <param name="deleteObjectStorage">从云储存删除</param>
    /// <returns>file name</returns>
    Task DeleteAsync(string id, Func<MusicResponse, Task> deleteObjectStorage);

    /// <summary>
    /// 获取最新上传的音乐
    /// </summary>
    /// <param name="top"></param>
    /// <returns></returns>
    Task<ICollection<MusicResponse>> GetTopMusicsAsync(uint top = 200);

    /// <summary>
    /// 获取随机分组的音乐
    /// </summary>
    /// <param name="top"></param>
    /// <returns></returns>
    Task<ICollection<MusicResponse>> GetRandomGroupMusicAsync(int top = 200);
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

音乐服务接口 (IMusicService) 功能解析

这是一个C#接口定义,用于音乐管理系统的服务层。它继承自ICacheService,表明这个服务可能包含缓存功能。以下是各方法的功能说明:

核心功能

  1. 音乐上传与保存

    • SaveAsync(MusicUploadActionRequest uploadActionRequest): 上传并保存音乐文件,返回包含音乐信息的响应对象
  2. 音乐信息管理

    • EditMusicInformationAsync(EditMusicInformationRequest informationRequest): 修改已存在音乐的信息
    • GetAsync(string id): 根据ID获取单个音乐的详细信息
    • DeleteAsync(string id, Func<MusicResponse, Task> deleteObjectStorage): 删除音乐,包含一个回调函数用于从云存储中删除实际文件
  3. 音乐查询

    • GetPagesAsync(int pageIndex, int pageSize, string? title): 分页获取音乐列表,可按照标题筛选
    • GetTopMusicsAsync(uint top): 获取最新上传的音乐(默认200条)
    • GetRandomGroupMusicAsync(int top): 获取随机分组的音乐(默认200条)
  4. 分组管理

    • GetGroupsAsync(): 获取所有音乐分组的列表

特点

  • 所有方法都是异步的(返回Task)
  • 使用了强类型请求和响应对象(如MusicUploadActionRequest, MusicResponse)
  • 支持分页查询(IPagedList<MusicResponse>)
  • 删除操作支持从云存储中同步删除文件(通过回调函数)
  • 提供了多种查询方式(最新、随机、分页等)

这个接口定义了一个完整的音乐管理服务,适合用于音乐库、音乐播放器等应用的后端服务。

评论加载中...