From 450cc693d0d335319172500dd9f613281a1da807 Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Wed, 16 Apr 2025 18:34:38 +0800 Subject: [PATCH] =?UTF-8?q?=E5=BC=80=E5=85=B3=E5=BA=93=E5=AD=98=E3=80=81?= =?UTF-8?q?=E7=A7=BB=E9=99=A4=E5=95=86=E5=93=81=E5=BA=93=E5=AD=98=E7=BC=93?= =?UTF-8?q?=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../czg/product/vo/ShopProductSkuInfoVo.java | 14 +++++++++++--- .../java/com/czg/product/vo/ShopProductVo.java | 4 ++++ .../service/impl/ProductServiceImpl.java | 18 +++++++++++++----- .../service/impl/UProductServiceImpl.java | 11 ++++++++--- .../main/resources/mapper/ProductMapper.xml | 3 ++- 5 files changed, 38 insertions(+), 12 deletions(-) diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductSkuInfoVo.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductSkuInfoVo.java index fdec2f1a..9d221413 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductSkuInfoVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductSkuInfoVo.java @@ -67,7 +67,7 @@ public class ShopProductSkuInfoVo implements Serializable { */ private BigDecimal realSalesNumber; /** - * 是否售罄 + * 是否售罄(同isSoldStock) */ private Integer isPauseSale; /** @@ -75,11 +75,19 @@ public class ShopProductSkuInfoVo implements Serializable { */ private Integer stockNumber; /** - * 是否售罄 + * 是否售罄(isPauseSale) */ private Integer isSoldStock; /** - * 是否上架 + * 是否上架(同isGrounding) */ private Integer isSale; + /** + * 是否开启库存 + */ + private Integer isStock; + /** + * 是否上架(同isSale) + */ + private Integer isGrounding; } diff --git a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java index 2e7351d6..15ef4e9d 100644 --- a/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java +++ b/cash-common/cash-common-service/src/main/java/com/czg/product/vo/ShopProductVo.java @@ -113,4 +113,8 @@ public class ShopProductVo implements Serializable { * 店铺id */ private Long shopId; + /** + * 是否开启库存 + */ + private Integer isStock; } diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java index d686c882..a23d99f7 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductServiceImpl.java @@ -403,17 +403,20 @@ public class ProductServiceImpl extends ServiceImpl impl entity.setIsDel(DeleteEnum.NORMAL.value()); entity.setShopId(shopId); if (!ProductTypeEnum.SKU.value().equals(entity.getType())) { - entity.setSpecId(null); + UpdateChain.of(Product.class).set(Product::getSpecId, null).eq(Product::getId, dto.getId()).update(); } - entity.setSpecId(null); super.updateById(entity); // 清除商品分类列表缓存 - if (!old.getCategoryId().equals(dto.getCategoryId())) { + Long categoryId = ObjUtil.defaultIfNull(dto.getCategoryId(), old.getCategoryId()); + if (!old.getCategoryId().equals(categoryId)) { // 清除旧分类缓存&新分类缓存 clearProductCache(old.getCategoryId(), entity.getCategoryId()); - }else { + } else { clearProductCache(old.getCategoryId()); } + if (ObjUtil.defaultIfNull(dto.getIsStock(), old.getIsStock()) == YesNoEnum.NO.value()) { + redisService.del(StrUtil.format(CacheConstant.SHOP_PRODUCT_STOCK, shopId, dto.getId())); + } List skuList = dto.getSkuList(); // 商品SKU-ID列表 List skuIdList = prodSkuMapper.selectListByQueryAs(query().select(ProdSku::getId).eq(ProdSku::getProductId, dto.getId()), Long.class); @@ -772,9 +775,14 @@ public class ProductServiceImpl extends ServiceImpl impl Map stock = list.stream().collect(Collectors.toMap(Product::getId, Product::getStockNumber)); records.parallelStream().forEach(record -> { record.setStockNumber(stock.getOrDefault(record.getId(), 0)); - refreshRedisStock(record.getShopId(), record.getId(), record.getStockNumber()); + if (record.getIsStock() == YesNoEnum.YES.value()) { + refreshRedisStock(record.getShopId(), record.getId(), record.getStockNumber()); + } else { + redisService.del(StrUtil.format(CacheConstant.SHOP_PRODUCT_STOCK, record.getShopId(), record.getStockNumber())); + } }); } + private void refreshRedisStock(Long shopId, Long productId, Integer stockNumber) { String key = StrUtil.format(CacheConstant.SHOP_PRODUCT_STOCK, shopId, productId); redisService.set(key, stockNumber); diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java index b980ad9e..53324a33 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/UProductServiceImpl.java @@ -153,8 +153,9 @@ public class UProductServiceImpl extends ServiceImpl imp // throw new CzgException("商品SKU不可售或不存在"); if (data != null) { data.setStockNumber(ObjUtil.defaultIfNull(product.getStockNumber(), 0)); - data.setIsSoldStock(product.getIsSoldStock()); - data.setIsSale(product.getIsSale()); + data.setIsSoldStock(data.getIsPauseSale()); + data.setIsSale(data.getIsGrounding()); + data.setIsStock(product.getIsStock()); return data; } return null; @@ -188,7 +189,11 @@ public class UProductServiceImpl extends ServiceImpl imp } productList.parallelStream().forEach(record -> { record.setStockNumber(productStock.getOrDefault(record.getId(), 0)); - refreshRedisStock(record.getShopId(), record.getId(), record.getStockNumber()); + if (record.getIsStock() == YesNoEnum.YES.value()) { + refreshRedisStock(record.getShopId(), record.getId(), record.getStockNumber()); + } else { + redisService.del(StrUtil.format(CacheConstant.SHOP_PRODUCT_STOCK, record.getShopId(), record.getId())); + } }); } diff --git a/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml b/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml index e954a62c..df12b590 100644 --- a/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml +++ b/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml @@ -93,7 +93,8 @@ t1.group_snap, t1.pack_fee, ifnull(t4.sales_volume, 0) as sales_volume, - t1.shop_id + t1.shop_id, + t1.is_stock from tb_product t1 left join (select x.product_id, x.id as sku_id,