From e0be773f58b404719b532528202675359c8eb157 Mon Sep 17 00:00:00 2001
From: xiaoyong931011 <15274802129@163.com>
Date: Tue, 13 Sep 2022 16:21:40 +0800
Subject: [PATCH] 20220902

---
 src/main/resources/mapper/modules/MallGoodsMapper.xml                           |    7 +++++++
 src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsSkuMapper.java                |    2 ++
 src/test/java/cc/mrbird/febs/ProfitTest.java                                    |   17 +++++++++++------
 src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java |   20 +++++++++++++-------
 src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java                   |    2 ++
 src/main/resources/mapper/modules/MallGoodsSkuMapper.xml                        |    7 +++++++
 6 files changed, 42 insertions(+), 13 deletions(-)

diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java
index 0a0e495..4314de6 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsMapper.java
@@ -48,4 +48,6 @@
     IPage<DataDictionaryCustom> getDeliveryHomeListInPage(Page<DataDictionaryCustom> page, @Param("record")AdminHomeDeliverySettingVo adminHomeDeliverySettingVo);
 
     MallGoodsCommentVo findMallGoodsCommentLevelByGoodsId(@Param("id")Long id);
+
+    Integer upDateStockAndVolumeByGoodsId(@Param("id")Long id,@Param("cnt")Integer cnt);
 }
diff --git a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsSkuMapper.java b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsSkuMapper.java
index d4d5900..fe8ad12 100644
--- a/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsSkuMapper.java
+++ b/src/main/java/cc/mrbird/febs/mall/mapper/MallGoodsSkuMapper.java
@@ -19,4 +19,6 @@
     MallGoodsSku selectSkuInfoById(@Param("id") Long id);
 
     int delSkuByIds(@Param("list") List<Long> ids);
+
+    Integer upDateStockAndVolumeBySkuId(@Param("id")Long id, @Param("cnt")Integer cnt);
 }
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..c803616 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
@@ -161,9 +161,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 +186,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());
                     }
diff --git a/src/main/resources/mapper/modules/MallGoodsMapper.xml b/src/main/resources/mapper/modules/MallGoodsMapper.xml
index b401ffd..697cbed 100644
--- a/src/main/resources/mapper/modules/MallGoodsMapper.xml
+++ b/src/main/resources/mapper/modules/MallGoodsMapper.xml
@@ -264,4 +264,11 @@
         from mall_goods_comment a limit 1
     </select>
 
+    <update id="upDateStockAndVolumeByGoodsId">
+        update mall_goods
+        set stock = stock - #{cnt},
+            volume = volume + #{cnt}
+        where id=#{id} and  stock - #{cnt} <![CDATA[ >= ]]> 0
+    </update>
+
 </mapper>
\ No newline at end of file
diff --git a/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml b/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml
index 99771dc..49deb04 100644
--- a/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml
+++ b/src/main/resources/mapper/modules/MallGoodsSkuMapper.xml
@@ -38,4 +38,11 @@
             #{item}
         </foreach>
     </delete>
+
+    <update id="upDateStockAndVolumeBySkuId">
+        update mall_goods_sku
+        set stock = stock - #{cnt},
+            sku_volume = sku_volume + #{cnt}
+        where id=#{id} and  stock - #{cnt} <![CDATA[ >= ]]> 0
+    </update>
 </mapper>
\ No newline at end of file
diff --git a/src/test/java/cc/mrbird/febs/ProfitTest.java b/src/test/java/cc/mrbird/febs/ProfitTest.java
index 9c916cc..e9f366a 100644
--- a/src/test/java/cc/mrbird/febs/ProfitTest.java
+++ b/src/test/java/cc/mrbird/febs/ProfitTest.java
@@ -198,15 +198,20 @@
     }
     @Autowired
     private IXcxPayService iXcxPayService;
+    @Autowired
+    private MallGoodsMapper mallGoodsMapper;
 
     @Test
     public void qrcodeBase64(){
-        WxGenerateQrCodeDto wxGenerateQrCodeDto = new WxGenerateQrCodeDto();
-        wxGenerateQrCodeDto.setPage("pages/product/details");
-        wxGenerateQrCodeDto.setScene("35");
-        FebsResponse febsResponse = iXcxPayService.generateQrCode(wxGenerateQrCodeDto);
-        String data = febsResponse.get("data").toString();
-        System.out.println(data);
+
+        Integer integer = mallGoodsMapper.upDateStockAndVolumeByGoodsId(35L, 3);
+        System.out.println(integer);
+//        WxGenerateQrCodeDto wxGenerateQrCodeDto = new WxGenerateQrCodeDto();
+//        wxGenerateQrCodeDto.setPage("pages/product/details");
+//        wxGenerateQrCodeDto.setScene("35");
+//        FebsResponse febsResponse = iXcxPayService.generateQrCode(wxGenerateQrCodeDto);
+//        String data = febsResponse.get("data").toString();
+//        System.out.println(data);
     }
 
 

--
Gitblit v1.9.1