using Dpz.Core.Public.ViewModel.Request;
using Dpz.Core.Public.ViewModel.Response;
namespace Dpz.Core.Service.RepositoryService;
public interface IMusicService
{
/// <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<List<MusicResponse>> GetTopMusicsAsync(uint top = 200);
/// <summary>
/// 获取随机分组的音乐
/// </summary>
/// <param name="top"></param>
/// <returns></returns>
Task<List<MusicResponse>> GetRandomGroupMusicAsync(int top = 200);
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这是一个音乐服务的接口定义,定义了音乐管理系统中的核心业务操作。让我详细解释每个方法的功能:
接口概述
IMusicService 是一个音乐服务的契约接口,定义了音乐资源管理的完整 CRUD 操作以及一些特殊查询功能。
方法详解
1. SaveAsync - 音乐保存
Task<MusicResponse?> SaveAsync(MusicUploadActionRequest uploadActionRequest);
- 功能:保存/上传新的音乐文件
- 参数:
MusicUploadActionRequest包含音乐上传的相关信息 - 返回:保存成功后的音乐信息,失败时返回 null
2. GetGroupsAsync - 获取分组
Task<List<string>> GetGroupsAsync();
- 功能:获取系统中所有的音乐分组名称
- 返回:分组名称列表,用于分类管理
3. EditMusicInformationAsync - 编辑音乐信息
Task<MusicResponse> EditMusicInformationAsync(EditMusicInformationRequest informationRequest);
- 功能:修改已存在音乐的元信息(如标题、艺术家等)
- 参数:包含要修改的音乐信息
- 返回:更新后的音乐信息
4. GetPagesAsync - 分页查询
Task<IPagedList<MusicResponse>> GetPagesAsync(int pageIndex, int pageSize, string? title = null);
- 功能:分页获取音乐列表,支持按标题搜索
- 参数:
pageIndex:页码pageSize:每页数量title:可选的标题搜索条件
- 返回:分页结果集
5. GetAsync - 获取单个音乐
Task<MusicResponse?> GetAsync(string id);
- 功能:根据 ID 获取特定音乐的详细信息
- 返回:音乐信息,不存在时返回 null
6. DeleteAsync - 删除音乐
Task DeleteAsync(string id, Func<MusicResponse, Task> deleteObjectStorage);
- 功能:删除音乐记录
- 参数:
id:音乐 IDdeleteObjectStorage:回调函数,用于从云存储中删除文件
- 设计亮点:通过回调函数实现了存储层的解耦
7. GetTopMusicsAsync - 获取最新音乐
Task<List<MusicResponse>> GetTopMusicsAsync(uint top = 200);
- 功能:获取最近上传的音乐列表
- 参数:返回的音乐数量,默认 200 首
8. GetRandomGroupMusicAsync - 随机分组音乐
Task<List<MusicResponse>> GetRandomGroupMusicAsync(int top = 200);
- 功能:从随机选择的分组中获取音乐
- 用途:可能用于音乐推荐或发现功能
设计特点
- 异步设计:所有方法都返回
Task,支持异步操作 - 分层架构:使用 Request/Response 模式,职责分离清晰
- 可扩展性:通过接口定义,便于实现不同的存储策略
- 灵活删除:删除方法接受回调函数,支持不同的存储后端
- 丰富查询:提供分页、搜索、分组等多种查询方式
这个接口设计体现了良好的软件架构原则,为音乐管理系统提供了完整的业务能力抽象。
AI 正在分析代码…
评论加载中...