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