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 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 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 getPromotionMap() { return PromotionTools.filterInvalidPromotionsMap(this.promotionMap); } public Map getNotFilterPromotionMap() { return this.promotionMap; } }