package com.yolo.keyboard.controller.admin.themepurchase.vo;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.*;
import java.math.BigDecimal;
import org.springframework.format.annotation.DateTimeFormat;
import java.time.LocalDateTime;
import cn.idev.excel.annotation.*;

@Schema(description = "管理后台 - 皮肤购买记录表（积分支付） Response VO")
@Data
@ExcelIgnoreUnannotated
public class KeyboardThemePurchaseRespVO {

    @Schema(description = "主键 ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "15568")
    @ExcelProperty("主键 ID")
    private Long id;

    @Schema(description = "业务订单号", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("业务订单号")
    private String orderNo;

    @Schema(description = "购买用户ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "24047")
    @ExcelProperty("购买用户ID")
    private Long userId;

    @Schema(description = "主题皮肤ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "28953")
    @ExcelProperty("主题皮肤ID")
    private Long themeId;

    @Schema(description = "皮肤原始所需积分", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("皮肤原始所需积分")
    private BigDecimal costPoints;

    @Schema(description = "实际扣除积分", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("实际扣除积分")
    private BigDecimal paidPoints;

    @Schema(description = "支付状态：0待支付 1已支付 2已关闭 3已退款", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @ExcelProperty("支付状态：0待支付 1已支付 2已关闭 3已退款")
    private Short payStatus;

    @Schema(description = "关联的积分扣费流水ID", example = "24853")
    @ExcelProperty("关联的积分扣费流水ID")
    private Long walletTxId;

    @Schema(description = "已退款的积分数量", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("已退款的积分数量")
    private Integer refundPoints;

    @Schema(description = "积分退款完成时间")
    @ExcelProperty("积分退款完成时间")
    private LocalDateTime refundedAt;

    @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("创建时间")
    private LocalDateTime createdAt;

    @Schema(description = "支付完成时间")
    @ExcelProperty("支付完成时间")
    private LocalDateTime paidAt;

    @Schema(description = "更新时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @ExcelProperty("更新时间")
    private LocalDateTime updatedAt;

    @Schema(description = "备注或扩展信息", example = "你说的对")
    @ExcelProperty("备注或扩展信息")
    private String remark;

}