package com.microservices.zone.journals.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.microservices.common.core.web.domain.BaseEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.util.Date;

/**
 * 通用评论对象 zone_journals
 *
 * @author otto
 * @date 2025-04-30
 */
@Data
@EqualsAndHashCode(callSuper = true)
@ApiModel("通用评论对象")
public class ZoneJournals extends BaseEntity implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 评论对象类型常量
     */
    public static final String JOURNAL_TYPE_AI_SKILL = "aiSkill";
    public static final String JOURNAL_TYPE_AI_MODEL = "aiModel";
    public static final String JOURNAL_TYPE_AI_DATASET = "aiDataset";
    public static final String JOURNAL_TYPE_ZONE_RESOURCE = "zoneResource";

    /** 评论ID */
    @ApiModelProperty(value = "评论ID")
    private Long id;

    /** 评论对象ID */
    @ApiModelProperty(value = "评论对象ID")
    private Long journalizedId;

    /** 评论对象类型 */
    @ApiModelProperty(value = "评论对象类型")
    private String journalizedType;

    /** GitLink用户ID */
    @ApiModelProperty(value = "GitLink用户ID")
    private Long userId;

    /** 评论内容 */
    @ApiModelProperty(value = "评论内容")
    private String notes;

    /** 父级评论ID */
    @ApiModelProperty(value = "父级评论ID")
    private Long parentId;

    /** 回复的评论ID */
    @ApiModelProperty(value = "回复的评论ID")
    private Long replyId;

    /** 评论数量 */
    @ApiModelProperty(value = "评论数量")
    private Integer commentsCount;

    /** 附件标识列表 */
    @ApiModelProperty(value = "附件标识列表")
    private String attachmentIdentifiers;

    /** @用户列表 */
    @ApiModelProperty(value = "@用户列表")
    private String receiversLogin;

    /** 是否隐私评论 */
    @ApiModelProperty(value = "是否隐私评论")
    private String privateNotes;

    /** 删除标志 */
    @ApiModelProperty(value = "删除标志")
    private String delFlag;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "创建时间")
    private Date createdOn;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "更新时间")
    private Date updatedOn;
}
