package beilv.vipCardLog.domain;

import beilv.common.annotation.Excel;
import beilv.common.core.domain.BaseEntity;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.*;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.apache.ibatis.type.Alias;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 充值记录对象 beilv_vip_card_log
 *
 * @author LG
 * @date 2025-11-13
 */
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@ToString
@Alias("VipCardLog")
public class VipCardLog extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 订单编号
     */
    @Excel(name = "订单编号")
    private String id;

    /**
     * 用户id
     */
    @Excel(name = "用户id")
    private String userId;

    /**
     * 订单编号
     */
    @Excel(name = "业务id")
    private String busId;

    /**
     * 订单类型
     */
    @Excel(name = "订单类型")
    private String orderType;

    /**
     * 订单类型
     */
    @Excel(name = "订单类型")
    private String orderTypeText;

    /**
     * 支付状态
     */
    @Excel(name = "支付状态")
    private String paymentStatus;

    /**
     * 支付状态
     */
    @Excel(name = "支付状态")
    private String paymentStatusText;

    /**
     * 支付类型
     */
    @Excel(name = "支付类型")
    private String paymentType;

    /**
     * 支付类型
     */
    @Excel(name = "支付类型")
    private String paymentTypeText;

    /**
     * 支付时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date paymentTime;

    /**
     * 取消时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "取消时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date cancellationTime;

    /**
     * 核销时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "核销时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date verifyTime;

    /**
     * 退款时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @Excel(name = "退款时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    private Date refundTime;

    /**
     * 实际支付金额
     */
    @Excel(name = "实际支付金额")
    private BigDecimal practicalMoney;

    /**
     * 原价
     */
    @Excel(name = "原价")
    private BigDecimal originalPrice;

    /**
     * 会员价
     */
    @Excel(name = "会员价")
    private BigDecimal memberPrice;

    private String paymentId;
    private String username;
    private String mobile;
    private String competitionName;
    private String competitionMobile;
    private BigDecimal refundPrice;

    private String description;

    /**
     *  摄像头监控点
     */
    private String cameraIndexCode;

    /**
     * 代金券信息
     */
    private BigDecimal voucherPrice;
    private String voucherId;

    public VipCardLog(String busId, String orderType, String paymentStatus, Date verifyTime) {
        this.busId = busId;
        this.orderType = orderType;
        this.paymentStatus = paymentStatus;
        this.verifyTime = verifyTime;
    }

    public VipCardLog(String orderId) {
        this.id = orderId;
    }
}
