From 3d158125f9c29954009a4ab1ac7b2280b1255d0a Mon Sep 17 00:00:00 2001 From: Chopper Date: Thu, 26 Aug 2021 11:05:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=BB=A1=E4=BC=98=E6=83=A0notice=E8=B0=83?= =?UTF-8?q?=E6=95=B4=EF=BC=8C=E6=BB=A1=E4=BC=98=E6=83=A0=E4=BF=A1=E6=81=AF?= =?UTF-8?q?=E5=86=99=E5=85=A5=E8=B4=AD=E7=89=A9=E8=BD=A6=E6=97=B6=E6=9C=BA?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../lili/event/impl/FullDiscountExecute.java | 5 +- .../order/cart/entity/vo/FullDiscountVO.java | 24 ++++- .../cart/render/impl/FullDiscountRender.java | 14 ++- .../service/PromotionGoodsService.java | 13 +-- .../serviceimpl/FullDiscountServiceImpl.java | 12 ++- .../PromotionGoodsServiceImpl.java | 92 +++++++++---------- 6 files changed, 88 insertions(+), 72 deletions(-) diff --git a/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java b/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java index b1c6bfb8..abf17cee 100644 --- a/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/FullDiscountExecute.java @@ -130,7 +130,7 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent { try { //赠品潘迪ing if (cartVO.getGiftList() != null && cartVO.getGiftList().size() > 0) { - generatorGiftOrder(cartVO.getGiftList(), cartVO, order); + generatorGiftOrder(cartVO.getGiftList(), order); } } catch (Exception e) { log.error("订单赠送赠品异常", e); @@ -141,10 +141,9 @@ public class FullDiscountExecute implements TradeEvent, OrderStatusChangeEvent { * 生成赠品订单 * * @param skuIds 赠品sku信息 - * @param cartVO 购物车信息 * @param originOrder 赠品原订单信息 */ - private void generatorGiftOrder(List skuIds, CartVO cartVO, Order originOrder) { + private void generatorGiftOrder(List skuIds, Order originOrder) { List orderItems = new ArrayList<>(); List orderLogs = new ArrayList<>(); Order order = new Order(); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java index db1e4e75..586a31a8 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/entity/vo/FullDiscountVO.java @@ -1,5 +1,6 @@ package cn.lili.modules.order.cart.entity.vo; +import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.promotion.entity.dos.FullDiscount; import cn.lili.modules.promotion.entity.dos.PromotionGoods; import lombok.Data; @@ -20,6 +21,10 @@ public class FullDiscountVO extends FullDiscount { * 促销关联的商品 */ private List promotionGoodsList; + /** + * 赠品信息 + */ + private GoodsSku giftSku; /** * 参与商品,为-1则代表所有商品参加 @@ -28,15 +33,24 @@ public class FullDiscountVO extends FullDiscount { public String notice() { StringBuilder stringBuffer = new StringBuilder(); - if (Boolean.TRUE.equals(this.getIsFreeFreight())) { - stringBuffer.append("免运费 "); - } if (Boolean.TRUE.equals(this.getIsFullMinus())) { - stringBuffer.append("减").append(this.getFullMinus()).append("元 "); + stringBuffer.append(" 减").append(this.getFullMinus()).append("元 "); } if (Boolean.TRUE.equals(this.getIsFullRate())) { - stringBuffer.append("打").append(this.getFullRate()).append("折 "); + stringBuffer.append(" 打").append(this.getFullRate()).append("折 "); } + + if (Boolean.TRUE.equals(this.getIsFreeFreight())) { + stringBuffer.append(" 免运费 "); + } + + if (Boolean.TRUE.equals(this.getIsPoint())) { + stringBuffer.append(" 赠").append(this.getPoint()).append("积分 "); + } + if (Boolean.TRUE.equals(this.getIsGift() && giftSku != null)) { + stringBuffer.append(" 赠品[").append(giftSku.getGoodsName()).append("]"); + } + return stringBuffer.toString(); } diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java index 4df4f9ef..cbda29e4 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/FullDiscountRender.java @@ -2,6 +2,8 @@ package cn.lili.modules.order.cart.render.impl; import cn.lili.common.enums.PromotionTypeEnum; import cn.lili.common.utils.CurrencyUtil; +import cn.lili.modules.goods.entity.dos.GoodsSku; +import cn.lili.modules.goods.service.GoodsSkuService; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.RenderStepEnums; import cn.lili.modules.order.cart.entity.vo.CartSkuVO; @@ -33,6 +35,9 @@ public class FullDiscountRender implements CartRenderStep { @Autowired private PromotionPriceUtil promotionPriceUtil; + @Autowired + private GoodsSkuService goodsSkuService; + @Override public RenderStepEnums step() { return RenderStepEnums.FULL_DISCOUNT; @@ -64,6 +69,13 @@ public class FullDiscountRender implements CartRenderStep { for (CartVO cart : cartList) { //如果购物车中的店铺id与活动店铺id相等,则进行促销计算 if (fullDiscount.getStoreId().equals(cart.getStoreId())) { + + //如果有赠品,则将赠品信息写入 + if (fullDiscount.getIsGift()) { + GoodsSku goodsSku = goodsSkuService.getGoodsSkuByIdFromCache(fullDiscount.getGiftId()); + fullDiscount.setGiftSku(goodsSku); + } + //写入满减活动 cart.setFullDiscount(fullDiscount); Map skuPriceDetail; @@ -189,7 +201,7 @@ public class FullDiscountRender implements CartRenderStep { */ private boolean isFull(Double price, CartVO cart) { if (cart.getFullDiscount().getFullMoney() <= price) { - cart.setPromotionNotice("正在参与满优惠活动(" + cart.getFullDiscount().getPromotionName() + ")" + cart.getFullDiscount().notice()); + cart.setPromotionNotice("正在参与满优惠活动[" + cart.getFullDiscount().getPromotionName() + "]" + cart.getFullDiscount().notice()); return true; } else { cart.setPromotionNotice("还差" + CurrencyUtil.sub(cart.getFullDiscount().getFullMoney(), price) + " 即可参与活动(" + cart.getFullDiscount().getPromotionName() + ")" + cart.getFullDiscount().notice()); diff --git a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java index 2677a347..b801e5f1 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java +++ b/framework/src/main/java/cn/lili/modules/promotion/service/PromotionGoodsService.java @@ -34,15 +34,6 @@ public interface PromotionGoodsService extends IService { return "{" + CachePrefix.PROMOTION_GOODS_STOCK.name() + "_" + typeEnum.name() + "}_" + promotionId + "_" + skuId; } - /** - * 根据活动获取商品 - * - * @param promotionId 促销活动id - * @param skuId 商品id - * @return 促销商品信息 - */ - PromotionGoods findByPromotion(String promotionId, String skuId); - /** * 删除指定促销类型的促销商品 * @@ -76,10 +67,10 @@ public interface PromotionGoodsService extends IService { /** * 分页获取促销商品信息 * - * @param goodsId 商品skuId + * @param skuId 商品skuId * @return 某商品的促销信息 */ - List getPromotionGoods(String goodsId); + List getPromotionGoods(String skuId); /** * 分页获取促销商品信息 diff --git a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java index fa85f71c..b3c4af86 100644 --- a/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/promotion/serviceimpl/FullDiscountServiceImpl.java @@ -273,13 +273,13 @@ public class FullDiscountServiceImpl extends ServiceImpl queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(PromotionGoods::getPromotionId, promotionId).eq(PromotionGoods::getSkuId, skuId); - return new PromotionGoods(); - } @Override public void removePromotionGoods(List promotionGoodsList, PromotionTypeEnum promotionType) { @@ -100,9 +88,52 @@ public class PromotionGoodsServiceImpl extends ServiceImpl findNowSkuPromotion(String skuId) { - return this.list(new LambdaQueryWrapper() + + GoodsSku sku = goodsSkuService.getGoodsSkuByIdFromCache(skuId); + if (sku == null) { + return null; + } + + List promotionGoods = new ArrayList<>(); + promotionGoods.addAll(this.list(new LambdaQueryWrapper() .eq(PromotionGoods::getSkuId, skuId) - .eq(PromotionGoods::getPromotionStatus, PromotionStatusEnum.START.name())); + .eq(PromotionGoods::getPromotionStatus, PromotionStatusEnum.START.name()))); + + + //单独检查,添加适用于全品类的满优惠活动 + Query query = new Query(); + query.addCriteria(Criteria.where("promotionStatus").is(PromotionStatusEnum.START.name())); + query.addCriteria(Criteria.where("startTime").lte(new Date().getTime())); + List fullDiscountVOS = mongoTemplate.find(query, FullDiscountVO.class); + for (FullDiscountVO fullDiscountVO : fullDiscountVOS) { + if (fullDiscountVO.getPromotionGoodsList() == null && + sku.getStoreId().equals(fullDiscountVO.getStoreId())) { + PromotionGoods p = new PromotionGoods(sku); + p.setPromotionId(fullDiscountVO.getId()); + p.setPromotionStatus(fullDiscountVO.getPromotionStatus()); + p.setPromotionType(PromotionTypeEnum.FULL_DISCOUNT.name()); + p.setStartTime(fullDiscountVO.getStartTime()); + p.setEndTime(fullDiscountVO.getEndTime()); + promotionGoods.add(p); + } + } + //单独检查,添加适用于全品类的全平台或属于当前店铺的优惠券活动 + List couponVOS = mongoTemplate.find(query, CouponVO.class); + for (CouponVO couponVO : couponVOS) { + boolean aLLScopeType = (couponVO.getPromotionGoodsList() == null + && couponVO.getScopeType().equals(CouponScopeTypeEnum.ALL.name()) + && (("0").equals(couponVO.getStoreId()) || sku.getStoreId().equals(couponVO.getStoreId()))); + if (aLLScopeType) { + PromotionGoods p = new PromotionGoods(sku); + p.setPromotionId(couponVO.getId()); + p.setPromotionStatus(couponVO.getPromotionStatus()); + p.setPromotionType(PromotionTypeEnum.COUPON.name()); + p.setStartTime(couponVO.getStartTime()); + p.setEndTime(couponVO.getEndTime()); + promotionGoods.add(p); + } + } + return promotionGoods; } @Override @@ -141,39 +172,6 @@ public class PromotionGoodsServiceImpl extends ServiceImpl fullDiscountVOS = mongoTemplate.find(query, FullDiscountVO.class); - for (FullDiscountVO fullDiscountVO : fullDiscountVOS) { - if (fullDiscountVO.getPromotionGoodsList() == null && - cartSkuVO.getStoreId().equals(fullDiscountVO.getStoreId())) { - PromotionGoods p = new PromotionGoods(cartSkuVO.getGoodsSku()); - p.setPromotionId(fullDiscountVO.getId()); - p.setPromotionStatus(fullDiscountVO.getPromotionStatus()); - p.setPromotionType(PromotionTypeEnum.FULL_DISCOUNT.name()); - p.setStartTime(fullDiscountVO.getStartTime()); - p.setEndTime(fullDiscountVO.getEndTime()); - promotionGoods.add(p); - } - } - //单独检查,添加适用于全品类的全平台或属于当前店铺的优惠券活动 - List couponVOS = mongoTemplate.find(query, CouponVO.class); - for (CouponVO couponVO : couponVOS) { - boolean aLLScopeType = (couponVO.getPromotionGoodsList() == null - && couponVO.getScopeType().equals(CouponScopeTypeEnum.ALL.name()) - && (("0").equals(couponVO.getStoreId()) || cartSkuVO.getStoreId().equals(couponVO.getStoreId()))); - if (aLLScopeType) { - PromotionGoods p = new PromotionGoods(cartSkuVO.getGoodsSku()); - p.setPromotionId(couponVO.getId()); - p.setPromotionStatus(couponVO.getPromotionStatus()); - p.setPromotionType(PromotionTypeEnum.COUPON.name()); - p.setStartTime(couponVO.getStartTime()); - p.setEndTime(couponVO.getEndTime()); - promotionGoods.add(p); - } - } cartSkuVO.setPromotions(promotionGoods); //下一次更新时间 cartSkuVO.setUpdatePromotionTime(date);