From bcffc7b5e9ece6061192c815af12e3981ff2dbb2 Mon Sep 17 00:00:00 2001
From: Helius <wangdoubleone@gmail.com>
Date: Sat, 28 May 2022 20:09:43 +0800
Subject: [PATCH] add yunfei

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   14 +++++++++++++-
 1 files changed, 13 insertions(+), 1 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 a21cfb8..f8c4036 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
@@ -90,6 +90,7 @@
 
         this.baseMapper.insert(orderInfo);
         BigDecimal total = BigDecimal.ZERO;
+        BigDecimal carriage = BigDecimal.ZERO;
         for (AddOrderItemDto item : addOrderDto.getItems()) {
             MallOrderItem orderItem = new MallOrderItem();
 
@@ -127,6 +128,15 @@
                 }
 
                 MallGoods mallGoods = mallGoodsMapper.selectById(sku.getGoodsId());
+
+                // 零撸专区购买
+                if (new BigDecimal(mallGoods.getPresentPrice()).compareTo(BigDecimal.ZERO) == 0) {
+                    List<MallOrderItem> items = mallOrderItemMapper.selectItemByGoodsIdUnCancel(mallGoods.getId());
+                    if (CollUtil.isNotEmpty(items)) {
+                        throw new FebsException("无法重复领取同一个商品");
+                    }
+                }
+
                 if (MallGoods.ISSALE_STATUS_DISABLED.equals(mallGoods.getIsSale())) {
                     throw new FebsException(mallGoods.getGoodsName() + "已下架");
                 }
@@ -146,6 +156,7 @@
                 orderItem.setCostPrice(sku.getCostPrice());
 
                 total = total.add(amount);
+                carriage = carriage.add(mallGoods.getCarriage());
 
                 sku.setStock(sku.getStock() - item.getCnt());
                 sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
@@ -159,6 +170,7 @@
         }
 
         orderInfo.setAmount(total);
+        orderInfo.setCarriage(carriage);
         this.baseMapper.updateById(orderInfo);
 
         agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(), 15 * 60 * 1000L);
@@ -297,7 +309,7 @@
             throw new FebsException("支付密码错误");
         }
 
-        memberWalletService.reduce(orderInfo.getAmount(), mallMember.getId(), field);
+        memberWalletService.reduce(orderInfo.getAmount().add(orderInfo.getCarriage()), mallMember.getId(), field);
         return orderInfo.getOrderNo();
     }
 

--
Gitblit v1.9.1