package com.red.circle.other.inner.model.dto.message;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import java.io.Serial;
import java.io.Serializable;
import java.util.Map;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 公共消息DTO.
 *
 * @author your_name
 * @date 2025-10-14
 */
@Data
@Accessors(chain = true)
public class PublicMessageDTO implements Serializable {

  @Serial
  private static final long serialVersionUID = 1L;

  /**
   * MongoDB主键.
   */
  private String id;

  /**
   * 业务消息ID.
   */
  private String messageId;

  /**
   * 消息类型：notification-通知，activity-活动.
   */
  private String type;

  /**
   * 消息标题.
   */
  private String title;

  /**
   * 消息内容.
   */
  private String content;

  /**
   * 消息图片URL.
   */
  private String imageUrl;

  /**
   * 扩展字段，存储额外信息.
   */
  private Map<String, Object> extraData;

  /**
   * 创建时间.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long createdAt;

  /**
   * 过期时间.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long expiresAt;

  /**
   * 消息状态：active-激活，deleted-删除.
   */
  private String status;

}
