
package com.tmerclub.cloud.common.order.vo;

import com.tmerclub.cloud.common.order.bo.DeliveryModeBO;
import com.tmerclub.cloud.common.product.vo.GiveawayVO;
import com.tmerclub.cloud.common.product.vo.StockPointSkuVO;
import io.swagger.v3.oas.annotations.media.Schema;

import java.io.Serial;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * @author tmerclub
 * @date 2020-11-20 15:47:32
 */
public class ShopCartItemVO implements Serializable {
    public ShopCartItemVO() {
    }

    public ShopCartItemVO(Long userId, Long spuId, Long skuId, Integer count) {
        this.userId = userId;
        this.spuId = spuId;
        this.skuId = skuId;
        this.count = count;
    }

    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "加入购物车时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private Date createTime;

    @Schema(description = "购物车ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long cartItemId;

    @Schema(description = "店铺ID")
    private Long shopId;

    @Schema(description = "产品ID")
    private Long spuId;

    @Schema(description = "SkuID")
    private Long skuId;

    @Schema(description = "库存点id 自提：自提点id， 其他：仓库id")
    private Long stockPointId;

    @Schema(description = "库存点类型 1仓库 2门店 ")
    private Integer stockPointType;

    @Schema(description = "关联供应商商品id")
    private Long supplierSpuId;

    @Schema(description = "关联供应商skuId")
    private Long supplierSkuId;

    @Schema(description = "分类id")
    private Long categoryId;

    @Schema(description = "用户ID")
    private Long userId;

    @Schema(description = "商品名称")
    private String spuName;

    @Schema(description = "sku名称")
    private String skuName;

    @Schema(description = "商品编码")
    private String spuCode;

    @Schema(description = "sku编码")
    private String partyCode;

    @Schema(description = "购物车产品个数")
    private Integer count;

    @Schema(description = "满减活动ID")
    private Long discountId;

    @Schema(description = "是否已经勾选")
    private Integer isChecked;

//    @Schema(description = "售价，加入购物车时的商品价格")
//    private Long priceFee;

    @Schema(description = "当前商品价格")
    private Long skuPriceFee;

    @Schema(description = "当前总价格(商品价格 * 数量)")
    private Long totalPriceFee;

    @Schema(description = "当前总价格(商品价格 * 数量)(带小数)")
    private Long totalPrice;

    @Schema(description = "配送方式json")
    private String deliveryMode;

    @Schema(description = "配送方式对象")
    private DeliveryModeBO deliveryModeBO;

    @Schema(description = "运费模板id")
    private Long deliveryTemplateId;

    @Schema(description = "固定运费金额")
    private Long deliveryAmount;

    @Schema(description = "供应商的运费模板id")
    private Long supplierDeliveryTemplateId;

    @Schema(description = "供应商的固定运费金额")
    private Long supplierDeliveryAmount;

    @Schema(description = "商品重量")
    private BigDecimal weight;

    @Schema(description = "商品体积")
    private BigDecimal volume;

    @Schema(description = "商品图片")
    private String imgUrl;

    @Schema(description = "是否已收藏")
    private String isCollection;

    @Schema(description = "积分价格", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long scoreFee;

    @Schema(description = "产品所需积分", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long scorePrice;

    @Schema(description = "总金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long totalAmount;

    @Schema(description = "总采购价", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long totalPurchaseAmount;

    @Schema(description = "采购价", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long supplierPriceFee;

    @Schema(description = "商品实际金额 = 商品总金额 - 分摊的优惠金额 - 分摊的积分抵现金额")
    private Long actualTotal;

    @Schema(description = "sku规格信息列表")
    private List<OrderSkuLangVO> skuLangList;

    @Schema(description = "spu名称列表")
    private List<OrderSpuLangVO> spuLangList;

    @Schema(description = "供应商sku规格信息列表")
    private List<OrderSkuLangVO> supplierSkuLangList;

    @Schema(description = "供应商spu名称列表")
    private List<OrderSpuLangVO> supplierSpuLangList;

    @Schema(description = "分销员用户id")
    private Long distributionUserId;

    @Schema(description = "订单项id")
    private Long orderItemId;

    /**
     * 这里的分摊金额在重算之前，即以下代码执行之前，一直都是商家的分摊金额
     * confirmOrderManager.recalculateAmountWhenFinishingCalculatePlatform(shopCartOrderMerger);
     * 执行完毕之后，这里的分摊金额就变成了平台 + 商家的分摊金额
     */
    @Schema(description = "分摊的优惠金额")
    private Long shareReduce;

    @Schema(description = "平台分摊的优惠金额")
    private Long platformShareReduce;

    @Schema(description = "能否分摊优惠券优惠金额(1可以 0不可以)")
    private Integer isShareReduce;


    @Schema(description = "等级优惠金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long levelReduce;

    @Schema(description = "积分抵扣", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long scoreReduce;

    @Schema(description = "平台优惠券优惠金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long platformCouponAmount;

    @Schema(description = "商家优惠券优惠金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long shopCouponAmount;

    @Schema(description = "满减优惠金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long discountAmount;

    @Schema(description = "平台运费减免金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long platformFreeFreightAmount;

    @Schema(description = "商家运费减免金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long freeFreightAmount;
    @Schema(description = "分账比例", requiredMode = Schema.RequiredMode.REQUIRED)
    private Double rate;
    @Schema(description = "供应商分账比例", requiredMode = Schema.RequiredMode.REQUIRED)
    private Double supplierRate;

    @Schema(description = "平台佣金(商品实际金额 * 分账比例)", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long platformCommission;

    @Schema(description = "供应商佣金金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long purchasePlatformCommission;

    @Schema(description = "供应商商品类型 0.否 1.是 2.商家代销")
    private Integer supplierSpuType;

    @Schema(description = "商品类型(0普通商品 1拼团 2秒杀 3积分)")
    private Integer spuType;

    @Schema(description = "发货方式 1.供应商发货 2.仓库发货")
    private Integer supplierDeliveryType;

    @Schema(description = "供应商id")
    private Long supplierId;

    @Schema(description = "计量单位")
    private String measureUnit;

    @Schema(description = "代销商品规格选择状态，1: 全选 2：部分选择")
    private Integer skuChoiceStatus;

    @Schema(description = "赠品信息")
    private GiveawayVO giveaway;

    @Schema(description = "赠品退货价")
    private Long giveawayRefundPrice;
    @Schema(description = "套餐id")
    private Long comboId;

    @Schema(description = "套餐数量")
    private Integer comboCount;

    @Schema(description = "主购物车id（套餐）")
    private Long parentCartItemId;

    @Schema(description = "预售类型 -1.未开启预售 0.全款预售类型 1.定金预售")
    private Integer preSaleType;

    @Schema(description = "定金金额")
    private Long depositAmount;

    @Schema(description = "实际定金金额")
    private Long actualDepositAmount;

    @Schema(description = "定金膨胀金额")
    private Long depositExpansionAmount;

    @Schema(description = "定金优惠金额")
    private Long depositReduceAmount;

    @Schema(description = "尾款金额")
    private Long balanceAmount;

    @Schema(description = "实际尾款金额")
    private Long actualBalanceAmount;

    @Schema(description = "尾款支付开始时间")
    private Date balanceStartTime;

    @Schema(description = "尾款支付结束时间")
    private Date balanceEndTime;

    @Schema(description = "预售发货类型 -1.固定时间 x.尾款支付后x天发货")
    private Integer preSaleDeliveryType;

    @Schema(description = "预售发货时间")
    private Date preSaleDeliveryTime;

    @Schema(description = "是否为主商品（套餐）1 是 -1 搭配商品")
    private Integer isMainProd;

    @Schema(description = "sku 套餐价格")
    private Long matchingPrice;

    @Schema(description = "套餐优惠金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long comboAmount;

    @Schema(description = "商品类别 0.实物商品 1. 虚拟商品 2.组合商品")
    private Integer mold;

    @Schema(description = "是否可以退款 1.可以 0不可以")
    private Integer isRefund;

    @Schema(description = "虚拟商品的留言备注")
    private String virtualRemark;

    @Schema(description = "虚拟商品留言备注")
    private List<VirtualRemarkVO> virtualRemarkList;

    @Schema(description = "是否在配送范围内)否")
    private Boolean isDelivery;

    @Schema(description = "核销次数 -1.多次核销 0.无需核销 1.单次核销")
    private Integer writeOffNum;

    @Schema(description = "多次核销次数 -1.无限次")
    private Integer writeOffMultipleCount;

    @Schema(description = "核销有效期 -1.长期有效 0.自定义  x.x天内有效")
    private Integer writeOffTime;

    @Schema(description = "核销开始时间")
    private Date writeOffStart;

    @Schema(description = "核销结束时间")
    private Date writeOffEnd;

    @Schema(description = "店铺名称")
    private String shopName;

    @Schema(description = "供应商商品图片")
    private String supplierUrl;

    @Schema(description = "组合商品信息")
    private List<ShopCartItemVO> comboShopCartItems;

    @Schema(description = "主sku,组合商品独有")
    private Long mainComboSkuId;

    @Schema(description = "主spu,组合商品独有")
    private Long mainComboSpuId;

    @Schema(description = "主spu名称,组合商品独有")
    private Long mainComboSpuNmae;

    @Schema(description = "主sku名称,组合商品独有")
    private Long mainComboSkuName;

    @Schema(description = "库存关联列表")
    private List<StockPointSkuVO> stockPointList;

    @Schema(description = "仓库列表")
    private List<WarehouseVO> warehouseList;

    @Schema(description = "赠品列表")
    private List<ShopCartItemVO> giveawayShopCartItemList;


    public Long getMainComboSkuName() {
        return mainComboSkuName;
    }

    public void setMainComboSkuName(Long mainComboSkuName) {
        this.mainComboSkuName = mainComboSkuName;
    }

    public Long getMainComboSpuNmae() {
        return mainComboSpuNmae;
    }

    public void setMainComboSpuNmae(Long mainComboSpuNmae) {
        this.mainComboSpuNmae = mainComboSpuNmae;
    }

    public Long getMainComboSpuId() {
        return mainComboSpuId;
    }

    public void setMainComboSpuId(Long mainComboSpuId) {
        this.mainComboSpuId = mainComboSpuId;
    }

    public Long getMainComboSkuId() {
        return mainComboSkuId;
    }

    public void setMainComboSkuId(Long mainComboSkuId) {
        this.mainComboSkuId = mainComboSkuId;
    }

    public List<ShopCartItemVO> getComboShopCartItems() {
        return comboShopCartItems;
    }

    public void setComboShopCartItems(List<ShopCartItemVO> combSpus) {
        this.comboShopCartItems = combSpus;
    }

    public Long getDeliveryAmount() {
        return deliveryAmount;
    }

    public void setDeliveryAmount(Long deliveryAmount) {
        this.deliveryAmount = deliveryAmount;
    }

    public Long getSupplierDeliveryAmount() {
        return supplierDeliveryAmount;
    }

    public void setSupplierDeliveryAmount(Long supplierDeliveryAmount) {
        this.supplierDeliveryAmount = supplierDeliveryAmount;
    }

    public String getSupplierUrl() {
        return supplierUrl;
    }

    public void setSupplierUrl(String supplierUrl) {
        this.supplierUrl = supplierUrl;
    }

    public String getShopName() {
        return shopName;
    }

    public void setShopName(String shopName) {
        this.shopName = shopName;
    }

    public Integer getSpuType() {
        return spuType;
    }

    public void setSpuType(Integer spuType) {
        this.spuType = spuType;
    }

    public Boolean getDelivery() {
        return isDelivery;
    }

    public void setDelivery(Boolean delivery) {
        isDelivery = delivery;
    }

    public Integer getWriteOffNum() {
        return writeOffNum;
    }

    public void setWriteOffNum(Integer writeOffNum) {
        this.writeOffNum = writeOffNum;
    }

    public Integer getWriteOffMultipleCount() {
        return writeOffMultipleCount;
    }

    public void setWriteOffMultipleCount(Integer writeOffMultipleCount) {
        this.writeOffMultipleCount = writeOffMultipleCount;
    }

    public Integer getWriteOffTime() {
        return writeOffTime;
    }

    public void setWriteOffTime(Integer writeOffTime) {
        this.writeOffTime = writeOffTime;
    }

    public Date getWriteOffStart() {
        return writeOffStart;
    }

    public void setWriteOffStart(Date writeOffStart) {
        this.writeOffStart = writeOffStart;
    }

    public Date getWriteOffEnd() {
        return writeOffEnd;
    }

    public void setWriteOffEnd(Date writeOffEnd) {
        this.writeOffEnd = writeOffEnd;
    }

    public Long getMatchingPrice() {
        return matchingPrice;
    }

    public void setMatchingPrice(Long matchingPrice) {
        this.matchingPrice = matchingPrice;
    }

    public Integer getMold() {
        return mold;
    }

    public void setMold(Integer mold) {
        this.mold = mold;
    }

    public Long getComboAmount() {
        return comboAmount;
    }

    public void setComboAmount(Long comboAmount) {
        this.comboAmount = comboAmount;
    }


    public Integer getIsMainProd() {
        return isMainProd;
    }

    public void setIsMainProd(Integer isMainProd) {
        this.isMainProd = isMainProd;
    }

    public Boolean getIsDelivery() {
        return isDelivery;
    }

    public void setIsDelivery(Boolean delivery) {
        isDelivery = delivery;
    }

    public List<VirtualRemarkVO> getVirtualRemarkList() {
        return virtualRemarkList;
    }

    public void setVirtualRemarkList(List<VirtualRemarkVO> virtualRemarkList) {
        this.virtualRemarkList = virtualRemarkList;
    }

    public Integer getIsRefund() {
        return isRefund;
    }

    public void setIsRefund(Integer isRefund) {
        this.isRefund = isRefund;
    }

    public String getVirtualRemark() {
        return virtualRemark;
    }

    public void setVirtualRemark(String virtualRemark) {
        this.virtualRemark = virtualRemark;
    }

    public Long getActualDepositAmount() {
        return actualDepositAmount;
    }

    public void setActualDepositAmount(Long actualDepositAmount) {
        this.actualDepositAmount = actualDepositAmount;
    }

    public Long getActualBalanceAmount() {
        return actualBalanceAmount;
    }

    public void setActualBalanceAmount(Long actualBalanceAmount) {
        this.actualBalanceAmount = actualBalanceAmount;
    }

    public Date getPreSaleDeliveryTime() {
        return preSaleDeliveryTime;
    }

    public void setPreSaleDeliveryTime(Date preSaleDeliveryTime) {
        this.preSaleDeliveryTime = preSaleDeliveryTime;
    }

    public Integer getPreSaleDeliveryType() {
        return preSaleDeliveryType;
    }

    public void setPreSaleDeliveryType(Integer preSaleDeliveryType) {
        this.preSaleDeliveryType = preSaleDeliveryType;
    }

    public Long getBalanceAmount() {
        return balanceAmount;
    }

    public void setBalanceAmount(Long balanceAmount) {
        this.balanceAmount = balanceAmount;
    }

    public Integer getComboCount() {
        return comboCount;
    }

    public void setComboCount(Integer comboCount) {
        this.comboCount = comboCount;
    }

    public Long getParentCartItemId() {
        return parentCartItemId;
    }

    public void setParentCartItemId(Long parentCartItemId) {
        this.parentCartItemId = parentCartItemId;
    }

    public Long getComboId() {
        return comboId;
    }

    public void setComboId(Long comboId) {
        this.comboId = comboId;
    }

    private List<DiscountOrderVO> discounts;

    public Long getDepositAmount() {
        return depositAmount;
    }

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

    public Long getDepositExpansionAmount() {
        return depositExpansionAmount;
    }

    public void setDepositExpansionAmount(Long depositExpansionAmount) {
        this.depositExpansionAmount = depositExpansionAmount;
    }

    public Long getDepositReduceAmount() {
        return depositReduceAmount;
    }

    public void setDepositReduceAmount(Long depositReduceAmount) {
        this.depositReduceAmount = depositReduceAmount;
    }

    public Date getBalanceStartTime() {
        return balanceStartTime;
    }

    public void setBalanceStartTime(Date balanceStartTime) {
        this.balanceStartTime = balanceStartTime;
    }

    public Date getBalanceEndTime() {
        return balanceEndTime;
    }

    public void setBalanceEndTime(Date balanceEndTime) {
        this.balanceEndTime = balanceEndTime;
    }

    public Integer getPreSaleType() {
        return preSaleType;
    }

    public void setPreSaleType(Integer preSaleType) {
        this.preSaleType = preSaleType;
    }

    public GiveawayVO getGiveaway() {
        return giveaway;
    }

    public void setGiveaway(GiveawayVO giveaway) {
        this.giveaway = giveaway;
    }

    public Long getPurchasePlatformCommission() {
        return purchasePlatformCommission;
    }

    public void setPurchasePlatformCommission(Long purchasePlatformCommission) {
        this.purchasePlatformCommission = purchasePlatformCommission;
    }

    public Double getSupplierRate() {
        return supplierRate;
    }

    public void setSupplierRate(Double supplierRate) {
        this.supplierRate = supplierRate;
    }

    public Long getSupplierSpuId() {
        return supplierSpuId;
    }

    public void setSupplierSpuId(Long supplierSpuId) {
        this.supplierSpuId = supplierSpuId;
    }

    public Long getSupplierSkuId() {
        return supplierSkuId;
    }

    public void setSupplierSkuId(Long supplierSkuId) {
        this.supplierSkuId = supplierSkuId;
    }

    public String getSpuCode() {
        return spuCode;
    }

    public void setSpuCode(String spuCode) {
        this.spuCode = spuCode;
    }

    public String getPartyCode() {
        return partyCode;
    }

    public void setPartyCode(String partyCode) {
        this.partyCode = partyCode;
    }

    public Long getSupplierPriceFee() {
        return supplierPriceFee;
    }

    public void setSupplierPriceFee(Long supplierPriceFee) {
        this.supplierPriceFee = supplierPriceFee;
    }

    public Long getTotalPurchaseAmount() {
        return totalPurchaseAmount;
    }

    public void setTotalPurchaseAmount(Long totalPurchaseAmount) {
        this.totalPurchaseAmount = totalPurchaseAmount;
    }

    public Long getSupplierDeliveryTemplateId() {
        return supplierDeliveryTemplateId;
    }

    public void setSupplierDeliveryTemplateId(Long supplierDeliveryTemplateId) {
        this.supplierDeliveryTemplateId = supplierDeliveryTemplateId;
    }

    public Integer getSupplierSpuType() {
        return supplierSpuType;
    }

    public void setSupplierSpuType(Integer supplierSpuType) {
        this.supplierSpuType = supplierSpuType;
    }

    public Integer getSupplierDeliveryType() {
        return supplierDeliveryType;
    }

    public void setSupplierDeliveryType(Integer supplierDeliveryType) {
        this.supplierDeliveryType = supplierDeliveryType;
    }

    public Long getSupplierId() {
        return supplierId;
    }

    public void setSupplierId(Long supplierId) {
        this.supplierId = supplierId;
    }

    public String getMeasureUnit() {
        return measureUnit;
    }

    public void setMeasureUnit(String measureUnit) {
        this.measureUnit = measureUnit;
    }

    public Integer getSkuChoiceStatus() {
        return skuChoiceStatus;
    }

    public void setSkuChoiceStatus(Integer skuChoiceStatus) {
        this.skuChoiceStatus = skuChoiceStatus;
    }

    public Long getShareReduce() {
        return shareReduce;
    }

    public void setShareReduce(Long shareReduce) {
        this.shareReduce = shareReduce;
    }

    public Long getPlatformShareReduce() {
        return platformShareReduce;
    }

    public void setPlatformShareReduce(Long platformShareReduce) {
        this.platformShareReduce = platformShareReduce;
    }

    public String getIsCollection() {
        return isCollection;
    }

    public void setIsCollection(String isCollection) {
        this.isCollection = isCollection;
    }

    public Long getCartItemId() {
        return cartItemId;
    }

    public void setCartItemId(Long cartItemId) {
        this.cartItemId = cartItemId;
    }

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public Long getSpuId() {
        return spuId;
    }

    public void setSpuId(Long spuId) {
        this.spuId = spuId;
    }

    public Long getSkuId() {
        return skuId;
    }

    public void setSkuId(Long skuId) {
        this.skuId = skuId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getSpuName() {
        return spuName;
    }

    public void setSpuName(String spuName) {
        this.spuName = spuName;
    }

    public String getSkuName() {
        return skuName;
    }

    public void setSkuName(String skuName) {
        this.skuName = skuName;
    }

    public Integer getCount() {
        return count;
    }

    public void setCount(Integer count) {
        this.count = count;
    }

    public Long getDiscountId() {
        return discountId;
    }

    public void setDiscountId(Long discountId) {
        this.discountId = discountId;
    }

//    public Long getPriceFee() {
//        return priceFee;
//    }
//
//    public void setPriceFee(Long priceFee) {
//        this.priceFee = priceFee;
//    }

    public Long getSkuPriceFee() {
        return skuPriceFee;
    }

    public void setSkuPriceFee(Long skuPriceFee) {
        this.skuPriceFee = skuPriceFee;
    }

    public String getDeliveryMode() {
        return deliveryMode;
    }

    public void setDeliveryMode(String deliveryMode) {
        this.deliveryMode = deliveryMode;
    }

    public String getImgUrl() {
        return imgUrl;
    }

    public void setImgUrl(String imgUrl) {
        this.imgUrl = imgUrl;
    }

    public Long getScorePrice() {
        return scorePrice;
    }

    public void setScorePrice(Long scorePrice) {
        this.scorePrice = scorePrice;
    }

    public List<OrderSkuLangVO> getSkuLangList() {
        return skuLangList;
    }

    public void setSkuLangList(List<OrderSkuLangVO> skuLangList) {
        this.skuLangList = skuLangList;
    }

    public List<OrderSpuLangVO> getSpuLangList() {
        return spuLangList;
    }

    public void setSpuLangList(List<OrderSpuLangVO> spuLangList) {
        this.spuLangList = spuLangList;
    }

    public List<OrderSkuLangVO> getSupplierSkuLangList() {
        return supplierSkuLangList;
    }

    public void setSupplierSkuLangList(List<OrderSkuLangVO> supplierSkuLangList) {
        this.supplierSkuLangList = supplierSkuLangList;
    }

    public List<OrderSpuLangVO> getSupplierSpuLangList() {
        return supplierSpuLangList;
    }

    public void setSupplierSpuLangList(List<OrderSpuLangVO> supplierSpuLangList) {
        this.supplierSpuLangList = supplierSpuLangList;
    }

    public Long getTotalAmount() {
        return totalAmount;
    }

    public void setTotalAmount(Long totalAmount) {
        this.totalAmount = totalAmount;
    }

    public Long getTotalPriceFee() {
        return totalPriceFee;
    }

    public void setTotalPriceFee(Long totalPriceFee) {
        this.totalPriceFee = totalPriceFee;
    }

    public Long getTotalPrice() {
        return totalPrice;
    }

    public void setTotalPrice(Long totalPrice) {
        this.totalPrice = totalPrice;
    }

    public Long getDistributionUserId() {
        return distributionUserId;
    }

    public void setDistributionUserId(Long distributionUserId) {
        this.distributionUserId = distributionUserId;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Long getLevelReduce() {
        return levelReduce;
    }

    public void setLevelReduce(Long levelReduce) {
        this.levelReduce = levelReduce;
    }

    public Long getScoreReduce() {
        return scoreReduce;
    }

    public void setScoreReduce(Long scoreReduce) {
        this.scoreReduce = scoreReduce;
    }

    public DeliveryModeBO getDeliveryModeBO() {
        return deliveryModeBO;
    }

    public void setDeliveryModeBO(DeliveryModeBO deliveryModeBO) {
        this.deliveryModeBO = deliveryModeBO;
    }

    public Long getActualTotal() {
        return actualTotal;
    }

    public void setActualTotal(Long actualTotal) {
        this.actualTotal = actualTotal;
    }

    public List<DiscountOrderVO> getDiscounts() {
        return discounts;
    }

    public void setDiscounts(List<DiscountOrderVO> discounts) {
        this.discounts = discounts;
    }

    public Integer getIsChecked() {
        return isChecked;
    }

    public void setIsChecked(Integer isChecked) {
        this.isChecked = isChecked;
    }

    public Long getDeliveryTemplateId() {
        return deliveryTemplateId;
    }

    public void setDeliveryTemplateId(Long deliveryTemplateId) {
        this.deliveryTemplateId = deliveryTemplateId;
    }

    public BigDecimal getWeight() {
        return weight;
    }

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

    public BigDecimal getVolume() {
        return volume;
    }

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

    public Integer getIsShareReduce() {
        return isShareReduce;
    }

    public void setIsShareReduce(Integer isShareReduce) {
        this.isShareReduce = isShareReduce;
    }

    public Long getCategoryId() {
        return categoryId;
    }

    public void setCategoryId(Long categoryId) {
        this.categoryId = categoryId;
    }

    public Long getPlatformCouponAmount() {
        return platformCouponAmount;
    }

    public void setPlatformCouponAmount(Long platformCouponAmount) {
        this.platformCouponAmount = platformCouponAmount;
    }

    public Long getShopCouponAmount() {
        return shopCouponAmount;
    }

    public void setShopCouponAmount(Long shopCouponAmount) {
        this.shopCouponAmount = shopCouponAmount;
    }

    public Long getDiscountAmount() {
        return discountAmount;
    }

    public void setDiscountAmount(Long discountAmount) {
        this.discountAmount = discountAmount;
    }

    public Long getPlatformFreeFreightAmount() {
        return platformFreeFreightAmount;
    }

    public void setPlatformFreeFreightAmount(Long platformFreeFreightAmount) {
        this.platformFreeFreightAmount = platformFreeFreightAmount;
    }

    public Long getFreeFreightAmount() {
        return freeFreightAmount;
    }

    public void setFreeFreightAmount(Long freeFreightAmount) {
        this.freeFreightAmount = freeFreightAmount;
    }

    public Long getScoreFee() {
        return scoreFee;
    }

    public void setScoreFee(Long scoreFee) {
        this.scoreFee = scoreFee;
    }

    public Double getRate() {
        return rate;
    }

    public void setRate(Double rate) {
        this.rate = rate;
    }

    public Long getPlatformCommission() {
        return platformCommission;
    }

    public void setPlatformCommission(Long platformCommission) {
        this.platformCommission = platformCommission;
    }

    public Long getOrderItemId() {
        return orderItemId;
    }

    public void setOrderItemId(Long orderItemId) {
        this.orderItemId = orderItemId;
    }

    public List<StockPointSkuVO> getStockPointList() {
        return stockPointList;
    }

    public void setStockPointList(List<StockPointSkuVO> stockPointList) {
        this.stockPointList = stockPointList;
    }

    public Long getStockPointId() {
        return stockPointId;
    }

    public void setStockPointId(Long stockPointId) {
        this.stockPointId = stockPointId;
    }

    public Long getGiveawayRefundPrice() {
        return giveawayRefundPrice;
    }

    public void setGiveawayRefundPrice(Long giveawayRefundPrice) {
        this.giveawayRefundPrice = giveawayRefundPrice;
    }

    public List<ShopCartItemVO> getGiveawayShopCartItemList() {
        return giveawayShopCartItemList;
    }

    public void setGiveawayShopCartItemList(List<ShopCartItemVO> giveawayShopCartItemList) {
        this.giveawayShopCartItemList = giveawayShopCartItemList;
    }

    public List<WarehouseVO> getWarehouseList() {
        return warehouseList;
    }

    public void setWarehouseList(List<WarehouseVO> warehouseList) {
        this.warehouseList = warehouseList;
    }

    public Integer getStockPointType() {
        return stockPointType;
    }

    public void setStockPointType(Integer stockPointType) {
        this.stockPointType = stockPointType;
    }

    @Override
    public String toString() {
        return "ShopCartItemVO{" +
                "createTime=" + createTime +
                ", cartItemId=" + cartItemId +
                ", shopId=" + shopId +
                ", spuId=" + spuId +
                ", skuId=" + skuId +
                ", stockPointId=" + stockPointId +
                ", stockPointType=" + stockPointType +
                ", supplierSpuId=" + supplierSpuId +
                ", supplierSkuId=" + supplierSkuId +
                ", categoryId=" + categoryId +
                ", userId=" + userId +
                ", spuName='" + spuName + '\'' +
                ", skuName='" + skuName + '\'' +
                ", spuCode='" + spuCode + '\'' +
                ", partyCode='" + partyCode + '\'' +
                ", count=" + count +
                ", discountId=" + discountId +
                ", isChecked=" + isChecked +
//                ", priceFee=" + priceFee +
                ", skuPriceFee=" + skuPriceFee +
                ", totalPriceFee=" + totalPriceFee +
                ", totalPrice=" + totalPrice +
                ", deliveryMode='" + deliveryMode + '\'' +
                ", deliveryModeBO=" + deliveryModeBO +
                ", deliveryTemplateId=" + deliveryTemplateId +
                ", deliveryAmount=" + deliveryAmount +
                ", supplierDeliveryTemplateId=" + supplierDeliveryTemplateId +
                ", supplierDeliveryAmount=" + supplierDeliveryAmount +
                ", weight=" + weight +
                ", volume=" + volume +
                ", imgUrl='" + imgUrl + '\'' +
                ", isCollection='" + isCollection + '\'' +
                ", scoreFee=" + scoreFee +
                ", scorePrice=" + scorePrice +
                ", totalAmount=" + totalAmount +
                ", totalPurchaseAmount=" + totalPurchaseAmount +
                ", supplierPriceFee=" + supplierPriceFee +
                ", actualTotal=" + actualTotal +
                ", skuLangList=" + skuLangList +
                ", spuLangList=" + spuLangList +
                ", supplierSkuLangList=" + supplierSkuLangList +
                ", supplierSpuLangList=" + supplierSpuLangList +
                ", distributionUserId=" + distributionUserId +
                ", orderItemId=" + orderItemId +
                ", shareReduce=" + shareReduce +
                ", platformShareReduce=" + platformShareReduce +
                ", isShareReduce=" + isShareReduce +
                ", levelReduce=" + levelReduce +
                ", scoreReduce=" + scoreReduce +
                ", platformCouponAmount=" + platformCouponAmount +
                ", shopCouponAmount=" + shopCouponAmount +
                ", discountAmount=" + discountAmount +
                ", platformFreeFreightAmount=" + platformFreeFreightAmount +
                ", freeFreightAmount=" + freeFreightAmount +
                ", rate=" + rate +
                ", supplierRate=" + supplierRate +
                ", platformCommission=" + platformCommission +
                ", purchasePlatformCommission=" + purchasePlatformCommission +
                ", supplierSpuType=" + supplierSpuType +
                ", spuType=" + spuType +
                ", supplierDeliveryType=" + supplierDeliveryType +
                ", supplierId=" + supplierId +
                ", measureUnit='" + measureUnit + '\'' +
                ", skuChoiceStatus=" + skuChoiceStatus +
                ", giveaway=" + giveaway +
                ", giveawayRefundPrice=" + giveawayRefundPrice +
                ", comboId=" + comboId +
                ", comboCount=" + comboCount +
                ", parentCartItemId=" + parentCartItemId +
                ", preSaleType=" + preSaleType +
                ", depositAmount=" + depositAmount +
                ", actualDepositAmount=" + actualDepositAmount +
                ", depositExpansionAmount=" + depositExpansionAmount +
                ", depositReduceAmount=" + depositReduceAmount +
                ", balanceAmount=" + balanceAmount +
                ", actualBalanceAmount=" + actualBalanceAmount +
                ", balanceStartTime=" + balanceStartTime +
                ", balanceEndTime=" + balanceEndTime +
                ", preSaleDeliveryType=" + preSaleDeliveryType +
                ", preSaleDeliveryTime=" + preSaleDeliveryTime +
                ", isMainProd=" + isMainProd +
                ", matchingPrice=" + matchingPrice +
                ", comboAmount=" + comboAmount +
                ", mold=" + mold +
                ", isRefund=" + isRefund +
                ", virtualRemark='" + virtualRemark + '\'' +
                ", virtualRemarkList=" + virtualRemarkList +
                ", isDelivery=" + isDelivery +
                ", writeOffNum=" + writeOffNum +
                ", writeOffMultipleCount=" + writeOffMultipleCount +
                ", writeOffTime=" + writeOffTime +
                ", writeOffStart=" + writeOffStart +
                ", writeOffEnd=" + writeOffEnd +
                ", shopName='" + shopName + '\'' +
                ", supplierUrl='" + supplierUrl + '\'' +
                ", stockPointList=" + stockPointList +
                ", comboShopCartItems=" + comboShopCartItems +
                ", mainComboSkuId=" + mainComboSkuId +
                ", mainComboSpuId=" + mainComboSpuId +
                ", mainComboSpuNmae=" + mainComboSpuNmae +
                ", mainComboSkuName=" + mainComboSkuName +
                ", warehouseList=" + warehouseList +
                ", giveawayShopCartItemList=" + giveawayShopCartItemList +
                ", discounts=" + discounts +
                '}';
    }
}
