package com.yolo.keyboard.dal.dataobject.userpurchaserecords;

import com.yolo.keyboard.framework.tenant.core.aop.TenantIgnore;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import java.time.LocalDateTime;
import com.baomidou.mybatisplus.annotation.*;
import com.yolo.keyboard.framework.mybatis.core.dataobject.BaseDO;

/**
 * 用户内购记录 DO
 *
 * @author ziin
 */
@TableName("keyboard_user_purchase_records")
@KeySequence("keyboard_user_purchase_records_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TenantIgnore
public class KeyboardUserPurchaseRecordsDO{

    /**
     * 主键，自增，唯一标识每条购买记录
     */
    @TableId
    private Integer id;
    /**
     * 用户 ID，关联到用户表，表示是哪位用户购买了产品
     */
    private Integer userId;
    /**
     * 购买的产品 ID，关联到产品表
     */
    private String productId;
    /**
     * 购买数量（如内购的金币数量，订阅的时长）
     */
    private Integer purchaseQuantity;
    /**
     * 实际支付价格
     */
    private BigDecimal price;
    /**
     * 货币类型（如美元 $）
     */
    private String currency;
    /**
     * 购买时间
     */
    private LocalDateTime purchaseTime;
    /**
     * 购买类型（如内购，订阅）
     */
    private String purchaseType;
    /**
     * 购买状态（如已支付，待支付，退款）
     */
    private String status;
    /**
     * 支付方式（如信用卡，支付宝等）
     */
    private String paymentMethod;
    /**
     * 唯一的交易 ID，用于标识该购买操作
     */
    private String transactionId;
    /**
     * 苹果的原始交易 ID
     */
    private String originalTransactionId;
    /**
     * 购买的产品 ID 列表（JSON 格式或数组）
     */
    private Object productIds;
    /**
     * 苹果返回的购买时间
     */
    private LocalDateTime purchaseDate;
    /**
     * 苹果返回的过期时间（如果有）
     */
    private LocalDateTime expiresDate;
    /**
     * 苹果的环境（如 Sandbox 或 Production）
     */
    private String environment;


}