package com.red.circle.console.app.excel.model.order;

import com.alibaba.excel.annotation.ExcelProperty;
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;

/**
 * <p>
 * 购买记录 导出模型.
 * </p>
 *
 * @author pengliang on 2023/4/14
 */
@Data
@Accessors(chain = true)
public class OrderPurchaseHistoryExportModel implements Serializable {

  @Serial
  private static final long serialVersionUID = 1L;

  /**
   * 环境.
   */
  @ExcelProperty(value = "Order Env")
  private String env;

  /**
   * 用户账号.
   */
  @ExcelProperty(value = "User Account")
  private String account;

  /**
   * 用户昵称.
   */
  @ExcelProperty(value = "User Nickname")
  private String nickname;

  /**
   * 来源平台.
   */
  @ExcelProperty(value = "Source Platform")
  private String platform;

  /**
   * 支付平台.
   */
  @ExcelProperty(value = "Payment platform")
  private String payPlatform;

  /**
   * 购买产品id.
   */
  @ExcelProperty(value = "Purchase product Id")
  private String purchaseProductId;

  /**
   * 单价.
   */
  @ExcelProperty(value = "Price(USD)")
  private BigDecimal unitPrice;

  /**
   * 应用内订单id.
   */
  @ExcelProperty(value = "App Order Id")
  @JsonSerialize(using = ToStringSerializer.class)
  private String appOrderId;

  /**
   * 订单id.
   */
  @ExcelProperty(value = "Order Id")
  private String orderId;

  /**
   * 用户当前所在区域.
   */
  @ExcelProperty(value = "Current Region")
  private String currentRegion;

  /**
   * 用户当前所在区域 编码.
   */
  @ExcelProperty(value = "Current Region Code")
  private String currentRegionCode;

  /**
   * 事件描述.
   */
  @ExcelProperty(value = "Event describe")
  private String eventDesc;

  /**
   * 订单状态.
   */
  @ExcelProperty(value = "Order status")
  private String status;

  /**
   * 购买时间.
   */
  @ExcelProperty(value = "Purchase time")
  private String purchaseDateMs;

  /**
   * 创建时间.
   */
  @ExcelProperty(value = "Create time")
  private String createTime;

  /**
   * 修改时间.
   */
  @ExcelProperty(value = "Last update time")
  private String updateTime;

}
