package com.emotion.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.emotion.common.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.SuperBuilder;
import lombok.NoArgsConstructor;
import lombok.AllArgsConstructor;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 日记评论实体类
 *
 * @author huazhongmin
 * @date 2025-07-23
 */
@Data
@EqualsAndHashCode(callSuper = true)
@SuperBuilder
@NoArgsConstructor
@AllArgsConstructor
@TableName("t_diary_comment")
public class DiaryComment extends BaseEntity {

    /**
     * 日记ID
     */
    @TableField("diary_id")
    private String diaryId;

    /**
     * 评论用户ID
     */
    @TableField("user_id")
    private String userId;

    /**
     * 父评论ID (用于回复功能)
     */
    @TableField("parent_comment_id")
    private String parentCommentId;

    /**
     * 评论内容
     */
    @TableField("content")
    private String content;

    /**
     * 评论图片 (存储图片URL数组)
     */
    @TableField("images")
    private String images;

    /**
     * 评论类型: user-用户评论, ai-AI评论, system-系统评论
     */
    @TableField("comment_type")
    private String commentType;

    /**
     * AI评论来源 (如: emotion_analysis, sentiment_analysis)
     */
    @TableField("ai_comment_source")
    private String aiCommentSource;

    /**
     * 点赞数
     */
    @TableField("like_count")
    private Integer likeCount;

    /**
     * 回复数
     */
    @TableField("reply_count")
    private Integer replyCount;

    /**
     * 是否匿名评论: 0-实名, 1-匿名
     */
    @TableField("is_anonymous")
    private Integer isAnonymous;

    /**
     * 是否置顶: 0-普通, 1-置顶
     */
    @TableField("is_top")
    private Integer isTop;

    /**
     * 状态: published-已发布, hidden-隐藏, deleted-已删除
     */
    @TableField("status")
    private String status;

    /**
     * 发布时间
     */
    @TableField("publish_time")
    private LocalDateTime publishTime;

    /**
     * 最后回复时间
     */
    @TableField("last_reply_time")
    private LocalDateTime lastReplyTime;

    /**
     * 情绪评分
     */
    @TableField("emotion_score")
    private BigDecimal emotionScore;

    /**
     * 情感评分
     */
    @TableField("sentiment_score")
    private BigDecimal sentimentScore;

    /**
     * 扩展元数据
     */
    @TableField("metadata")
    private String metadata;
} 