商品缓存清除于设置

This commit is contained in:
Tankaikai 2025-04-18 10:55:17 +08:00
parent 5c4dba85a8
commit bc04e4ce14
1 changed files with 16 additions and 1 deletions

View File

@ -5,6 +5,7 @@ import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.convert.Convert; import cn.hutool.core.convert.Convert;
import cn.hutool.core.thread.ThreadUtil; import cn.hutool.core.thread.ThreadUtil;
import cn.hutool.core.util.NumberUtil; import cn.hutool.core.util.NumberUtil;
import cn.hutool.core.util.StrUtil;
import com.czg.config.RabbitPublisher; import com.czg.config.RabbitPublisher;
import com.czg.enums.YesNoEnum; import com.czg.enums.YesNoEnum;
import com.czg.product.dto.ProductStockSubtractDTO; import com.czg.product.dto.ProductStockSubtractDTO;
@ -31,6 +32,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import static com.czg.constant.CacheConstant.ADMIN_CLIENT_PRODUCT_LIST; import static com.czg.constant.CacheConstant.ADMIN_CLIENT_PRODUCT_LIST;
import static com.czg.constant.CacheConstant.SHOP_PRODUCT_STOCK;
/** /**
* 商品RPC远程调用服务接口实现 * 商品RPC远程调用服务接口实现
@ -89,6 +91,8 @@ public class ProductRpcServiceImpl implements ProductRpcService {
flow.setInOutItem(InOutItemEnum.ORDER_OUT.value()); flow.setInOutItem(InOutItemEnum.ORDER_OUT.value());
flow.setOrderId(orderId); flow.setOrderId(orderId);
productStockFlowService.saveFlow(flow); productStockFlowService.saveFlow(flow);
cleanCategoryProduct(shopId, product.getCategoryId());
refreshRedisProdStock(shopId, product.getId(), flow.getAfterNumber());
if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) { if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) {
isHasStockChangeToZero = true; isHasStockChangeToZero = true;
} }
@ -168,6 +172,7 @@ public class ProductRpcServiceImpl implements ProductRpcService {
flow.setRemark("红冲订单取消/退菜/退单消耗的库存"); flow.setRemark("红冲订单取消/退菜/退单消耗的库存");
flow.setOrderId(orderId); flow.setOrderId(orderId);
productStockFlowService.saveFlow(flow); productStockFlowService.saveFlow(flow);
refreshRedisProdStock(shopId, product.getId(), flow.getAfterNumber());
if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) { if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) {
isHasStockChangeToZero = true; isHasStockChangeToZero = true;
} }
@ -250,6 +255,7 @@ public class ProductRpcServiceImpl implements ProductRpcService {
flow.setRemark("红冲订单取消/退菜/退单消耗的库存"); flow.setRemark("红冲订单取消/退菜/退单消耗的库存");
flow.setOrderId(orderId); flow.setOrderId(orderId);
productStockFlowService.saveFlow(flow); productStockFlowService.saveFlow(flow);
refreshRedisProdStock(shopId, product.getId(), flow.getAfterNumber());
if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) { if (!isHasStockChangeToZero && NumberUtil.isLessOrEqual(flow.getAfterNumber(), BigDecimal.ZERO)) {
isHasStockChangeToZero = true; isHasStockChangeToZero = true;
} }
@ -312,4 +318,13 @@ public class ProductRpcServiceImpl implements ProductRpcService {
String key = ADMIN_CLIENT_PRODUCT_LIST + "::" + shopId + "::" + categoryId; String key = ADMIN_CLIENT_PRODUCT_LIST + "::" + shopId + "::" + categoryId;
redisService.del(key); 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);
}
}
} }