From bc04e4ce1455a75101a1e4b0991c029f575eab5b Mon Sep 17 00:00:00 2001 From: Tankaikai Date: Fri, 18 Apr 2025 10:55:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E7=BC=93=E5=AD=98=E6=B8=85?= =?UTF-8?q?=E9=99=A4=E4=BA=8E=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/ProductRpcServiceImpl.java | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java index b55ca662..9e11962e 100644 --- a/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java +++ b/cash-service/product-service/src/main/java/com/czg/service/product/service/impl/ProductRpcServiceImpl.java @@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil; import cn.hutool.core.convert.Convert; import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.util.NumberUtil; +import cn.hutool.core.util.StrUtil; import com.czg.config.RabbitPublisher; import com.czg.enums.YesNoEnum; import com.czg.product.dto.ProductStockSubtractDTO; @@ -31,6 +32,7 @@ import java.util.List; import java.util.Map; import static com.czg.constant.CacheConstant.ADMIN_CLIENT_PRODUCT_LIST; +import static com.czg.constant.CacheConstant.SHOP_PRODUCT_STOCK; /** * 商品RPC远程调用服务接口实现 @@ -89,6 +91,8 @@ public class ProductRpcServiceImpl implements ProductRpcService { flow.setInOutItem(InOutItemEnum.ORDER_OUT.value()); flow.setOrderId(orderId); productStockFlowService.saveFlow(flow); + cleanCategoryProduct(shopId, product.getCategoryId()); + refreshRedisProdStock(shopId, product.getId(), flow.getAfterNumber()); if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) { isHasStockChangeToZero = true; } @@ -168,6 +172,7 @@ public class ProductRpcServiceImpl implements ProductRpcService { flow.setRemark("红冲订单取消/退菜/退单消耗的库存"); flow.setOrderId(orderId); productStockFlowService.saveFlow(flow); + refreshRedisProdStock(shopId, product.getId(), flow.getAfterNumber()); if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) { isHasStockChangeToZero = true; } @@ -250,6 +255,7 @@ public class ProductRpcServiceImpl implements ProductRpcService { flow.setRemark("红冲订单取消/退菜/退单消耗的库存"); flow.setOrderId(orderId); productStockFlowService.saveFlow(flow); + refreshRedisProdStock(shopId, product.getId(), flow.getAfterNumber()); if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) { isHasStockChangeToZero = true; } @@ -312,4 +318,13 @@ public class ProductRpcServiceImpl implements ProductRpcService { String key = ADMIN_CLIENT_PRODUCT_LIST + "::" + shopId + "::" + categoryId; redisService.del(key); } -} + + private void refreshRedisProdStock(Long shopId, Long productId, BigDecimal stockNumber) { + String key = StrUtil.format(SHOP_PRODUCT_STOCK, shopId, productId); + if (NumberUtil.isLessOrEqual(stockNumber, BigDecimal.ZERO)) { + redisService.del(key); + } else { + redisService.set(key, stockNumber); + } + } +} \ No newline at end of file