using Dpz.Core.Public.ViewModel.Request;
using Dpz.Core.Public.ViewModel.Response;
namespace Dpz.Core.Service.RepositoryService;
public interface IArticleService : ICacheService
{
/// <summary>
/// 获取一定时间内,阅读量靠前的文章
/// </summary>
/// <param name="days"></param>
/// <param name="count"></param>
/// <returns></returns>
Task<List<ArticleMiniResponse>> GetTopArticlesAsync(int days = -7, uint count = 15);
/// <summary>
/// 随机获取文章
/// </summary>
/// <returns></returns>
Task<List<ArticleMiniResponse>> GetRandomArticlesAsync(int sample = 8);
/// <summary>
/// 获取用户发表的文章
/// </summary>
/// <returns></returns>
Task<List<ArticleMiniResponse>> GetPublishArticlesAsync();
/// <summary>
/// 获取文章
/// </summary>
/// <param name="pageIndex">页码</param>
/// <param name="pageSize">大小</param>
/// <param name="title">标题</param>
/// <param name="account">账号</param>
/// <param name="tags">标签</param>
/// <returns></returns>
Task<IPagedList<ArticleMiniResponse>> GetPagesAsync(
int pageIndex = 1,
int pageSize = 20,
string? title = "",
string? account = "",
params string?[]? tags
);
/// <summary>
/// 获取所有标签
/// </summary>
/// <returns></returns>
Task<List<string>> GetAllTagsAsync();
/// <summary>
/// 获取文章详情
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task<ArticleResponse?> GetArticleAsync(string? id);
/// <summary>
/// 查看文章
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task ViewAsync(string id);
/// <summary>
/// 获取最新文章
/// </summary>
/// <param name="range"></param>
/// <returns></returns>
Task<List<ArticleMiniResponse>> GetLatestAsync(int range = 5);
/// <summary>
/// 标题是否存在
/// </summary>
/// <param name="title"></param>
/// <returns></returns>
Task<bool> IsExistsAsync(string title);
/// <summary>
/// 由From 比对 不存在的
/// </summary>
/// <returns></returns>
Task<IReadOnlyCollection<string>> NoExistsByFromAsync(IReadOnlyCollection<string> feeds);
/// <summary>
/// 删除文章
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task DeleteAsync(string id);
/// <summary>
/// 删除旧的CnBeta数据
/// </summary>
/// <param name="month">最多删除几个月前的</param>
/// <param name="limit">按时间倒序,删除的条数</param>
/// <returns></returns>
Task DeleteOldCnBetaAsync(int month, int limit);
/// <summary>
/// 创建文章
/// </summary>
/// <param name="article">文章</param>
/// <param name="creator">创建人</param>
/// <returns></returns>
Task<ArticleResponse> CreateArticleAsync(CreateArticleRequest article, VmUserInfo creator);
/// <summary>
/// 修改文章
/// </summary>
/// <param name="article">文章</param>
/// <param name="editor">修改人</param>
/// <returns></returns>
Task EditArticleAsync(EditArticleRequest article, VmUserInfo editor);
/// <summary>
/// 获取文章总数
/// </summary>
/// <returns></returns>
Task<int> GetTotalCountAsync();
/// <summary>
/// 获取今日文章总数
/// </summary>
/// <returns></returns>
Task<int> GetTodayCountAsync();
/// <summary>
/// 清除缓存
/// </summary>
ValueTask ClearCacheAsync();
}
⚠⚠ 以下内容为AI分析的结果,请根据实际情况进行判断。
IArticleService 接口解析
IArticleService 是一个定义文章相关操作的接口,继承自 ICacheService,主要用于文章管理系统。以下是它的主要功能:
文章查询功能
- 热门文章查询:
GetTopArticlesAsync获取指定天数内阅读量最高的文章 - 随机文章查询:
GetRandomArticlesAsync随机获取样本文章 - 用户文章查询:
GetPublishArticlesAsync获取用户发表的文章 - 分页查询:
GetPagesAsync支持按标题、账号和标签筛选的分页查询 - 最新文章:
GetLatestAsync获取最新发布的文章 - 文章详情:
GetArticleAsync根据ID获取文章详细信息
标签管理
GetAllTagsAsync获取所有文章标签
文章操作
- 阅读统计:
ViewAsync记录文章阅读量 - 文章创建:
CreateArticleAsync创建新文章 - 文章编辑:
EditArticleAsync修改现有文章 - 文章删除:
DeleteAsync删除指定文章 - 批量删除:
DeleteOldCnBetaAsync删除旧的CnBeta数据
验证功能
- 标题查重:
IsExistsAsync检查标题是否已存在 - 来源比对:
NoExistsByFromAsync比对不存在的来源
统计功能
- 文章总数:
GetTotalCountAsync获取总文章数 - 今日新增:
GetTodayCountAsync获取今日新增文章数
缓存管理
ClearCacheAsync清除缓存(继承自ICacheService)
该接口设计全面,涵盖了文章管理系统的核心功能,包括CRUD操作、查询筛选、统计和缓存管理,适合构建一个内容管理系统(CMS)的文章模块。
评论加载中...