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

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.yolo.keyboard.framework.tenant.core.aop.TenantIgnore;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 租户分成记录 DO
 * 记录每笔内购订单的分成计算结果
 *
 * @author ziin
 */
@TableName("keyboard_tenant_commission")
@KeySequence("keyboard_tenant_commission_seq")
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@TenantIgnore
public class KeyboardTenantCommissionDO {

    /**
     * 主键
     */
    @TableId
    private Long id;

    /**
     * 内购记录ID
     */
    private Integer purchaseRecordId;

    /**
     * 内购交易ID（唯一标识）
     */
    private String transactionId;

    /**
     * 被邀请用户ID（购买用户）
     */
    private Integer inviteeUserId;

    /**
     * 邀请人用户ID
     */
    private Long inviterUserId;

    /**
     * 收益归属租户ID
     */
    private Long tenantId;

    /**
     * 内购金额
     */
    private BigDecimal purchaseAmount;

    /**
     * 分成比例
     */
    private BigDecimal commissionRate;

    /**
     * 分成金额
     */
    private BigDecimal commissionAmount;

    /**
     * 状态：PENDING-待结算，SETTLED-已结算，REFUNDED-已退款
     */
    private String status;

    /**
     * 内购时间
     */
    private LocalDateTime purchaseTime;

    /**
     * 结算时间
     */
    private LocalDateTime settledAt;

    /**
     * 关联的余额交易记录ID
     */
    private Long balanceTransactionId;

    /**
     * 创建时间
     */
    private LocalDateTime createdAt;

    /**
     * 更新时间
     */
    private LocalDateTime updatedAt;

    /**
     * 可提现时间（结算时间 + 30天）
     */
    private LocalDateTime withdrawableAt;

    /**
     * 是否已处理转可提现：false-未处理，true-已处理
     */
    private Boolean withdrawableProcessed;

    /**
     * 备注
     */
    private String remark;
}
