using Dpz.Core.Entity.Base.Image;

namespace Dpz.Core.Public.ViewModel.Response;

/// <summary>
/// Represents the ArticleResponse type.
/// </summary>
public class ArticleResponse
{
    /// <summary>
    /// Gets or sets Id.
    /// </summary>
    public required string Id { get; set; }

    /// <summary>
    /// 文章标题
    /// </summary>
    public required string Title { get; set; }

    /// <summary>
    /// 简介
    /// </summary>
    public string? Introduction { get; set; }

    /// <summary>
    /// Markdown 内容
    /// </summary>
    public required string Markdown { get; set; }

    /// <summary>
    /// 主图片
    /// </summary>
    public string? MainImage { get; set; }

    /// <summary>
    /// 回复量
    /// </summary>
    public int CommentCount { get; set; }

    /// <summary>
    /// 查看量
    /// </summary>
    public int ViewCount { get; set; }

    /// <summary>
    /// 文章相关图片地址
    /// </summary>
    public List<string> ImagesAddress { get; set; } = [];

    /// <summary>
    /// 标签
    /// </summary>
    public List<string> Tags { get; set; } = [];

    /// <summary>
    /// 作者
    /// </summary>
    public VmUserInfo? Author { get; set; }

    /// <summary>
    /// 来源
    /// </summary>
    public string? From { get; set; }

    /// <summary>
    /// 发表时间
    /// </summary>
    public DateTime CreateTime
    {
        get => field.ToLocalTime();
        set;
    }

    /// <summary>
    /// 最后修改时间
    /// </summary>
    public DateTime LastUpdateTime
    {
        get => field.ToLocalTime();
        set;
    }

    /// <summary>
    /// 广告概率权重
    /// </summary>
    public double AdWeight { get; set; }

    /// <summary>
    /// 主图片元信息
    /// </summary>
    public ImageMetadata? MainImageMetadata { get; set; }

    /// <summary>
    /// 文章相关图片的元信息
    /// </summary>
    public List<ImageMetadata> Images { get; set; } = [];
}
⚠⚠    以下内容为AI分析的结果,请根据实际情况进行判断。

代码解释

这是一个 C# 的数据传输对象(DTO)类,用于表示文章响应数据的视图模型。以下是详细解释:

命名空间和引用

  • 使用了 Dpz.Core.Entity.Base.Image 命名空间(用于图片元数据)
  • 属于 Dpz.Core.Public.ViewModel.Response 命名空间

类定义:ArticleResponse

这是一个公开的响应类,包含文章的完整信息,用于向客户端返回数据。

主要属性分组:

基础信息

  • Id: 文章唯一标识符(必填)
  • Title: 文章标题(必填)
  • Introduction: 文章简介(可空)
  • Markdown: Markdown 格式的文章内容(必填)

统计信息

  • CommentCount: 评论/回复数量
  • ViewCount: 浏览次数
  • AdWeight: 广告概率权重(用于广告投放算法)

图片相关

  • MainImage: 主图片地址(可空)
  • MainImageMetadata: 主图片的元数据信息(如尺寸、格式等)
  • ImagesAddress: 文章中所有图片的地址列表
  • Images: 文章图片的元数据列表

分类和作者

  • Tags: 文章标签列表(用于分类和搜索)
  • Author: 作者信息(VmUserInfo 类型)
  • From: 文章来源(可空)

时间信息(特殊处理)

public DateTime CreateTime
{
    get => field.ToLocalTime();  // 读取时自动转换为本地时区
    set;
}
  • CreateTime: 创建时间
  • LastUpdateTime: 最后更新时间
  • 使用 C# 的字段支持属性(field keyword),在 getter 中自动将 UTC 时间转换为本地时间

技术特点:

  1. required 修饰符:确保在对象初始化时必须提供这些属性值
  2. 集合初始化= [] 使用了集合表达式语法(C# 12+)
  3. 可空引用类型:使用 ? 标记可为空的属性
  4. 自动时区转换:时间属性在读取时自动转为本地时区

这个类通常用于 API 响应,将数据库实体转换为客户端友好的格式。

评论加载中...