Browse Source

批量取消供货时,需要把没订单的商品记录给物理删除,有订单的软删除

zhangwl 1 month ago
parent
commit
01365121eb

+ 10 - 1
src/main/java/zs/payment/mapper/primary/ImsEweiShopGoodsMapper.java

@@ -3,6 +3,7 @@ package zs.payment.mapper.primary;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Mapper;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
+import org.apache.ibatis.annotations.Select;
 import zs.payment.entity.mysql.ImsEweiShopGoods;
 import zs.payment.entity.mysql.ImsEweiShopGoods;
 import zs.payment.req.order.AddressInfo;
 import zs.payment.req.order.AddressInfo;
 import zs.payment.req.order.SpuItem;
 import zs.payment.req.order.SpuItem;
@@ -30,4 +31,12 @@ public interface ImsEweiShopGoodsMapper extends BaseMapper<ImsEweiShopGoods> {
      * 多规格商品:从option子查询更新goods的价格字段
      * 多规格商品:从option子查询更新goods的价格字段
      */
      */
     void updateGoodsPriceByOption(@Param("goodsId") Long goodsId);
     void updateGoodsPriceByOption(@Param("goodsId") Long goodsId);
-}
+
+    /**
+     * 检查商品是否存在订单记录
+     * @param goodsId 商品ID
+     * @return true-存在订单,false-不存在订单
+     */
+    @Select("SELECT COUNT(1) > 0 FROM ims_ewei_shop_order_goods WHERE goodsid = #{goodsId}")
+    boolean existsOrderByGoodsId(@Param("goodsId") Long goodsId);
+}

+ 37 - 6
src/main/java/zs/payment/service/commodity/impl/CommodityProcureServiceImpl.java

@@ -1256,12 +1256,43 @@ public class CommodityProcureServiceImpl implements CommodityProcureService {
 
 
         // 取消供货
         // 取消供货
         yunMallGoodsService.saveGoods(gdId.toString(), 2);
         yunMallGoodsService.saveGoods(gdId.toString(), 2);
-        // 停止供货时取消推荐状态,以及gdId为null
-        LambdaUpdateWrapper<ImsEweiShopGoods> wrapper = new LambdaUpdateWrapper<>();
-        wrapper.eq(ImsEweiShopGoods::getGdId, gdId)
-                .set(ImsEweiShopGoods::getGdId,null)
-                    .set(ImsEweiShopGoods::getIssupplyRecommend,0);
-        goodsService.update(wrapper);
+        // 停止供货时,处理其他进货该商品的商城
+        // 1. 查询所有相同gd_id的其他进货商品(不包括当前商品,未删除,商品类型为1)
+        LambdaQueryWrapper<ImsEweiShopGoods> queryWrapper = new LambdaQueryWrapper<>();
+        queryWrapper.eq(ImsEweiShopGoods::getGdId, gdId)
+                .ne(ImsEweiShopGoods::getId, item.getId())
+                .eq(ImsEweiShopGoods::getDeleted, 0)
+                .eq(ImsEweiShopGoods::getCommoditytype, 1);
+        List<ImsEweiShopGoods> otherGoods = goodsService.list(queryWrapper);
+
+        // 2. 逐个处理
+        for (ImsEweiShopGoods otherGood : otherGoods) {
+            Long goodsId = otherGood.getId();
+
+            // 3. 检查是否存在订单记录(查询 ims_ewei_shop_order_goods 表)
+            boolean hasOrder = goodsMapper.existsOrderByGoodsId(goodsId);
+
+            if (!hasOrder) {
+                // 4a. 无订单记录:物理删除商品及关联数据
+                goodsService.removeById(goodsId);
+                specService.remove(new LambdaQueryWrapper<ImsEweiShopGoodsSpec>()
+                        .eq(ImsEweiShopGoodsSpec::getGoodsid, goodsId));
+                optionService.remove(new LambdaQueryWrapper<ImsEweiShopGoodsOption>()
+                        .eq(ImsEweiShopGoodsOption::getGoodsid, goodsId));
+                paramService.remove(new LambdaQueryWrapper<ImsEweiShopGoodsParam>()
+                        .eq(ImsEweiShopGoodsParam::getGoodsid, goodsId));
+                log.info("物理删除其他进货商品及关联数据 goodsId={}", goodsId);
+            } else {
+                // 4b. 有订单记录:软删除
+                LambdaUpdateWrapper<ImsEweiShopGoods> updateWrapper = new LambdaUpdateWrapper<>();
+                updateWrapper.eq(ImsEweiShopGoods::getId, goodsId)
+                        .set(ImsEweiShopGoods::getIssupplyRecommend,0)
+                        .set(ImsEweiShopGoods::getDeleted, 1)
+                        .set(ImsEweiShopGoods::getStatus, 0);
+                goodsService.update(updateWrapper);
+                log.info("软删除其他进货商品 goodsId={}", goodsId);
+            }
+        }
 
 
     }
     }