网站首页 网站源码
using Dpz.Core.Public.ViewModel.Response;
namespace Dpz.Core.Service.V4.Services;
public interface IArticleService : ICacheService
{
/// <summary>
/// 获取一定时间内,阅读量靠前的文章
/// </summary>
/// <param name="days"></param>
/// <param name="count"></param>
/// <returns></returns>
Task<List<VmArticleMini>> GetTopArticlesAsync(int days = -7, uint count = 15);
/// <summary>
/// 随机获取文章
/// </summary>
/// <returns></returns>
Task<List<VmArticleMini>> GetRandomArticlesAsync(int sample = 8);
/// <summary>
/// 获取用户发表的文章
/// </summary>
/// <returns></returns>
Task<List<VmArticleMini>> 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<VmArticleMini>> 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<VmArticle?> 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<VmArticleMini>> 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<VmArticle> CreateArticleAsync(VmCreateArticleV4 article, VmUserInfo creator);
/// <summary>
/// 修改文章
/// </summary>
/// <param name="article">文章</param>
/// <param name="editor">修改人</param>
/// <returns></returns>
Task EditArticleAsync(VmEditArticleV4 article, VmUserInfo editor);
/// <summary>
/// 获取文章总数
/// </summary>
/// <returns></returns>
Task<int> GetTotalCountAsync();
/// <summary>
/// 获取今日文章总数
/// </summary>
/// <returns></returns>
Task<int> GetTodayCountAsync();
/// <summary>
/// 清除缓存
/// </summary>
ValueTask ClearCacheAsync();
}
上述代码定义了一个名为 IArticleService
的接口,主要用于处理与文章相关的操作。这个接口包含多个方法,每个方法都有其特定的功能,以下是对每个方法的详细解释:
获取一定时间内,阅读量靠前的文章:
GetTopArticlesAsync(int days = -7, uint count = 15)
:获取在过去指定天数内(默认为7天)阅读量最高的文章,返回的文章数量由 count
参数指定(默认为15)。随机获取文章:
GetRandomArticlesAsync(int sample = 8)
:随机获取指定数量的文章(默认为8篇)。获取用户发表的文章:
GetPublishArticlesAsync()
:获取当前用户发表的所有文章。获取文章:
GetPagesAsync(...)
:根据页码、页大小、标题、账号和标签等条件获取文章的分页列表。获取所有标签:
GetAllTagsAsync()
:获取系统中所有的标签。获取文章详情:
GetArticleAsync(string id)
:根据文章ID获取文章的详细信息。查看文章:
ViewAsync(string id)
:记录用户查看文章的操作。获取最新文章:
GetLatestAsync(int range = 5)
:获取最新的文章,数量由 range
参数指定(默认为5篇)。标题是否存在:
IsExistsAsync(string title)
:检查指定标题的文章是否存在。由From比对不存在的:
NoExistsByFromAsync(IReadOnlyCollection<string> feeds)
:检查给定的文章源中哪些文章不存在。删除文章:
DeleteAsync(string id)
:根据文章ID删除指定的文章。删除旧的CnBeta数据:
DeleteOldCnBetaAsync(int month, int limit)
:删除指定月份之前的旧数据,最多删除的月份由 month
参数指定,limit
参数指定删除的条数。创建文章:
CreateArticleAsync(VmCreateArticleV4 article, VmUserInfo creator)
:创建一篇新文章,传入文章内容和创建者信息。修改文章:
EditArticleAsync(VmEditArticleV4 article, VmUserInfo editor)
:修改已存在的文章,传入修改后的文章内容和修改者信息。获取文章总数:
GetTotalCountAsync()
:获取系统中所有文章的总数。获取今日文章总数:
GetTodayCountAsync()
:获取今天发表的文章总数。清除缓存:
ClearCacheAsync()
:清除与文章相关的缓存数据,包括热门文章、分页文章、所有标签、最新文章和搜索结果的缓存。搜索:
SearchAsync(string keyword)
:根据关键词搜索文章,返回搜索结果。这个接口提供了一系列与文章管理相关的功能,包括获取、创建、编辑、删除文章,以及获取文章的统计信息和标签等。通过使用缓存机制,接口中的某些方法可以提高性能,减少数据库的访问频率。