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

import com.yolo.keyboard.framework.tenant.core.aop.TenantIgnore;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import java.math.BigDecimal;
import java.time.LocalDateTime;
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 芋道源码
 */
@TableName("keyboard_theme_purchase")
@KeySequence("keyboard_theme_purchase_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TenantIgnore
public class KeyboardThemePurchaseDO {

    /**
     * 主键 ID
     */
    @TableId
    private Long id;
    /**
     * 业务订单号
     */
    private String orderNo;
    /**
     * 购买用户ID
     */
    private Long userId;
    /**
     * 主题皮肤ID
     */
    private Long themeId;
    /**
     * 皮肤原始所需积分
     */
    private BigDecimal costPoints;
    /**
     * 实际扣除积分
     */
    private BigDecimal paidPoints;
    /**
     * 支付状态：0待支付 1已支付 2已关闭 3已退款
     */
    private Short payStatus;
    /**
     * 关联的积分扣费流水ID
     */
    private Long walletTxId;
    /**
     * 已退款的积分数量
     */
    private Integer refundPoints;
    /**
     * 积分退款完成时间
     */
    private LocalDateTime refundedAt;
    /**
     * 创建时间
     */
    private LocalDateTime createdAt;
    /**
     * 支付完成时间
     */
    private LocalDateTime paidAt;
    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;
    /**
     * 备注或扩展信息
     */
    private String remark;


}