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

import io.swagger.v3.oas.annotations.media.Schema;

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

/**
 * 购物车VO
 *
 * @author tmerclub
 * @date 2020-11-20 15:47:32
 */
public class ShopCartVO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "店铺ID", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long shopId;

    @Schema(description = "店铺名称", requiredMode = Schema.RequiredMode.REQUIRED)
    private String shopName;

    @Schema(description = "店铺类型1自营店 2普通店")
    private Integer shopType;

    @Schema(description = "购物车满减活动携带的商品", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<ShopCartItemDiscountVO> shopCartItemDiscounts;

    @Schema(description = "店铺优惠金额(促销活动 + 优惠券 + 积分优惠金额 + 其他)", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long shopReduce;

    @Schema(description = "促销活动优惠金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long discountReduce;

    @Schema(description = "实际总值(商品总值 - 优惠)", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long actualTotal;

    @Schema(description = "商品总值", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long total;

    @Schema(description = "商品积分总值")
    private Long scoreTotal;

    @Schema(description = "整个店铺可以使用的优惠券列表", requiredMode = Schema.RequiredMode.REQUIRED)
    private List<CouponOrderVO> coupons;

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

    @Schema(description = "数量", requiredMode = Schema.RequiredMode.REQUIRED)
    private Integer totalCount;

    @Schema(description = "运费", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long transfee;

    @Schema(description = "等级免运费金额", requiredMode = Schema.RequiredMode.REQUIRED)
    private Long freeTransfee;

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

    public Long getShopComboAmount() {
        return shopComboAmount;
    }

    public void setShopComboAmount(Long shopComboAmount) {
        this.shopComboAmount = shopComboAmount;
    }

    public Long getFreeTransfee() {
        return freeTransfee;
    }

    public void setFreeTransfee(Long freeTransfee) {
        this.freeTransfee = freeTransfee;
    }

    public Long getTransfee() {
        return transfee;
    }

    public void setTransfee(Long transfee) {
        this.transfee = transfee;
    }

    public Long getShopId() {
        return shopId;
    }

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

    public String getShopName() {
        return shopName;
    }

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

    public List<ShopCartItemDiscountVO> getShopCartItemDiscounts() {
        return shopCartItemDiscounts;
    }

    public void setShopCartItemDiscounts(List<ShopCartItemDiscountVO> shopCartItemDiscounts) {
        this.shopCartItemDiscounts = shopCartItemDiscounts;
    }

    public Long getShopReduce() {
        return shopReduce;
    }

    public void setShopReduce(Long shopReduce) {
        this.shopReduce = shopReduce;
    }

    public Long getDiscountReduce() {
        return discountReduce;
    }

    public void setDiscountReduce(Long discountReduce) {
        this.discountReduce = discountReduce;
    }

    public Long getActualTotal() {
        return actualTotal;
    }

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

    public Long getTotal() {
        return total;
    }

    public void setTotal(Long total) {
        this.total = total;
    }

    public Long getCouponReduce() {
        return couponReduce;
    }

    public void setCouponReduce(Long couponReduce) {
        this.couponReduce = couponReduce;
    }

    public List<CouponOrderVO> getCoupons() {
        return coupons;
    }

    public void setCoupons(List<CouponOrderVO> coupons) {
        this.coupons = coupons;
    }

    public Integer getShopType() {
        return shopType;
    }

    public void setShopType(Integer shopType) {
        this.shopType = shopType;
    }

    public Integer getTotalCount() {
        return totalCount;
    }

    public void setTotalCount(Integer totalCount) {
        this.totalCount = totalCount;
    }

    public Long getScoreTotal() {
        return scoreTotal;
    }

    public void setScoreTotal(Long scoreTotal) {
        this.scoreTotal = scoreTotal;
    }

    @Override
    public String toString() {
        return "ShopCartVO{" +
                "shopId=" + shopId +
                ", shopName='" + shopName + '\'' +
                ", shopType=" + shopType +
                ", shopCartItemDiscounts=" + shopCartItemDiscounts +
                ", shopReduce=" + shopReduce +
                ", discountReduce=" + discountReduce +
                ", actualTotal=" + actualTotal +
                ", total=" + total +
                ", scoreTotal=" + scoreTotal +
                ", coupons=" + coupons +
                ", couponReduce=" + couponReduce +
                ", totalCount=" + totalCount +
                ", transfee=" + transfee +
                ", freeTransfee=" + freeTransfee +
                ", shopComboAmount=" + shopComboAmount +
                '}';
    }
}
