网站首页 网站源码
website
站点相关全部源代码,隐藏了一些关于服务器的信息
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();
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

上述代码定义了一个名为 IArticleService 的接口,主要用于处理与文章相关的操作。这个接口包含多个方法,每个方法都有其特定的功能,以下是对每个方法的详细解释:

  1. 获取一定时间内,阅读量靠前的文章:

    • GetTopArticlesAsync(int days = -7, uint count = 15):获取在过去指定天数内(默认为7天)阅读量最高的文章,返回的文章数量由 count 参数指定(默认为15)。
  2. 随机获取文章:

    • GetRandomArticlesAsync(int sample = 8):随机获取指定数量的文章(默认为8篇)。
  3. 获取用户发表的文章:

    • GetPublishArticlesAsync():获取当前用户发表的所有文章。
  4. 获取文章:

    • GetPagesAsync(...):根据页码、页大小、标题、账号和标签等条件获取文章的分页列表。
  5. 获取所有标签:

    • GetAllTagsAsync():获取系统中所有的标签。
  6. 获取文章详情:

    • GetArticleAsync(string id):根据文章ID获取文章的详细信息。
  7. 查看文章:

    • ViewAsync(string id):记录用户查看文章的操作。
  8. 获取最新文章:

    • GetLatestAsync(int range = 5):获取最新的文章,数量由 range 参数指定(默认为5篇)。
  9. 标题是否存在:

    • IsExistsAsync(string title):检查指定标题的文章是否存在。
  10. 由From比对不存在的:

    • NoExistsByFromAsync(IReadOnlyCollection<string> feeds):检查给定的文章源中哪些文章不存在。
  11. 删除文章:

    • DeleteAsync(string id):根据文章ID删除指定的文章。
  12. 删除旧的CnBeta数据:

    • DeleteOldCnBetaAsync(int month, int limit):删除指定月份之前的旧数据,最多删除的月份由 month 参数指定,limit 参数指定删除的条数。
  13. 创建文章:

    • CreateArticleAsync(VmCreateArticleV4 article, VmUserInfo creator):创建一篇新文章,传入文章内容和创建者信息。
  14. 修改文章:

    • EditArticleAsync(VmEditArticleV4 article, VmUserInfo editor):修改已存在的文章,传入修改后的文章内容和修改者信息。
  15. 获取文章总数:

    • GetTotalCountAsync():获取系统中所有文章的总数。
  16. 获取今日文章总数:

    • GetTodayCountAsync():获取今天发表的文章总数。
  17. 清除缓存:

    • ClearCacheAsync():清除与文章相关的缓存数据,包括热门文章、分页文章、所有标签、最新文章和搜索结果的缓存。
  18. 搜索:

    • SearchAsync(string keyword):根据关键词搜索文章,返回搜索结果。

总结

这个接口提供了一系列与文章管理相关的功能,包括获取、创建、编辑、删除文章,以及获取文章的统计信息和标签等。通过使用缓存机制,接口中的某些方法可以提高性能,减少数据库的访问频率。

loading