package com.red.circle.order.infra.database.mongo.order.query;

import com.red.circle.order.inner.model.enums.inapp.InAppPurchaseReceiptType;
import com.red.circle.order.inner.model.enums.inapp.InAppPurchaseStatus;
import java.io.Serial;
import java.io.Serializable;
import java.time.LocalDateTime;
import lombok.Data;

/**
 * 订单信息查询.
 *
 * @author pengliang on 2022/11/3
 */
@Data
public class InAppPurchaseDetailsQuery implements Serializable {

  @Serial
  private static final long serialVersionUID = 1L;

  /**
   * 内部订单id.
   */
  private String id;

  /**
   * 单据类型(PAYMENT：付款，RECEIPT：收款)
   */
  private InAppPurchaseReceiptType receiptType;

  /**
   * 跟踪id.
   */
  private String trackId;

  /**
   * 来源系统
   */
  private String sysOrigins;

  /**
   * 接收用户.
   */
  private Long acceptUserId;

  /**
   * 订阅，用于订阅产品id.
   */
  private String subscribeId;

  /**
   * 订单id.
   */
  private String orderId;

  /**
   * 环境 （TEST,PROD）.
   */
  private String env;

  /**
   * 支付平台信息 Android,iOS,H5.
   */
  private String factoryPlatform;

  /**
   * CREATE：创建付款意图
   * </p>
   * SUCCESS：付款成功
   * </p>
   * FAIL: 付款失败
   * </p>
   * CANCEL: 取消付款
   * </p>
   * REFUND: 退款
   * </p>
   * 订单状态.
   */
  private InAppPurchaseStatus status;

  private String countryCode;

  /**
   * 开始时间.
   */
  private LocalDateTime startTime;

  /**
   * 结束时间.
   */
  private LocalDateTime endTime;

  /**
   * 最后一条记录id.
   */
  private String lastId;

  /**
   * 条数.
   */
  private Integer limit;
}
