package com.red.circle.other.infra.database.cache.entity.user;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
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.math.BigDecimal;
import lombok.Data;
import lombok.experimental.Accessors;


/**
 * 邀新配置配置信息.
 *
 * @author pengshigang on 2023/12/13
 */
@Data
@Accessors(chain = true)
@JsonIgnoreProperties(ignoreUnknown = true)
public class InviteUserRedPacketConfigCache implements Serializable {

  @Serial
  private static final long serialVersionUID = 1L;

  /**
   * 现金奖项人数-最少.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long cashNumberMin;

  /**
   * 现金奖项人数-最多.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long cashNumberMax;

  /**
   * 其他奖项人数-最少.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long otherNumberMin;

  /**
   * 其他奖项人数-最多.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long otherNumberMax;

  /**
   * 红包总金额.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long totalAmount;

  /**
   * 开红包金额-最少.
   */
  private BigDecimal openRedPacketMin;

  /**
   * 开红包金额-最多.
   */
  private BigDecimal openRedPacketMax;

  /**
   * 转盘‘直接提现’奖项最少邀请多少人才能有机会触发.
   */
  private Integer withdrawThresholdCount;

  /**
   * 转盘‘直接提现’奖项触发人次比例.
   */
  private Integer withdrawTriggerProportion;

  /**
   * 是否已关闭活动(0.未关闭 1.已关闭).
   */
  private Boolean checkClose;

  /**
   * 一个ip最多可集满红包次数.
   */
  private Integer ipFrequency;

  /**
   * 一个设备最多可集满红包次数.
   */
  private Integer deviceFrequency;

  /**
   * 用户账号一天最多可集满红包次数.
   */
  private Integer dayFrequency;

  /**
   * 用户账号总可集满次数.
   */
  private Integer totalFrequency;

  /**
   * 区域code, 多个用,分割.
   */
  private String regionCodeArray;

  /**
   * 新用户可助力天,多个用,分割.
   */
  private String newUserHelpDays;

  /**
   * 金币余额可参加活动
   */
  private BigDecimal goldCoinBalance;

  /**
   * 注册时间大于多少天可参加活动
   */
  private Integer regDateMax;

  /**
   * 红包飘窗是否开启
   */
  private Boolean bayWindow;

}
