From 211b5a717de92b9b52879280ca2285cdd0b4a54b Mon Sep 17 00:00:00 2001 From: peng <peng.com> Date: 星期三, 10 九月 2025 19:11:25 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java | 47 ++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 38 insertions(+), 9 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java index 36d0423..24c6404 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CouponRender.java @@ -5,6 +5,7 @@ import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.StringUtils; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; +import cn.lili.modules.order.cart.entity.dto.SkuMapDTO; 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; @@ -240,8 +241,13 @@ //鎺ユ敹鍏蜂綋浼樻儬鍒镐俊鎭� MemberCoupon coupon = memberCouponDTO.getMemberCoupon(); + + Integer goodsNum = tradeDTO.getSkuList().stream().map(CartSkuVO::getNum).reduce(Integer::sum).get(); + //澶勭悊涓�涓瀬绔儏鍐碉紝濡傛灉浼樻儬鍒告弧鍑忛噾棰濆ぇ浜庤鍗曢噾棰� - if (coupon.getCouponType().equals(CouponTypeEnum.PRICE.name()) && coupon.getPrice() > countPrice) { + if (coupon.getCouponType().equals(CouponTypeEnum.PRICE.name()) + && coupon.getPrice() > countPrice + && coupon.getGoodsUseLimitNum() >= goodsNum) { //灏嗙鍚堜紭鎯犲埜鐨勯噾棰濆啓鍏ワ紝鍗虫渶澶ф墸鍑忛噾棰� coupon.setPrice(countPrice); } @@ -264,21 +270,42 @@ * @param memberCouponDTO 鐢ㄤ簬璁$畻浼樻儬鍒哥粨绠楄鎯� */ private void renderCouponPrice(Map<String, Double> couponMap, TradeDTO tradeDTO, MemberCoupon coupon, MemberCouponDTO memberCouponDTO) { + List<SkuMapDTO> skuMapDTOList = new ArrayList<>(); + for (String skuId : couponMap.keySet()) { + skuMapDTOList.add(new SkuMapDTO(skuId, couponMap.get(skuId))); + } + skuMapDTOList.sort((o1, o2) -> o2.getPrice().compareTo(o1.getPrice())); //鍒嗗彂浼樻儬鍒� - PromotionPriceUtil.recountPrice(tradeDTO, memberCouponDTO.getSkuDetail(), memberCouponDTO.getMemberCoupon().getPrice(), - Boolean.TRUE.equals(coupon.getPlatformFlag()) ? - PromotionTypeEnum.PLATFORM_COUPON : PromotionTypeEnum.COUPON, memberCouponDTO.getMemberCoupon().getCouponId()); + PromotionPriceUtil.recountPrice(tradeDTO, memberCouponDTO.getSkuDetail(), + memberCouponDTO.getMemberCoupon().getPrice(), + Boolean.TRUE.equals(coupon.getPlatformFlag()) ? PromotionTypeEnum.PLATFORM_COUPON : PromotionTypeEnum.COUPON, + memberCouponDTO.getMemberCoupon().getCouponId(), + memberCouponDTO.getMemberCoupon().getGoodsUseLimitNum()); //濡傛灉鏄钩鍙板埜 鍒欓渶瑕佽绠楀晢瀹舵壙鎷呮瘮渚� if (Boolean.TRUE.equals(coupon.getPlatformFlag()) && coupon.getStoreCommission() > 0) { + Integer i = coupon.getGoodsUseLimitNum(); //寰幆鎵�鏈変紭鎯犲埜 - for (String skuId : couponMap.keySet()) { + for (SkuMapDTO skuMapDTO : skuMapDTOList) { for (CartSkuVO cartSkuVO : tradeDTO.getSkuList()) { //鍐欏叆骞冲彴浼樻儬鍒告壙鎷呮瘮渚� - if (cartSkuVO.getGoodsSku().getId().equals(skuId)) { - //鍐欏叆搴楅摵鎵挎媴姣斾緥 - cartSkuVO.getPriceDetailDTO().setSiteCouponPoint(coupon.getStoreCommission()); + if (cartSkuVO.getGoodsSku().getId().equals(skuMapDTO.getSkuId())) { + if (i == null) { + cartSkuVO.getPriceDetailDTO().setSiteCouponPoint(coupon.getStoreCommission()); + } else { + if (i > 0) { + //鍐欏叆搴楅摵鎵挎媴姣斾緥 + if (i >= cartSkuVO.getNum()) { + cartSkuVO.getPriceDetailDTO().setSiteCouponPoint(coupon.getStoreCommission()); + } else { + cartSkuVO.getPriceDetailDTO().setSiteCouponPoint(coupon.getStoreCommission() * i / cartSkuVO.getNum()); + } + i = i - cartSkuVO.getNum(); + } else { + return; + } + } } } } @@ -294,6 +321,7 @@ * @param coupon 浼樻儬鍒镐俊鎭� */ private void renderCouponDiscount(Map<String, Double> couponMap, TradeDTO tradeDTO, MemberCoupon coupon) { + //寰幆鎵�鏈変紭鎯犲埜 for (String skuId : couponMap.keySet()) { @@ -315,9 +343,10 @@ } priceDetailDTO.setCouponPrice(CurrencyUtil.add(priceDetailDTO.getCouponPrice(), discountCouponPrice)); + } else { + return; } } } } - } -- Gitblit v1.8.0