package com.red.circle.order.infra.database.rds.entity.order;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.red.circle.framework.mybatis.entity.TimestampBaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

/**
 * <p>
 * 华为购买单据.
 * </p>
 *
 * @author pengshigang
 * @since 2022-03-16
 */
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("order_huawei_purchase_receipt")
public class OrderHuaweiPurchaseReceipt extends TimestampBaseEntity {

  private static final long serialVersionUID = 1L;

  /**
   * 主键标识.
   */
  @TableId(value = "id", type = IdType.ASSIGN_ID)
  private Long id;

  /**
   * 来源系统.
   */
  @TableField("sys_origin")
  private String sysOrigin;

  /**
   * 用户id.
   */
  @TableField("user_id")
  private Long userId;

  /**
   * 应用ID.
   */
  @TableField("application_id")
  private String applicationId;

  /**
   * true 订阅处于活动状态，false 用户已经取消订阅.
   */
  @TableField("auto_renewing")
  private Boolean autoRenewing;

  /**
   * 商户订单ID，唯一标识一次交易，由华为支付时生成.
   */
  @TableField("order_id")
  private String orderId;

  /**
   * 商品类别：0：消耗型商品、1：非消耗型商品、2：订阅型商品.
   */
  @TableField("kind")
  private Integer kind;

  /**
   * 应用安装包名.
   */
  @TableField("package_name")
  private String packageName;

  /**
   * 商品ID,每种商品必须有唯一的ID，由应用在PMS中维护，或者应用发起购买时传入.
   */
  @TableField("product_id")
  private String productId;

  /**
   * 商品名称.
   */
  @TableField("product_name")
  private String productName;

  /**
   * 商品购买时间的时间戳.
   */
  @TableField("purchase_time")
  private Long purchaseTime;

  /**
   * 订单交易状态.
   */
  @TableField("purchase_state")
  private Integer purchaseState;

  /**
   * 商户侧保留信息，由开发者在调用支付接口时传入.
   */
  @TableField("developer_payload")
  private String developerPayload;

  /**
   * 应用发起消耗请求时自定义的挑战字，可唯一标识此次消耗请求，仅一次性商品存在.
   */
  @TableField("developer_challenge")
  private String developerChallenge;

  /**
   * 消费状态，仅一次性商品存在.
   */
  @TableField("consumption_state")
  private String consumptionState;

  /**
   * 用于唯一标识商品和用户对应关系的购买令牌.
   */
  @TableField("purchase_token")
  private String purchaseToken;

  /**
   * 购买类型0:沙盒环境,1.促销，暂不支持; -1 正式购买.
   */
  @TableField("purchase_type")
  private Integer purchaseType;

  /**
   * 定价货币的币种.
   */
  @TableField("currency")
  private String currency;

  /**
   * 商品实际价格,精确到小数点后2位.
   */
  @TableField("price")
  private String price;

  /**
   * 国家码.
   */
  @TableField("country")
  private String country;

  /**
   * 支付方式.
   */
  @TableField("pay_type")
  private String payType;

  /**
   * 交易订单号.
   */
  @TableField("pay_order_id")
  private String payOrderId;

  /**
   * 帐号类型1：AppTouch用户账号 否则其他.
   */
  @TableField("account_flag")
  private Integer accountFlag;

}
