using Dpz.Core.Public.ViewModel.DynamicPages;

namespace Dpz.Core.Service.RepositoryService;

/// <summary>
/// 动态页
/// </summary>
public interface IDynamicPageService
{
    /// <summary>
    /// 创建新的动态页
    /// </summary>
    /// <param name="vmCreateDynamicPage"></param>
    /// <returns></returns>
    Task CreateAsync(VmCreateDynamicPage vmCreateDynamicPage);

    /// <summary>
    /// 根据ID查找动态页
    /// </summary>
    /// <param name="id"></param>
    /// <param name="account"></param>
    /// <returns></returns>
    Task<VmDynamicPageDetail?> FindAsync(string id, string? account = null);

    /// <summary>
    /// 修改动态也内容
    /// </summary>
    /// <param name="viewModel"></param>
    /// <returns></returns>
    Task EditContentAsync(VmEditDynamicPage viewModel);

    /// <summary>
    /// 修改内容
    /// </summary>
    /// <param name="id"></param>
    /// <param name="content"></param>
    /// <returns></returns>
    Task EditContentAsync(string id, string content);

    /// <summary>
    /// 删除动态页
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task DeleteAsync(params string[] id);

    /// <summary>
    /// 获取动态页分页信息
    /// </summary>
    /// <param name="pageIndex"></param>
    /// <param name="pageSize"></param>
    /// <param name="name"></param>
    /// <param name="creatorName"></param>
    /// <returns></returns>
    Task<IPagedList<VmDynamicPage>> GetPageAsync(
        int pageIndex,
        int pageSize,
        string? name,
        string? creatorName = null
    );

    /// <summary>
    /// 是否存在
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<bool> IsExistsAsync(string id);
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

这是一个C#接口定义,名为 IDynamicPageService,它定义了一个动态页面服务的契约。让我逐一解释这个接口的各个部分:

接口概述

  • 命名空间: Dpz.Core.Service.RepositoryService
  • 用途: 定义动态页面管理的服务接口
  • 引用: 使用了 Dpz.Core.Public.ViewModel.DynamicPages 命名空间中的视图模型

接口方法详解

1. CreateAsync - 创建动态页

Task CreateAsync(VmCreateDynamicPage vmCreateDynamicPage);
  • 接受一个 VmCreateDynamicPage 视图模型参数
  • 用于创建新的动态页面
  • 返回 Task,表示异步操作

2. FindAsync - 查找动态页

Task<VmDynamicPageDetail?> FindAsync(string id, string? account = null);
  • 根据ID查找特定的动态页面
  • 可选参数 account 可能用于权限控制或用户关联
  • 返回 VmDynamicPageDetail?,可能为null表示未找到

3. EditContentAsync - 修改动态页内容(重载方法)

有两个重载版本:

Task EditContentAsync(VmEditDynamicPage viewModel);
Task EditContentAsync(string id, string content);
  • 第一个接受完整的编辑视图模型
  • 第二个直接接受ID和内容字符串,提供更简单的编辑方式

4. DeleteAsync - 删除动态页

Task DeleteAsync(params string[] id);
  • 支持批量删除,使用 params 关键字
  • 可以传入一个或多个ID进行删除操作

5. GetPageAsync - 分页查询

Task<IPagedList<VmDynamicPage>> GetPageAsync(
    int pageIndex,
    int pageSize,
    string? name,
    string? creatorName = null
);
  • 实现分页查询功能
  • 支持按名称和创建者名称进行过滤
  • 返回 IPagedList<VmDynamicPage> 分页结果

6. IsExistsAsync - 存在性检查

Task<bool> IsExistsAsync(string id);
  • 检查指定ID的动态页是否存在
  • 返回布尔值

设计特点

  1. 异步模式: 所有方法都返回 Task,支持异步操作
  2. 视图模型驱动: 使用特定的视图模型类进行数据传输
  3. 灵活性: 提供多种操作方式(如两种编辑内容的方法)
  4. 批量操作: 支持批量删除
  5. 分页支持: 内置分页查询功能
  6. 可空性: 合理使用可空类型,提高代码安全性

这个接口为动态页面管理提供了完整的CRUD操作和查询功能,是一个设计良好的服务层接口。

评论加载中...