package com.xmomen.module.pick.entity;

import com.xmomen.framework.mybatis.model.BaseMybatisModel;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Version;

/**
 * TbRechargeLog 类是一个实体类，对应数据库中的 tb_recharge_log 表。
 * 该类用于封装充值记录的相关信息，继承自 BaseMybatisModel，并且使用了 JPA 注解来映射数据库表结构。
 */
@Entity
@Table(name = "tb_recharge_log")
public class TbRechargeLog extends BaseMybatisModel {
    /**
     * 充值记录的唯一标识，作为主键，用于在数据库中唯一确定一条充值记录。
     */
    private Integer id;

    /**
     * 充值所使用的卡号，关联到具体的卡，用于识别是哪张卡进行了充值操作。
     */
    private String couponNo;

    /**
     * 充值的金额，使用 BigDecimal 类型以保证精确的数值计算。
     */
    private BigDecimal rechargePrice;

    /**
     * 充值的具体时间，记录充值操作发生的时刻。
     */
    private Date rechargeDate;

    /**
     * 进行充值操作的人员标识，用于记录是谁执行了本次充值。
     */
    private Integer rechargeUser;

    /**
     * 充值的地点标识，用于记录充值操作是在哪个地点完成的。
     */
    private Integer rechargePlace;

    /**
     * 获取充值记录的主键 ID。
     *
     * @return 充值记录的主键 ID
     */
    @Column(name = "ID")
    @Id
    @GeneratedValue(generator = "UUIDGenerator")
    public Integer getId() {
        return id;
    }

    /**
     * 设置充值记录的主键 ID。
     * 如果传入的 ID 为 null，则从有效字段列表中移除该字段；
     * 否则，将该字段添加到有效字段列表中。
     *
     * @param id 要设置的充值记录的主键 ID
     */
    public void setId(Integer id) {
        this.id = id;
        if (id == null) {
            // 当 id 为 null 时，移除该字段的有效性标记
            removeValidField("id");
            return;
        }
        // 当 id 不为 null 时，添加该字段的有效性标记
        addValidField("id");
    }

    /**
     * 获取充值所使用的卡号。
     *
     * @return 充值所使用的卡号
     */
    @Column(name = "COUPON_NO")
    public String getCouponNo() {
        return couponNo;
    }

    /**
     * 设置充值所使用的卡号。
     * 如果传入的卡号为 null，则从有效字段列表中移除该字段；
     * 否则，将该字段添加到有效字段列表中。
     *
     * @param couponNo 要设置的充值所使用的卡号
     */
    public void setCouponNo(String couponNo) {
        this.couponNo = couponNo;
        if (couponNo == null) {
            // 当 couponNo 为 null 时，移除该字段的有效性标记
            removeValidField("couponNo");
            return;
        }
        // 当 couponNo 不为 null 时，添加该字段的有效性标记
        addValidField("couponNo");
    }

    /**
     * 获取充值的金额。
     *
     * @return 充值的金额
     */
    @Column(name = "RECHARGE_PRICE")
    public BigDecimal getRechargePrice() {
        return rechargePrice;
    }

    /**
     * 设置充值的金额。
     * 如果传入的充值金额为 null，则从有效字段列表中移除该字段；
     * 否则，将该字段添加到有效字段列表中。
     *
     * @param rechargePrice 要设置的充值的金额
     */
    public void setRechargePrice(BigDecimal rechargePrice) {
        this.rechargePrice = rechargePrice;
        if (rechargePrice == null) {
            // 当 rechargePrice 为 null 时，移除该字段的有效性标记
            removeValidField("rechargePrice");
            return;
        }
        // 当 rechargePrice 不为 null 时，添加该字段的有效性标记
        addValidField("rechargePrice");
    }

    /**
     * 获取充值的时间。
     *
     * @return 充值的时间
     */
    @Column(name = "RECHARGE_DATE")
    public Date getRechargeDate() {
        return rechargeDate;
    }

    /**
     * 设置充值的时间。
     * 如果传入的充值时间为 null，则从有效字段列表中移除该字段；
     * 否则，将该字段添加到有效字段列表中。
     *
     * @param rechargeDate 要设置的充值的时间
     */
    public void setRechargeDate(Date rechargeDate) {
        this.rechargeDate = rechargeDate;
        if (rechargeDate == null) {
            // 当 rechargeDate 为 null 时，移除该字段的有效性标记
            removeValidField("rechargeDate");
            return;
        }
        // 当 rechargeDate 不为 null 时，添加该字段的有效性标记
        addValidField("rechargeDate");
    }

    /**
     * 获取进行充值操作的人员标识。
     *
     * @return 进行充值操作的人员标识
     */
    @Column(name = "RECHARGE_USER")
    public Integer getRechargeUser() {
        return rechargeUser;
    }

    /**
     * 设置进行充值操作的人员标识。
     * 如果传入的人员标识为 null，则从有效字段列表中移除该字段；
     * 否则，将该字段添加到有效字段列表中。
     *
     * @param rechargeUser 要设置的进行充值操作的人员标识
     */
    public void setRechargeUser(Integer rechargeUser) {
        this.rechargeUser = rechargeUser;
        if (rechargeUser == null) {
            // 当 rechargeUser 为 null 时，移除该字段的有效性标记
            removeValidField("rechargeUser");
            return;
        }
        // 当 rechargeUser 不为 null 时，添加该字段的有效性标记
        addValidField("rechargeUser");
    }

    /**
     * 获取充值的地点标识。
     *
     * @return 充值的地点标识
     */
    @Column(name = "RECHARGE_PLACE")
    public Integer getRechargePlace() {
        return rechargePlace;
    }

    /**
     * 设置充值的地点标识。
     * 如果传入的地点标识为 null，则从有效字段列表中移除该字段；
     * 否则，将该字段添加到有效字段列表中。
     *
     * @param rechargePlace 要设置的充值的地点标识
     */
    public void setRechargePlace(Integer rechargePlace) {
        this.rechargePlace = rechargePlace;
        if (rechargePlace == null) {
            // 当 rechargePlace 为 null 时，移除该字段的有效性标记
            removeValidField("rechargePlace");
            return;
        }
        // 当 rechargePlace 不为 null 时，添加该字段的有效性标记
        addValidField("rechargePlace");
    }
}