using Dpz.Core.Public.ViewModel.Response;
namespace Dpz.Core.Service.RepositoryService;
public interface ICommentService
{
/// <summary>
/// 获取评论
/// </summary>
/// <param name="node">评论类型</param>
/// <param name="relation">关联</param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
Task<IPagedList<CommentViewModel>> GetCommentsAsync(
CommentNode node,
string relation,
int pageIndex = 1,
int pageSize = 10
);
/// <summary>
/// 获取评论分页
/// </summary>
/// <param name="node"></param>
/// <param name="relation"></param>
/// <param name="pageIndex"></param>
/// <param name="pageSize"></param>
/// <returns></returns>
Task<IPagedList<VmCommentFlat>> GetPageAsync(
CommentNode? node,
string? relation,
int pageIndex = 1,
int pageSize = 20
);
/// <summary>
/// 获取有评论的文章ID、标题
/// </summary>
/// <returns></returns>
Task<List<CommentRelationResponse>> HasCommentForArticleAsync();
/// <summary>
/// 源码关联
/// </summary>
/// <returns></returns>
Task<List<CommentRelationResponse>> CodeRelationAsync();
/// <summary>
///
/// </summary>
/// <returns></returns>
Task<List<CommentRelationResponse>> OtherRelationAsync();
/// <summary>
/// 获取评论
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<CommentViewModel?> GetComment(string id);
/// <summary>
/// 获取评论数量
/// </summary>
/// <param name="node"></param>
/// <param name="relation"></param>
/// <returns></returns>
Task<int> GetCommentCountAsync(CommentNode node, string relation);
/// <summary>
/// 发表评论
/// </summary>
/// <param name="viewModel"></param>
/// <returns></returns>
Task PublishCommentAsync(VmPublishComment viewModel);
/// <summary>
/// 登录成员发表评论
/// </summary>
/// <param name="viewModel"></param>
/// <returns></returns>
Task PublishCommentAsync(MembleComment viewModel);
/// <summary>
/// 删除评论
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task DeleteAsync(string id);
/// <summary>
/// 逻辑删除 清除评论
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task ClearAsync(string id);
/// <summary>
/// 删除评论类型下,所有相关评论
/// </summary>
/// <param name="node"></param>
/// <param name="relation"></param>
/// <returns></returns>
Task DeleteAsync(CommentNode node, string relation);
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
这是一个名为 ICommentService 的接口,定义了评论系统的服务层契约。让我详细解释一下这个接口的功能和结构:
接口概述
这是一个评论服务接口,提供了完整的评论管理功能,包括查询、发布、删除等操作。
主要功能分析
1. 查询功能
// 获取评论列表(分页)
Task<IPagedList<CommentViewModel>> GetCommentsAsync(...)
// 获取扁平化评论分页
Task<IPagedList<VmCommentFlat>> GetPageAsync(...)
// 获取单个评论
Task<CommentViewModel?> GetComment(string id)
// 获取评论数量
Task<int> GetCommentCountAsync(CommentNode node, string relation)
2. 关联查询功能
// 获取有评论的文章信息
Task<List<CommentRelationResponse>> HasCommentForArticleAsync()
// 获取源码相关的评论关联
Task<List<CommentRelationResponse>> CodeRelationAsync()
// 获取其他类型的评论关联
Task<List<CommentRelationResponse>> OtherRelationAsync()
3. 发布功能
// 普通用户发表评论
Task PublishCommentAsync(VmPublishComment viewModel)
// 登录会员发表评论
Task PublishCommentAsync(MembleComment viewModel)
4. 删除功能
// 物理删除评论
Task DeleteAsync(string id)
// 逻辑删除(清除内容但保留记录)
Task ClearAsync(string id)
// 批量删除某个节点下的所有相关评论
Task DeleteAsync(CommentNode node, string relation)
关键参数说明
- CommentNode: 评论节点类型,用于区分不同类型的评论(如文章评论、源码评论等)
- relation: 关联标识,通常是被评论对象的ID
- pageIndex/pageSize: 分页参数
- id: 评论的唯一标识
设计特点
- 异步设计: 所有方法都返回
Task,支持异步操作 - 分页支持: 提供了完整的分页查询功能
- 多种删除方式: 支持物理删除、逻辑删除和批量删除
- 灵活的查询: 支持按节点类型和关联对象查询
- 用户区分: 区分普通用户和登录会员的评论发布
这个接口设计得比较完整,涵盖了评论系统的核心功能需求,适用于博客、论坛、内容管理系统等需要评论功能的应用场景。
AI 正在分析代码…
评论加载中...