package com.red.circle.console.app.dto.clienobject.sys;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonFormat.Shape;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.List;
import lombok.Data;
import lombok.experimental.Accessors;

/**
 * 礼物信息
 *
 * @author zongpubin on 2023/10/12
 */
@Data
@Accessors(chain = true)
public class SysGiftConfigCO implements Serializable {

  @Serial
  private static final long serialVersionUID = 1L;

  /**
   * 主键标识.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long id;

  /**
   * 归属平台.
   */
  private String sysOrigin;

  /**
   * 礼物图片.
   */
  private String giftPhoto;

  /**
   * 礼物图片资源.
   */
  private String giftSourceUrl;

  /**
   * 礼物名称.
   */
  private String giftName;

  /**
   * 礼物code.
   */
  private String giftCode;

  /**
   * 礼物价值/糖果.
   */
  private BigDecimal giftCandy;

  /**
   * 可兑积分.
   */
  private BigDecimal giftIntegral;

  /**
   * 排序.
   */
  private Integer sort;

  /**
   * 特效.
   */
  private String special;

  /**
   * 区域.
   */
  private String regions;

  /**
   * 类型.
   */
  private String type;

  /**
   * 礼物tab.
   */
  private String giftTab;

  /**
   * 0.未删除 1.已删除.
   */
  private Boolean del;

  /**
   * 幸运礼物规格ID.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long standardId;

  /**
   * 过期时间
   */
  @JsonFormat(shape = Shape.NUMBER)
  private Timestamp expiredTime;


  /**
   * 专属礼物归属人.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long userId;

  /**
   * 专属礼物归属人.
   */
  private String account;

  /**
   * 用户信息.
   */
  private UserProfileDTO userBaseInfo;

  /**
   * 告白礼物 0不是. 1.是.
   */
  private Boolean explanationGift;

  /**
   * 特效.
   */
  private List<String> specialList;


  /**
   * 类型名称.
   */
  private String typeName;

  /**
   * 区域.
   */
  private List<String> regionList;

  /**
   * 区域.
   */
  private String regionNameStr;

  private Long updateUser;

  private Long createUser;


  /**
   * 创建时间.
   */
  private Timestamp createTime;

  /**
   * 修改时间.
   */
  private Timestamp updateTime;

}
