package cn.meowrain.aioj.backend.blogservice.dto.resp;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * 文章列表响应DTO
 *
 * @author AIOJ
 */
@Data
@Schema(description = "文章列表响应")
public class ArticleListResponseDTO {

    @Schema(description = "文章ID", example = "1")
    private Long id;

    @Schema(description = "文章标题", example = "Spring Boot 3.5.7 新特性详解")
    private String title;

    @Schema(description = "文章别名", example = "spring-boot-3-5-7-features")
    private String slug;

    @Schema(description = "文章摘要", example = "本文详细介绍Spring Boot 3.5.7版本的新特性...")
    private String summary;

    @Schema(description = "封面图片URL")
    private String coverImage;

    @Schema(description = "作者用户ID", example = "1")
    private Long authorId;

    @Schema(description = "作者用户名", example = "admin")
    private String authorName;

    @Schema(description = "作者头像", example = "https://example.com/avatar.jpg")
    private String authorAvatar;

    @Schema(description = "分类ID", example = "1")
    private Long categoryId;

    @Schema(description = "分类名称", example = "算法题解")
    private String categoryName;

    @Schema(description = "标签列表")
    private List<TagResponseDTO> tags;

    @Schema(description = "浏览次数", example = "100")
    private Integer viewCount;

    @Schema(description = "点赞数", example = "10")
    private Integer likeCount;

    @Schema(description = "评论数", example = "5")
    private Integer commentCount;

    @Schema(description = "收藏数", example = "3")
    private Integer collectCount;

    @Schema(description = "是否置顶", example = "0")
    private Integer isTop;

    @Schema(description = "是否精华", example = "0")
    private Integer isEssence;

    @Schema(description = "发布时间")
    private Date publishTime;

    @Schema(description = "创建时间")
    private Date createTime;

    @Schema(description = "当前用户是否点赞", example = "false")
    private Boolean isLiked;

    @Schema(description = "当前用户是否收藏", example = "false")
    private Boolean isCollected;
}
