From f6e2f4ba4093e401475398e1bd3f7c2e8165b3cb Mon Sep 17 00:00:00 2001
From: luodangjia <luodangjia>
Date: 星期三, 18 十二月 2024 10:30:30 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java |  116 ++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 69 insertions(+), 47 deletions(-)

diff --git a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
index 3ad615f..a45c0d6 100644
--- a/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
+++ b/ruoyi-service/ruoyi-other/src/main/java/com/ruoyi/other/service/impl/GoodsServiceImpl.java
@@ -28,7 +28,10 @@
 
 import javax.annotation.Resource;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
@@ -169,38 +172,55 @@
             if (CollectionUtils.isEmpty(goodsShopList)){
                 throw new NullPointerException("请选择指定门店");
             }
-            for (GoodsShop goodsShop : goodsShopList) {
-                goodsShop.setGoodsId(goods.getId());
-                goodsShop.setId(null);
-            }
-            goodsShopService.saveBatch(goodsShopList);
+            saveGoodsShopList(goodsShopList, goods.getId());
         }
 
         // 指定用户
         List<GoodsAppUser> goodsAppUserList = goods.getGoodsAppUserList();
         if (!CollectionUtils.isEmpty(goodsAppUserList)){
-            for (GoodsAppUser goodsAppUser : goodsAppUserList) {
-                goodsAppUser.setId(null );
-                goodsAppUser.setGoodsId(goods.getId());
-            }
-            goodsAppUserService.saveBatch(goodsAppUserList);
+            saveGoodsAppUserList(goodsAppUserList, goods.getId());
         }
 
         // 会员价格配置
         List<GoodsVip> goodsVipList = goods.getGoodsVipList();
-        for (GoodsVip goodsVip : goodsVipList) {
-            goodsVip.setId(null);
-            goodsVip.setGoodsId(goods.getId());
-        }
-        goodsVipService.saveBatch(goodsVipList);
+        saveGoodsVipList(goodsVipList, goods.getId());
 
         // 特殊地区售价设置
         List<GoodsArea> goodsAreaList = goods.getGoodsAreaList();
         if (!CollectionUtils.isEmpty(goodsAreaList)){
+            saveGoodsAreaList(goodsAreaList, goods.getId());
+        }
+
+    }
+
+    @Override
+    public void updateManageGoods(Goods goods) {
+        goodsMapper.updateById(goods);
+        // 指定门店
+        List<GoodsShop> goodsShopList = goods.getGoodsShopList();
+        saveGoodsShopList(goodsShopList, goods.getId());
+
+        // 指定用户
+        List<GoodsAppUser> goodsAppUserList = goods.getGoodsAppUserList();
+        saveGoodsAppUserList(goodsAppUserList, goods.getId());
+
+        // 会员价格配置
+        List<GoodsVip> goodsVipList = goods.getGoodsVipList();
+        saveGoodsVipList(goodsVipList, goods.getId());
+
+        // 特殊地区售价设置
+        List<GoodsArea> goodsAreaList = goods.getGoodsAreaList();
+        saveGoodsAreaList(goodsAreaList, goods.getId());
+    }
+
+    private void saveGoodsAreaList(List<GoodsArea> goodsAreaList, Integer id) {
+        goodsAreaService.remove(new LambdaQueryWrapper<GoodsArea>()
+                .eq(GoodsArea::getGoodsId, id));
+        if (!CollectionUtils.isEmpty(goodsAreaList)){
             for (GoodsArea goodsArea : goodsAreaList) {
                 List<GoodsArea> goodsAreaList1 = goodsArea.getGoodsAreaList();
                 for (GoodsArea area : goodsAreaList1) {
-                    area.setGoodsId(goods.getId());
+                    area.setGoodsId(id);
                     area.setProvince(goodsArea.getProvince());
                     area.setCity(goodsArea.getCity());
                     area.setDistricts(goodsArea.getDistricts());
@@ -211,41 +231,40 @@
                 goodsAreaService.saveBatch(goodsAreaList1);
             }
         }
-
     }
 
-    @Override
-    public void updateManageGoods(Goods goods) {
-        goodsMapper.updateById(goods);
-        // 指定门店
-        List<GoodsShop> goodsShopList = goods.getGoodsShopList();
-        goodsShopService.updateBatchById(goodsShopList);
+    private void saveGoodsVipList(List<GoodsVip> goodsVipList, Integer id) {
+        goodsVipService.remove(new LambdaQueryWrapper<GoodsVip>()
+                .eq(GoodsVip::getGoodsId, id));
+        goodsVipList.forEach(item -> {
+            item.setId(null);
+            item.setGoodsId(id);
+        });
+        goodsVipService.saveBatch(goodsVipList);
+    }
 
-        // 指定用户
-        List<GoodsAppUser> goodsAppUserList = goods.getGoodsAppUserList();
-        goodsAppUserService.updateBatchById(goodsAppUserList);
-
-        // 会员价格配置
-        List<GoodsVip> goodsVipList = goods.getGoodsVipList();
-        goodsVipService.updateBatchById(goodsVipList);
-
-        // 特殊地区售价设置
-        List<GoodsArea> goodsAreaList = goods.getGoodsAreaList();
-        if (!CollectionUtils.isEmpty(goodsAreaList)){
-            for (GoodsArea goodsArea : goodsAreaList) {
-                List<GoodsArea> goodsAreaList1 = goodsArea.getGoodsAreaList();
-                for (GoodsArea area : goodsAreaList1) {
-                    area.setGoodsId(goods.getId());
-                    area.setProvince(goodsArea.getProvince());
-                    area.setCity(goodsArea.getCity());
-                    area.setDistricts(goodsArea.getDistricts());
-                    area.setProvinceCode(goodsArea.getProvinceCode());
-                    area.setCityCode(goodsArea.getCityCode());
-                    area.setDistrictsCode(goodsArea.getDistrictsCode());
-                }
-                goodsAreaService.updateBatchById(goodsAreaList1);
+    private void saveGoodsAppUserList(List<GoodsAppUser> goodsAppUserList, Integer id) {
+        goodsAppUserService.remove(new LambdaQueryWrapper<GoodsAppUser>()
+                .eq(GoodsAppUser::getGoodsId, id));
+        if (!CollectionUtils.isEmpty(goodsAppUserList)){
+            for (GoodsAppUser goodsAppUser : goodsAppUserList) {
+                goodsAppUser.setId(null );
+                goodsAppUser.setGoodsId(id);
             }
         }
+        goodsAppUserService.saveBatch(goodsAppUserList);
+    }
+
+    private void saveGoodsShopList(List<GoodsShop> goodsShopList, Integer goodsId) {
+        goodsShopService.remove(new LambdaQueryWrapper<GoodsShop>()
+                .eq(GoodsShop::getGoodsId, goodsId));
+        if (!CollectionUtils.isEmpty(goodsShopList)){
+            for (GoodsShop goodsShop : goodsShopList) {
+                goodsShop.setGoodsId(goodsId);
+                goodsShop.setId(null);
+            }
+        }
+        goodsShopService.saveBatch(goodsShopList);
     }
 
     @Override
@@ -322,6 +341,9 @@
 
     private List<VipSetting> getVipSettings(Stream<Integer> goodsVipList) {
         List<Integer> vipIds = goodsVipList.collect(Collectors.toList());
+        if (CollectionUtils.isEmpty(vipIds)){
+            return new ArrayList<>();
+        }
         return vipSettingService.listByIds(vipIds);
     }
 

--
Gitblit v1.7.1