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

import com.tmerclub.cloud.common.product.vo.GiveawayVO;
import com.tmerclub.cloud.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;

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

/**
 * 订单项VO
 *
 * @author tmerclub
 * @date 2020-12-04 11:27:35
 */
public class OrderItemVO extends BaseVO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "订单项ID")
    private Long orderItemId;

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

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

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

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

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

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

    @Schema(description = "最终的退款id")
    private Long finalRefundId;

    @Schema(description = "推广员id")
    private Long distributionUserId;

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

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

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

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

    @Schema(description = "产品主图片路径")
    private String pic;

    @Schema(description = "是否以评价(0.未评价1.已评价)")
    private Integer isComm;

    @Schema(description = "订单项退款状态（1:申请退款 2:退款成功 3:部分退款成功 4:退款失败）")
    private Integer refundStatus;

    @Schema(description = "0全部发货 其他数量为剩余待发货数量")
    private Integer beDeliveredNum;

    @Schema(description = "单个orderItem的配送类型 1:快递 2:自提 3：无需快递 4:同城配送")
    private Integer deliveryType;

    @Schema(description = "加入购物车时间")
    private Date shopCartTime;

    @Schema(description = "产品价格")
    private Long price;

    @Schema(description = "商品总金额")
    private Long spuTotalAmount;

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

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

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

    @Schema(description = "推广员佣金")
    private Long distributionAmount;

    @Schema(description = "上级推广员佣金")
    private Long distributionParentAmount;

    @Schema(description = "积分价格（单价）")
    private Long scoreFee;

    @Schema(description = "积分抵扣金额")
    private Long scoreAmount;

    @Schema(description = "使用积分")
    private Long useScore;

    @Schema(description = "获得积分")
    private Long gainScore;

    @Schema(description = "评论时间", requiredMode = Schema.RequiredMode.REQUIRED)
    private Date commTime;

    @Schema(description = "发货改变的数量")
    private Integer changeNum;

    @Schema(description = "平台佣金")
    private Long platformCommission;


    @Schema(description = "运费金额")
    private Long freeFreightAmount;


    @Schema(description = "佣金比例")
    private Double rate;

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

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

    @Schema(description = "店铺改价优惠金额")
    private Long shopChangeFreeAmount;

    @Schema(description = "订单项信息")
    private List<OrderItemLangVO> orderItemLangList;

    @Schema(description = "采购金额")
    private Long itemPurchaseAmount;

    @Schema(description = "供应商佣金比例")
    private Double supplierRate;

    @Schema(description = "供应商佣金金额")
    private Long purchasePlatformCommission;

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

    @Schema(description = "供应商规格id")
    private Long supplierSkuId;

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

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

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

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

    @Schema(description = "套餐优惠金额")
    private Long comboAmount;

    @Schema(description = "活动id")
    private Long activityId;

    /**
     * 活动类型 OrderActivityType
     */
    @Schema(description = "活动类型")
    private Integer activityType;

    @Schema(description = "赠品金额")
    private Long giveawayAmount;

    @Schema(description = "主赠品 1：主赠品 0：赠品")
    private Integer mainGiveaway;

    @Schema(description = "主商品关联退款赠品id")
    private String returnGiveawayIds;

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

    @Schema(description = "订单项赠品列表", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<OrderItemVO> giveawayList;

    @Schema(description = "订单项组合列表", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<OrderItemVO> comboItemList;

    @Schema(description = "处理退款状态:(1.买家申请 2.卖家接受 3.买家发货 4.卖家收货 5.退款成功  -1.退款关闭)")
    private Integer returnMoneySts;

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

    @Schema(description = "供应商商品名称")
    private String supplierSpuName;

    @Schema(description = "供应商sku名称")
    private String supplierSkuName;

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

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

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

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

    @Schema(description = "主商品组合订单项id")
    private Long mainComboItemId;

    /**
     * 会员折扣金额
     */
    private Long memberAmount;

    /**
     * 平台优惠券优惠金额
     */
    private Long platformCouponAmount;

    /**
     * 商家优惠券优惠金额
     */
    private Long shopCouponAmount;

    /**
     * 满减优惠金额
     */
    private Long discountAmount;

    /**
     * 旧itemId
     */
    private Long oldOderItemId;


    @Schema(description = "平台运费减免金额")
    private Long platformFreeFreightAmount;

    public List<OrderItemVO> getComboItemList() {
        return comboItemList;
    }

    public void setComboItemList(List<OrderItemVO> comboItemList) {
        this.comboItemList = comboItemList;
    }

    public Long getMainComboItemId() {
        return mainComboItemId;
    }

    public void setMainComboItemId(Long mainComboItemId) {
        this.mainComboItemId = mainComboItemId;
    }

    public Long getOldOderItemId() {
        return oldOderItemId;
    }

    public void setOldOderItemId(Long oldOderItemId) {
        this.oldOderItemId = oldOderItemId;
    }

    public Long getPlatformFreeFreightAmount() {
        return platformFreeFreightAmount;
    }

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

    public Long getCategoryId() {
        return categoryId;
    }

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

    public Long getMemberAmount() {
        return memberAmount;
    }

    public void setMemberAmount(Long memberAmount) {
        this.memberAmount = memberAmount;
    }

    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 getScoreAmount() {
        return scoreAmount;
    }

    public void setScoreAmount(Long scoreAmount) {
        this.scoreAmount = scoreAmount;
    }


    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 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 String getSupplierSpuName() {
        return supplierSpuName;
    }

    public void setSupplierSpuName(String supplierSpuName) {
        this.supplierSpuName = supplierSpuName;
    }

    public String getSupplierSkuName() {
        return supplierSkuName;
    }

    public void setSupplierSkuName(String supplierSkuName) {
        this.supplierSkuName = supplierSkuName;
    }

    public String getSupplierPic() {
        return supplierPic;
    }

    public void setSupplierPic(String supplierPic) {
        this.supplierPic = supplierPic;
    }

    public Integer getReturnMoneySts() {
        return returnMoneySts;
    }

    public void setReturnMoneySts(Integer returnMoneySts) {
        this.returnMoneySts = returnMoneySts;
    }

    public Long getFreeFreightAmount() {
        return freeFreightAmount;
    }

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

    public Long getComboAmount() {
        return comboAmount;
    }

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

    public Long getDepositAmount() {
        return depositAmount;
    }

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

    public Integer getSpuMold() {
        return spuMold;
    }

    public void setSpuMold(Integer spuMold) {
        this.spuMold = spuMold;
    }

    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 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 Long getGiveawayAmount() {
        return giveawayAmount;
    }

    public void setGiveawayAmount(Long giveawayAmount) {
        this.giveawayAmount = giveawayAmount;
    }

    public String getReturnGiveawayIds() {
        return returnGiveawayIds;
    }

    public void setReturnGiveawayIds(String returnGiveawayIds) {
        this.returnGiveawayIds = returnGiveawayIds;
    }

    public GiveawayVO getGiveawayVO() {
        return giveawayVO;
    }

    public void setGiveawayVO(GiveawayVO giveawayVO) {
        this.giveawayVO = giveawayVO;
    }

    public List<OrderItemVO> getGiveawayList() {
        return giveawayList;
    }

    public void setGiveawayList(List<OrderItemVO> giveawayList) {
        this.giveawayList = giveawayList;
    }

    public String getPartyCode() {
        return partyCode;
    }

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

    public String getSpuCode() {
        return spuCode;
    }

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

    public Double getSupplierRate() {
        return supplierRate;
    }

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

    public Long getPurchasePlatformCommission() {
        return purchasePlatformCommission;
    }

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

    public Long getItemPurchaseAmount() {
        return itemPurchaseAmount;
    }

    public void setItemPurchaseAmount(Long itemPurchaseAmount) {
        this.itemPurchaseAmount = itemPurchaseAmount;
    }

    public Integer getChangeNum() {
        return changeNum;
    }

    public void setChangeNum(Integer changeNum) {
        this.changeNum = changeNum;
    }

    public Long getOrderItemId() {
        return orderItemId;
    }

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

    public Long getShopId() {
        return shopId;
    }

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

    public Long getOrderId() {
        return orderId;
    }

    public void setOrderId(Long orderId) {
        this.orderId = orderId;
    }

    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 Long getFinalRefundId() {
        return finalRefundId;
    }

    public void setFinalRefundId(Long finalRefundId) {
        this.finalRefundId = finalRefundId;
    }

    public Long getDistributionUserId() {
        return distributionUserId;
    }

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

    public Integer getCount() {
        return count;
    }

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

    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 String getPic() {
        return pic;
    }

    public void setPic(String pic) {
        this.pic = pic;
    }

    public Integer getIsComm() {
        return isComm;
    }

    public void setIsComm(Integer isComm) {
        this.isComm = isComm;
    }

    public Integer getRefundStatus() {
        return refundStatus;
    }

    public void setRefundStatus(Integer refundStatus) {
        this.refundStatus = refundStatus;
    }

    public Integer getBeDeliveredNum() {
        return beDeliveredNum;
    }

    public void setBeDeliveredNum(Integer beDeliveredNum) {
        this.beDeliveredNum = beDeliveredNum;
    }

    public Date getShopCartTime() {
        return shopCartTime;
    }

    public void setShopCartTime(Date shopCartTime) {
        this.shopCartTime = shopCartTime;
    }

    public Long getPrice() {
        return price;
    }

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

    public Long getActualTotal() {
        return actualTotal;
    }

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

    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 Long getDistributionAmount() {
        return distributionAmount;
    }

    public void setDistributionAmount(Long distributionAmount) {
        this.distributionAmount = distributionAmount;
    }

    public Long getDistributionParentAmount() {
        return distributionParentAmount;
    }

    public void setDistributionParentAmount(Long distributionParentAmount) {
        this.distributionParentAmount = distributionParentAmount;
    }

    public Long getUseScore() {
        return useScore;
    }

    public void setUseScore(Long useScore) {
        this.useScore = useScore;
    }

    public Long getGainScore() {
        return gainScore;
    }

    public void setGainScore(Long gainScore) {
        this.gainScore = gainScore;
    }

    public Long getSpuTotalAmount() {
        return spuTotalAmount;
    }

    public void setSpuTotalAmount(Long spuTotalAmount) {
        this.spuTotalAmount = spuTotalAmount;
    }

    public Integer getDeliveryType() {
        return deliveryType;
    }

    public void setDeliveryType(Integer deliveryType) {
        this.deliveryType = deliveryType;
    }

    public Date getCommTime() {
        return commTime;
    }

    public void setCommTime(Date commTime) {
        this.commTime = commTime;
    }

    public List<OrderItemLangVO> getOrderItemLangList() {
        return orderItemLangList;
    }

    public void setOrderItemLangList(List<OrderItemLangVO> orderItemLangList) {
        this.orderItemLangList = orderItemLangList;
    }

    public Long getPlatformCommission() {
        return platformCommission;
    }

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

    public Double getRate() {
        return rate;
    }

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

    public Long getShopChangeFreeAmount() {
        return shopChangeFreeAmount;
    }

    public void setShopChangeFreeAmount(Long shopChangeFreeAmount) {
        this.shopChangeFreeAmount = shopChangeFreeAmount;
    }

    public Long getScoreFee() {
        return scoreFee;
    }

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

    public Long getActivityId() {
        return activityId;
    }

    public void setActivityId(Long activityId) {
        this.activityId = activityId;
    }

    public Integer getActivityType() {
        return activityType;
    }

    public void setActivityType(Integer activityType) {
        this.activityType = activityType;
    }

    public Integer getMainGiveaway() {
        return mainGiveaway;
    }

    public void setMainGiveaway(Integer mainGiveaway) {
        this.mainGiveaway = mainGiveaway;
    }

    public Long getStockPointId() {
        return stockPointId;
    }

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

    @Override
    public String toString() {
        return "OrderItemVO{" +
                "orderItemId=" + orderItemId +
                ", shopId=" + shopId +
                ", orderId=" + orderId +
                ", spuId=" + spuId +
                ", skuId=" + skuId +
                ", categoryId=" + categoryId +
                ", userId=" + userId +
                ", finalRefundId=" + finalRefundId +
                ", distributionUserId=" + distributionUserId +
                ", stockPointId=" + stockPointId +
                ", count=" + count +
                ", spuName='" + spuName + '\'' +
                ", skuName='" + skuName + '\'' +
                ", pic='" + pic + '\'' +
                ", isComm=" + isComm +
                ", refundStatus=" + refundStatus +
                ", beDeliveredNum=" + beDeliveredNum +
                ", deliveryType=" + deliveryType +
                ", shopCartTime=" + shopCartTime +
                ", price=" + price +
                ", spuTotalAmount=" + spuTotalAmount +
                ", actualTotal=" + actualTotal +
                ", shareReduce=" + shareReduce +
                ", platformShareReduce=" + platformShareReduce +
                ", distributionAmount=" + distributionAmount +
                ", distributionParentAmount=" + distributionParentAmount +
                ", scoreFee=" + scoreFee +
                ", scoreAmount=" + scoreAmount +
                ", useScore=" + useScore +
                ", gainScore=" + gainScore +
                ", commTime=" + commTime +
                ", changeNum=" + changeNum +
                ", platformCommission=" + platformCommission +
                ", freeFreightAmount=" + freeFreightAmount +
                ", rate=" + rate +
                ", partyCode='" + partyCode + '\'' +
                ", spuCode='" + spuCode + '\'' +
                ", shopChangeFreeAmount=" + shopChangeFreeAmount +
                ", orderItemLangList=" + orderItemLangList +
                ", itemPurchaseAmount=" + itemPurchaseAmount +
                ", supplierRate=" + supplierRate +
                ", purchasePlatformCommission=" + purchasePlatformCommission +
                ", supplierSpuId=" + supplierSpuId +
                ", supplierSkuId=" + supplierSkuId +
                ", spuMold=" + spuMold +
                ", isRefund=" + isRefund +
                ", virtualRemark='" + virtualRemark + '\'' +
                ", depositAmount=" + depositAmount +
                ", comboAmount=" + comboAmount +
                ", activityId=" + activityId +
                ", activityType=" + activityType +
                ", giveawayAmount=" + giveawayAmount +
                ", mainGiveaway=" + mainGiveaway +
                ", returnGiveawayIds='" + returnGiveawayIds + '\'' +
                ", giveawayVO=" + giveawayVO +
                ", giveawayList=" + giveawayList +
                ", comboItemList=" + comboItemList +
                ", returnMoneySts=" + returnMoneySts +
                ", supplierPic='" + supplierPic + '\'' +
                ", supplierSpuName='" + supplierSpuName + '\'' +
                ", supplierSkuName='" + supplierSkuName + '\'' +
                ", writeOffNum=" + writeOffNum +
                ", writeOffMultipleCount=" + writeOffMultipleCount +
                ", writeOffStart=" + writeOffStart +
                ", writeOffEnd=" + writeOffEnd +
                ", mainComboItemId=" + mainComboItemId +
                ", memberAmount=" + memberAmount +
                ", platformCouponAmount=" + platformCouponAmount +
                ", shopCouponAmount=" + shopCouponAmount +
                ", discountAmount=" + discountAmount +
                ", oldOderItemId=" + oldOderItemId +
                ", platformFreeFreightAmount=" + platformFreeFreightAmount +
                '}';
    }
}
