zxl
2025-06-16 0fb6b9d8d414822668c401a2b507df1fe6d1fa2d
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
package cn.lili.modules.order.cart.entity.vo;
 
import cn.lili.common.utils.CurrencyUtil;
import cn.lili.modules.distribution.entity.dos.DistributionGoods;
import cn.lili.modules.goods.entity.dos.GoodsSku;
import cn.lili.modules.order.cart.entity.enums.CartTypeEnum;
import cn.lili.modules.order.cart.entity.enums.DeliveryMethodEnum;
import cn.lili.modules.promotion.tools.PromotionTools;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
 
import java.io.Serializable;
import java.util.Map;
 
/**
 * 购物车中的产品
 *
 * @author Chopper
 * @since 2020-03-24 10:33 上午
 */
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
public class CartSkuVO extends CartBase implements Serializable {
 
 
    private static final long serialVersionUID = -894598033321906974L;
 
 
    private String sn;
    /**
     * 对应的sku DO
     */
    private GoodsSku goodsSku;
 
    /**
     * 分销描述
     */
    private DistributionGoods distributionGoods;
 
    @ApiModelProperty(value = "购买数量")
    private Integer num;
 
    @ApiModelProperty(value = "购买时的成交价")
    private Double purchasePrice;
 
    @ApiModelProperty(value = "小记")
    private Double subTotal;
 
    @ApiModelProperty(value = "小记")
    private Double utilPrice;
    /**
     * 是否选中,要去结算 0:未选中 1:已选中,默认
     */
    @ApiModelProperty(value = "是否选中,要去结算")
    private Boolean checked;
 
    @ApiModelProperty(value = "是否免运费")
    private Boolean isFreeFreight;
 
    @ApiModelProperty(value = "是否失效 ")
    private Boolean invalid;
 
    @ApiModelProperty(value = "购物车商品错误消息")
    private String errorMessage;
 
    @ApiModelProperty(value = "是否可配送")
    private Boolean isShip;
 
    @ApiModelProperty(value = "拼团id 如果是拼团购买 此值为拼团活动id," +
            "当pintuanId为空,则表示普通购买(或者拼团商品,单独购买)")
    private String pintuanId;
 
    @ApiModelProperty(value = "砍价ID")
    private String kanjiaId;
 
    @ApiModelProperty(value = "积分兑换ID")
    private String pointsId;
 
    @ApiModelProperty(value = "积分购买 积分数量")
    private Long point;
 
    @ApiModelProperty("商品促销活动集合,key 为 促销活动类型,value 为 促销活动实体信息 ")
    private Map<String, Object> promotionMap;
 
    /**
     * @see CartTypeEnum
     */
    @ApiModelProperty(value = "购物车类型")
    private CartTypeEnum cartType;
 
    /**
     * @see DeliveryMethodEnum
     */
    @ApiModelProperty(value = "配送方式")
    private String deliveryMethod;
 
    /**
     * 在构造器里初始化促销列表,规格列表
     */
    public CartSkuVO(GoodsSku goodsSku) {
        this.goodsSku = goodsSku;
        if (goodsSku.getUpdateTime() == null) {
            this.goodsSku.setUpdateTime(goodsSku.getCreateTime());
        }
        this.checked = true;
        this.invalid = false;
        //默认时间为0,让系统为此商品更新缓存
        this.errorMessage = "";
        this.isShip = true;
        this.purchasePrice = goodsSku.getPromotionFlag() != null && goodsSku.getPromotionFlag() ? goodsSku.getPromotionPrice() : goodsSku.getPrice();
        this.isFreeFreight = false;
        this.utilPrice = goodsSku.getPromotionFlag() != null && goodsSku.getPromotionFlag() ? goodsSku.getPromotionPrice() : goodsSku.getPrice();
        this.setStoreId(goodsSku.getStoreId());
        this.setStoreName(goodsSku.getStoreName());
    }
 
    /**
     * 在构造器里初始化促销列表,规格列表
     */
    public CartSkuVO(GoodsSku goodsSku, Map<String, Object> promotionMap) {
        this(goodsSku);
        if (promotionMap != null && !promotionMap.isEmpty()) {
            this.promotionMap = promotionMap;
        }
    }
 
    public void rebuildBySku(GoodsSku goodsSku) {
        this.goodsSku = goodsSku;
        this.purchasePrice = goodsSku.getPromotionFlag() != null && goodsSku.getPromotionFlag() ? goodsSku.getPromotionPrice() : goodsSku.getPrice();
        this.utilPrice = goodsSku.getPromotionFlag() != null && goodsSku.getPromotionFlag() ? goodsSku.getPromotionPrice() : goodsSku.getPrice();
 
 
        //计算购物车小计
        this.subTotal = CurrencyUtil.mul(this.getPurchasePrice(), this.getNum());
        this.setStoreId(goodsSku.getStoreId());
        this.setStoreName(goodsSku.getStoreName());
    }
 
    public Map<String, Object> getPromotionMap() {
        return PromotionTools.filterInvalidPromotionsMap(this.promotionMap);
    }
 
    public Map<String, Object> getNotFilterPromotionMap() {
        return this.promotionMap;
    }
}