From 2f4b9816caa150a948ba6fabe3e4025f4667a236 Mon Sep 17 00:00:00 2001 From: KKSU <15274802129@163.com> Date: Fri, 02 Feb 2024 11:11:09 +0800 Subject: [PATCH] 购物车使用优惠卷 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 40 ++++++++++++++++++++++++++++++---------- 1 files changed, 30 insertions(+), 10 deletions(-) diff --git a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java index 924fbef..1b46a1c 100644 --- a/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java +++ b/src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java @@ -13,10 +13,7 @@ import cc.mrbird.febs.mall.entity.*; import cc.mrbird.febs.mall.mapper.*; import cc.mrbird.febs.mall.service.*; -import cc.mrbird.febs.mall.vo.ApiLeaderListVo; -import cc.mrbird.febs.mall.vo.OrderDetailVo; -import cc.mrbird.febs.mall.vo.OrderListVo; -import cc.mrbird.febs.mall.vo.OrderRefundVo; +import cc.mrbird.febs.mall.vo.*; import cc.mrbird.febs.pay.model.BrandWCPayRequestData; import cc.mrbird.febs.pay.model.OrderStateDto; import cc.mrbird.febs.pay.service.IPayService; @@ -219,11 +216,13 @@ //是否使用优惠卷 if(ObjectUtil.isNotEmpty(addOrderDto.getMemberCouponId())){ Long memberCouponId = addOrderDto.getMemberCouponId(); - BigDecimal skuCouponAmount = couponAmountMap.get(item.getSkuId());//使用折扣卷后的应该支付的钱 - if(skuCouponAmount.compareTo(BigDecimal.ZERO) > 0){ - amount = skuCouponAmount; + if(ObjectUtil.isNotEmpty(couponAmountMap.get(item.getSkuId()))){ + BigDecimal skuCouponAmount = couponAmountMap.get(item.getSkuId());//使用折扣卷后的应该支付的钱 + if(skuCouponAmount.compareTo(BigDecimal.ZERO) > 0){ + amount = skuCouponAmount; + } + orderItem.setMemberCouponId(memberCouponId); } - orderItem.setMemberCouponId(memberCouponId); } orderItem.setAmount(amount); orderItem.setCnt(item.getCnt()); @@ -352,14 +351,14 @@ skuMapPercent.put(keySkuId,divide); Integer type = mallGoodsCoupon.getType(); if(MallGoodsCoupon.TYPE_ONE == type){ - BigDecimal bigDecimal = realAmount.multiply(divide).setScale(2, BigDecimal.ROUND_DOWN);//每个SKU的减免金额(比例*减免金额) + BigDecimal bigDecimal = realAmount.multiply(divide).setScale(0, BigDecimal.ROUND_DOWN);//每个SKU的减免金额(比例*减免金额) BigDecimal skuRealAmount = valueSkuAmount.subtract(bigDecimal.compareTo(BigDecimal.ZERO) > 0 ? bigDecimal : BigDecimal.ZERO);//实际支付金额 couponAmountMap.put(keySkuId,skuRealAmount); } if(MallGoodsCoupon.TYPE_TWO == type){ BigDecimal divideTime = totalAmount.divide(costAmount, 0, BigDecimal.ROUND_DOWN);//累计减免次数 BigDecimal multiply = divideTime.multiply(realAmount);//实际减免金额 - BigDecimal bigDecimal = multiply.multiply(divide).setScale(2, BigDecimal.ROUND_DOWN);//每个SKU的减免金额(比例*实际减免金额) + BigDecimal bigDecimal = multiply.multiply(divide).setScale(0, BigDecimal.ROUND_DOWN);//每个SKU的减免金额(比例*实际减免金额) BigDecimal skuRealAmount = valueSkuAmount.subtract(bigDecimal.compareTo(BigDecimal.ZERO) > 0 ? bigDecimal : BigDecimal.ZERO);//实际支付金额 couponAmountMap.put(keySkuId,skuRealAmount); } @@ -612,6 +611,12 @@ // if (orderInfo == null || AppContants.DEL_FLAG_Y == orderInfo.getDelFlag()) { if (ObjectUtil.isNull(orderInfo)) { throw new FebsException("订单不存在"); + } + List<MallOrderItem> items = orderInfo.getItems(); + if(CollUtil.isNotEmpty(items)){ + for(MallOrderItem mallOrderItem : items){ + mallOrderItem.setItemAmount(mallOrderItemMapper.selectById(mallOrderItem.getId()).getAmount()); + } } OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo); @@ -1035,4 +1040,19 @@ return new FebsResponse().success(); } + @Override + public FebsResponse chooseCoupon(ApiChooseCouponDto chooseCouponDto) { + Map<Long, BigDecimal> couponAmountMap = getCouponAmountMap(chooseCouponDto.getMemberCouponId(), chooseCouponDto.getItems()); + ArrayList<ApiCouponAmountMapVo> objects = new ArrayList<>(); + for (Map.Entry<Long,BigDecimal> entry : couponAmountMap.entrySet()) { + Long keySkuId = entry.getKey(); + BigDecimal valueSkuAmount = entry.getValue(); + ApiCouponAmountMapVo apiCouponAmountMapVo = new ApiCouponAmountMapVo(); + apiCouponAmountMapVo.setId(keySkuId); + apiCouponAmountMapVo.setAmount(valueSkuAmount); + objects.add(apiCouponAmountMapVo); + } + return new FebsResponse().success().data(objects); + } + } -- Gitblit v1.9.1