From c2a0a337498445683f81e33597bf694e0dc9fb68 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Thu, 15 Sep 2022 17:55:02 +0800
Subject: [PATCH] 20220902

---
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   34 ++++++++++++++++++++++++++--------
 1 files changed, 26 insertions(+), 8 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 b553009..86f5b94 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
@@ -76,6 +76,8 @@
     private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
     private final MallLeaderAchieveMapper mallLeaderAchieveMapper;
     private final IApiMallTeamLeaderService iApiMallTeamLeaderService;
+    private final IMallElectronicFenceService iMallElectronicFenceService;
+    private final MallElectronicFenceMapper mallElectronicFenceMapper;
 
     @Override
     @Transactional(rollbackFor = Exception.class)
@@ -90,6 +92,17 @@
         MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(takeUniqueCode);
         if(ObjectUtil.isEmpty(mallTeamLeader)){
             throw new FebsException("请重新选择团长");
+        }
+
+        //订单范围内才允许下单
+        MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
+        MallElectronicFence mallElectronicFence = mallElectronicFenceMapper.selectByTeamLeaderCode(mallTeamLeader.getUniqueCode());
+        if(ObjectUtil.isNotEmpty(mallElectronicFence)){
+            String inStr = iMallElectronicFenceService.fenceToLocation(mallElectronicFence.getGKey(),
+                    mallElectronicFence.getServiceId(), address.getLongitude() + "," + address.getLatitude(), mallElectronicFence.getGid());
+            if("1".equals(inStr)){
+                throw new FebsException("不在当前团长的配送范围内");
+            }
         }
 
         String orderNo = MallUtils.getOrderNum();
@@ -161,9 +174,12 @@
                         throw new FebsException(mallGoods.getGoodsName() + "已下架");
                     }
 
-                    mallGoods.setStock(mallGoods.getStock() - item.getCnt());
-                    mallGoods.setVolume(mallGoods.getVolume() + item.getCnt());
-                    mallGoodsMapper.updateById(mallGoods);
+//                    mallGoods.setStock(mallGoods.getStock() - item.getCnt());
+//                    mallGoods.setVolume(mallGoods.getVolume() + item.getCnt());
+                    Integer goodsResult = mallGoodsMapper.upDateStockAndVolumeByGoodsId(mallGoods.getId(), item.getCnt());
+                    if(1 != goodsResult){
+                        throw new FebsException(mallGoods.getGoodsName() + "库存不足");
+                    }
 
                     BigDecimal amount = sku.getPresentPrice().multiply(BigDecimal.valueOf(item.getCnt()));
                     orderItem.setAmount(amount);
@@ -183,10 +199,13 @@
                     total = total.add(amount);
                     carriage = carriage.add(mallGoods.getCarriage());
 
-                    sku.setStock(sku.getStock() - item.getCnt());
-                    sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
-                    mallGoodsSkuMapper.updateById(sku);
-
+//                    sku.setStock(sku.getStock() - item.getCnt());
+//                    sku.setSkuVolume(sku.getSkuVolume() + item.getCnt());
+//                    mallGoodsSkuMapper.updateById(sku);
+                    Integer skuResult = mallGoodsSkuMapper.upDateStockAndVolumeBySkuId(sku.getId(),item.getCnt());
+                    if(1 != skuResult){
+                        throw new FebsException(sku.getSkuName() + "库存不足");
+                    }
                     if (addOrderDto.getType() == 1) {
                         mallShoppingCartMapper.delBySkuId(sku.getId(), member.getId());
                     }
@@ -201,7 +220,6 @@
         }
         orderInfo.setAmount(total);
 
-        MallAddressInfo address = mallAddressInfoMapper.selectAddressInfoByMemberIdAndId(member.getId(), addOrderDto.getAddressId());
         orderInfo.setName(address.getName());
         orderInfo.setPhone(address.getPhone());
         orderInfo.setIsHome(addOrderDto.getIsHome());

--
Gitblit v1.9.1