package com.fs.hisStore.domain;

import com.fs.common.annotation.Excel;
import com.fs.common.core.domain.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Map;

/**
 * 商品属性值对象 fs_store_product_attr_value
 *
 * @author fs
 * @date 2022-03-15
 */
@EqualsAndHashCode(callSuper = true)
@Data
public class FsStoreProductAttrValueScrm extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** 商品ID */
    @Excel(name = "商品ID")
    private Long productId;

    /** 商品属性索引值 (attr_value|attr_value[|....]) */
    @Excel(name = "商品属性索引值 (attr_value|attr_value[|....])")
    private String sku;

    /** 属性对应的库存 */
    @Excel(name = "属性对应的库存")
    private Integer stock;

    /** 销量 */
    @Excel(name = "销量")
    private Integer sales;

    /** 属性金额 */
    @Excel(name = "属性金额")
    private BigDecimal price;

    /** 图片 */
    @Excel(name = "图片")
    private String image;

    /** 成本价 */
    @Excel(name = "成本价")
    private BigDecimal cost;

    /** 商品条码 */
    @Excel(name = "商品条码")
    private String barCode;

    @Excel(name = "组合条码")
    private String groupBarCode;

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

    /** 重量 */
    @Excel(name = "重量")
    private BigDecimal weight;

    /** 体积 */
    @Excel(name = "体积")
    private BigDecimal volume;

    /** 一级返佣 */
    @Excel(name = "一级返佣")
    private BigDecimal brokerage;

    /** 二级返佣 */
    @Excel(name = "二级返佣")
    private BigDecimal brokerageTwo;

    @Excel(name = "三级返佣")
    private BigDecimal brokerageThree;

    /**
     * 是否开启定金类型（0否，1是）
     **/
    private Long hasDepositFeatureType;

    /**
     * 定金
     **/
    private BigDecimal depositAmount;

    /**
     * 代付金额
     **/
    private BigDecimal onBehalfPaymentAmount;

    /**
     * 需要多少积分兑换
     */
    @Excel(name = "需要多少积分兑换")
    private Integer integral;

    private BigDecimal agentPrice;

    private Map<String, String> detail;


    @Excel(name = "医生佣金")
    private BigDecimal doctorBrokerage;

    public Map<String, String> getDetail() {
        return detail;
    }

    /** 需要多少积分兑换 */
    @Excel(name = "需要多少积分兑换")
    private Integer giveIntegral;

    @Excel(name = "限购量")
    private Integer purchaseLimit;

    public Integer getPurchaseLimit() {
        return purchaseLimit;
    }

    public void setPurchaseLimit(Integer purchaseLimit) {
        this.purchaseLimit = purchaseLimit;
    }

    public void setDetail(Map<String, String> detail) {
        this.detail = detail;
    }

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

    public Long getId() {
        return id;
    }

    public void setProductId(Long productId) {
        this.productId = productId;
    }

    public Long getProductId() {
        return productId;
    }

    public void setSku(String sku) {
        this.sku = sku;
    }

    public String getSku() {
        return sku;
    }

    public void setStock(Integer stock) {
        this.stock = stock;
    }

    public Integer getStock() {
        return stock;
    }

    public void setSales(Integer sales) {
        this.sales = sales;
    }

    public Integer getSales() {
        return sales;
    }

    public void setPrice(BigDecimal price) {
        this.price = price;
    }

    public BigDecimal getPrice() {
        return price;
    }

    public void setImage(String image) {
        this.image = image;
    }

    public String getImage() {
        return image;
    }

    public void setCost(BigDecimal cost) {
        this.cost = cost;
    }

    public BigDecimal getCost() {
        return cost;
    }

    public void setBarCode(String barCode) {
        this.barCode = barCode;
    }

    public String getBarCode() {
        return barCode;
    }

    public void setOtPrice(BigDecimal otPrice) {
        this.otPrice = otPrice;
    }

    public BigDecimal getOtPrice() {
        return otPrice;
    }

    public void setWeight(BigDecimal weight) {
        this.weight = weight;
    }

    public BigDecimal getWeight() {
        return weight;
    }

    public void setVolume(BigDecimal volume) {
        this.volume = volume;
    }

    public BigDecimal getVolume() {
        return volume;
    }

    public void setBrokerage(BigDecimal brokerage) {
        this.brokerage = brokerage;
    }

    public BigDecimal getBrokerage() {
        return brokerage;
    }

    public void setBrokerageTwo(BigDecimal brokerageTwo) {
        this.brokerageTwo = brokerageTwo;
    }

    public BigDecimal getBrokerageTwo() {
        return brokerageTwo;
    }

    public void setIntegral(Integer integral) {
        this.integral = integral;
    }

    public Integer getIntegral() {
        return integral;
    }


    public Long getHasDepositFeatureType() {
        return hasDepositFeatureType;
    }

    public void setHasDepositFeatureType(Long hasDepositFeatureType) {
        this.hasDepositFeatureType = hasDepositFeatureType;
    }

    public BigDecimal getDepositAmount() {
        return depositAmount;
    }

    public void setDepositAmount(BigDecimal depositAmount) {
        this.depositAmount = depositAmount;
    }

    public BigDecimal getOnBehalfPaymentAmount() {
        return onBehalfPaymentAmount;
    }

    public void setOnBehalfPaymentAmount(BigDecimal onBehalfPaymentAmount) {
        this.onBehalfPaymentAmount = onBehalfPaymentAmount;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("productId", getProductId())
                .append("sku", getSku())
                .append("stock", getStock())
                .append("sales", getSales())
                .append("hasDepositFeatureType", getHasDepositFeatureType())
                .append("depositAmount", getDepositAmount())
                .append("onBehalfPaymentAmount", getOnBehalfPaymentAmount())
                .append("price", getPrice())
                .append("image", getImage())
                .append("cost", getCost())
                .append("barCode", getBarCode())
                .append("otPrice", getOtPrice())
                .append("weight", getWeight())
                .append("volume", getVolume())
                .append("brokerage", getBrokerage())
                .append("brokerageTwo", getBrokerageTwo())
                .append("integral", getIntegral())
                .toString();
    }
}
