From 3e9ce32124446cd42c1d50f0bbc9876dd4299b3d Mon Sep 17 00:00:00 2001 From: xiaoyong931011 <15274802129@163.com> Date: Mon, 11 Sep 2023 12:05:58 +0800 Subject: [PATCH] 优惠卷 --- src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java | 35 +++++++++++++++++++++++++++++++++++ 1 files changed, 35 insertions(+), 0 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 3eb553e..00f656f 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 @@ -45,6 +45,7 @@ import java.math.BigDecimal; import java.util.*; +import java.util.stream.Collectors; /** * @author wzy @@ -82,6 +83,8 @@ private final IApiMallTeamLeaderService iApiMallTeamLeaderService; private final IMallElectronicFenceService iMallElectronicFenceService; private final MallElectronicFenceMapper mallElectronicFenceMapper; + private final MallMemberCouponMapper mallMemberCouponMapper; + private final MallGoodsCouponMapper mallGoodsCouponMapper; @Override @Transactional(rollbackFor = Exception.class) @@ -183,6 +186,36 @@ } BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt())); + //是否使用优惠卷 + if(ObjectUtil.isNotEmpty(addOrderDto.getMemberCouponId())){ + Long memberCouponId = addOrderDto.getMemberCouponId(); + MallMemberCoupon mallMemberCoupon = mallMemberCouponMapper.selectById(memberCouponId); + if(ObjectUtil.isEmpty(mallMemberCoupon)){ + throw new FebsException(mallMemberCoupon.getCouponName()+"无法使用"); + } + Integer state = mallMemberCoupon.getState(); + if(1 != state){ + throw new FebsException(mallMemberCoupon.getCouponName()+"无法使用"); + } + Long goodsId = mallMemberCoupon.getGoodsId(); + if(goodsId != sku.getGoodsId()){ + throw new FebsException(sku.getGoodsName()+"无法使用"+mallMemberCoupon.getCouponName()); + } + MallGoodsCoupon mallGoodsCoupon = mallGoodsCouponMapper.selectById(mallMemberCoupon.getCouponId()); + if(ObjectUtil.isEmpty(mallGoodsCoupon)){ + throw new FebsException(mallGoodsCoupon.getName()+"无法使用"); + } + Integer stateCoupon = mallGoodsCoupon.getState(); + if(2 != stateCoupon){ + throw new FebsException(mallGoodsCoupon.getName()+"无法使用"); + } + BigDecimal costAmount = mallGoodsCoupon.getCostAmount(); + BigDecimal realAmount = mallGoodsCoupon.getRealAmount(); + if(amount.compareTo(costAmount) >= 0){ + amount = amount.subtract(realAmount); + orderItem.setMemberCouponId(memberCouponId); + } + } orderItem.setAmount(amount); orderItem.setCnt(item.getCnt()); orderItem.setOrderId(orderInfo.getId()); @@ -366,6 +399,8 @@ orderInfo.setDeliveryState(OrderDeliveryStateEnum.DELIVERY_WAIT.getValue()); mallMoneyFlowService.addMoneyFlow(member.getId(), orderInfo.getAmount().negate(), MoneyFlowTypeEnum.PAY.getValue(), orderInfo.getOrderNo(), FlowTypeEnum.BALANCE.getValue(),"余额支付",2); + + agentProducer.sendOrderCoupon(orderInfo.getId()); break; case "4": if (orderInfo.getOrderType() != 2) { -- Gitblit v1.9.1