package com.yolo.keyboard.controller.admin.tenantcommission.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 KeyboardTenantCommissionRespVO {

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

    @Schema(description = "内购记录ID", requiredMode = Schema.RequiredMode.REQUIRED, example = "20900")
    @ExcelProperty("内购记录ID")
    private Integer purchaseRecordId;

    @Schema(description = "内购交易ID", example = "30383")
    @ExcelProperty("内购交易ID")
    private String transactionId;

    @Schema(description = "被邀请用户ID（购买用户）", example = "2447")
    @ExcelProperty("被邀请用户ID（购买用户）")
    private Integer inviteeUserId;

    @Schema(description = "邀请人用户ID", example = "1012")
    @ExcelProperty("邀请人用户ID")
    private Long inviterUserId;

    @Schema(description = "内购金额")
    @ExcelProperty("内购金额")
    private BigDecimal purchaseAmount;

    @Schema(description = "分成比例")
    @ExcelProperty("分成比例")
    private BigDecimal commissionRate;

    @Schema(description = "分成金额")
    @ExcelProperty("分成金额")
    private BigDecimal commissionAmount;

    @Schema(description = "状态：PENDING-待结算，SETTLED-已结算，REFUNDED-已退款", example = "2")
    @ExcelProperty("状态：PENDING-待结算，SETTLED-已结算，REFUNDED-已退款")
    private String status;

    @Schema(description = "内购时间")
    @ExcelProperty("内购时间")
    private LocalDateTime purchaseTime;

    @Schema(description = "结算时间")
    @ExcelProperty("结算时间")
    private LocalDateTime settledAt;

    @Schema(description = "关联的余额交易记录ID", example = "29131")
    @ExcelProperty("关联的余额交易记录ID")
    private Long balanceTransactionId;

    @Schema(description = "创建时间")
    @ExcelProperty("创建时间")
    private LocalDateTime createdAt;

    @Schema(description = "更新时间")
    @ExcelProperty("更新时间")
    private LocalDateTime updatedAt;

    @Schema(description = "备注", example = "随便")
    @ExcelProperty("备注")
    private String remark;

}