package com.red.circle.other.app.dto.clientobject.user;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.red.circle.framework.dto.ClientObject;
import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
import java.math.BigDecimal;
import java.sql.Timestamp;
import java.util.List;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * 用户货运账户CO.
 *
 * @author system
 * @since 2025-10-21
 */
@Data
@Accessors(chain = true)
@EqualsAndHashCode(callSuper = true)
public class UserFreightBalanceCO extends ClientObject {

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

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

  /**
   * 用户id.
   */
  @JsonSerialize(using = ToStringSerializer.class)
  private Long userId;

  /**
   * 获得糖果.
   */
  private BigDecimal earnPoints;

  /**
   * 消费糖果.
   */
  private BigDecimal consumptionPoints;

  /**
   * 余额.
   */
  private BigDecimal balance;

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

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

  /**
   * 0.未关闭 1.已关闭.
   */
  private Boolean close;

  /**
   * 0.显示 1.不显示.
   */
  private Boolean display;

  /**
   * 是否经销商 0.否 1.是.
   */
  private Boolean dealer;

  /**
   * 是否超级经销商 0.否 1.是.
   */
  private Boolean superDealer;

  /**
   * 支持的国家（多个用逗号分隔）.
   */
  private String supportedCountries;

  /**
   * 是否关注
   */
  private Boolean isFollow;

  /**
   * 联系方式.
   */
  private String contactInfo;

  /**
   * H5显示开关：0-不显示，1-显示.
   */
  private Boolean h5Display;

  /**
   * 授权卖家数量.
   */
  private Integer sellerQuantity;

  /**
   * 实际授权卖家数量.
   */
  private Long realSellerQuantity;

  /**
   * 成为代理天数（根据createTime计算）.
   */
  private Integer becomeDays;

  /**
   * 交易数量（出货次数，type=1）.
   */
  private Long transactionCount;

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

  /**
   * 支持的国家国旗URL列表（根据supportedCountries匹配所有国旗，逗号分隔）.
   */
  private List<String> nationalFlag;

  /**
   * 自己的国家国旗
   */
  private String ownNationalFlag;

}
