package beilv.carinformation.domain;

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

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

/**
 * 卡种信息对象 car_information
 *
 * @author ruoyi
 * @date 2025-01-02
 */
public class CarInformation extends BaseEntity {
    private static final long serialVersionUID = 1L;

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

    /**
     * 名称
     */
    @Excel(name = "名称")
    private String name;

    /**
     * 类型
     */
    private String type;

    @Excel(name = "类型")
    private String typeLabel;

    /**
     * 可用次数
     */
    @Excel(name = "可用次数")
    private Integer totalNumber;

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

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

    /**
     * 单次积分
     */
    @Excel(name = "单次积分")
    private Integer point;

    /**
     * 有效期
     */
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
//    @Excel(name = "有效期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expirationDate;

    /**
     * 使用规则
     */
//    @Excel(name = "使用规则")
    private String notes;

    /**
     * 状态（上架；下架）
     */
    private String cardState;

    @Excel(name = "卡种状态")
    private String cardStateLabel;

    public BigDecimal getOriginalPrice() {
        return originalPrice;
    }

    public void setOriginalPrice(BigDecimal originalPrice) {
        this.originalPrice = originalPrice;
    }

    public BigDecimal getMemberPrice() {
        return memberPrice;
    }

    public void setMemberPrice(BigDecimal memberPrice) {
        this.memberPrice = memberPrice;
    }

    public String getCardState() {
        return cardState;
    }

    public void setCardState(String cardState) {
        this.cardState = cardState;
    }

    public String getCardStateLabel() {
        return cardStateLabel;
    }

    public void setCardStateLabel(String cardStateLabel) {
        this.cardStateLabel = cardStateLabel;
    }

    public String getTypeLabel() {
        return typeLabel;
    }

    public void setTypeLabel(String typeLabel) {
        this.typeLabel = typeLabel;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getId() {
        return id;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getType() {
        return type;
    }

    public void setTotalNumber(Integer totalNumber) {
        this.totalNumber = totalNumber;
    }

    public Integer getTotalNumber() {
        return totalNumber;
    }

    public void setPoint(Integer point) {
        this.point = point;
    }

    public Integer getPoint() {
        return point;
    }

    public void setExpirationDate(Date expirationDate) {
        this.expirationDate = expirationDate;
    }

    public Date getExpirationDate() {
        return expirationDate;
    }

    public void setNotes(String notes) {
        this.notes = notes;
    }

    public String getNotes() {
        return notes;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("name", getName())
                .append("type", getType())
                .append("totalNumber", getTotalNumber())
                .append("point", getPoint())
                .append("expirationDate", getExpirationDate())
                .append("notes", getNotes())
                .append("cardState", getCardState())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("updateBy", getUpdateBy())
                .append("updateTime", getUpdateTime())
                .toString();
    }
}
