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,主要用于文章管理系统。以下是它的主要功能:

文章查询功能

  1. 热门文章查询GetTopArticlesAsync 获取指定天数内阅读量最高的文章
  2. 随机文章查询GetRandomArticlesAsync 随机获取样本文章
  3. 用户文章查询GetPublishArticlesAsync 获取用户发表的文章
  4. 分页查询GetPagesAsync 支持按标题、账号和标签筛选的分页查询
  5. 最新文章GetLatestAsync 获取最新发布的文章
  6. 文章详情GetArticleAsync 根据ID获取文章详细信息

标签管理

  • GetAllTagsAsync 获取所有文章标签

文章操作

  1. 阅读统计ViewAsync 记录文章阅读量
  2. 文章创建CreateArticleAsync 创建新文章
  3. 文章编辑EditArticleAsync 修改现有文章
  4. 文章删除DeleteAsync 删除指定文章
  5. 批量删除DeleteOldCnBetaAsync 删除旧的CnBeta数据

验证功能

  1. 标题查重IsExistsAsync 检查标题是否已存在
  2. 来源比对NoExistsByFromAsync 比对不存在的来源

统计功能

  1. 文章总数GetTotalCountAsync 获取总文章数
  2. 今日新增GetTodayCountAsync 获取今日新增文章数

缓存管理

  • ClearCacheAsync 清除缓存(继承自ICacheService)

该接口设计全面,涵盖了文章管理系统的核心功能,包括CRUD操作、查询筛选、统计和缓存管理,适合构建一个内容管理系统(CMS)的文章模块。

评论加载中...