diff --git a/cash-api/product-server/src/main/java/com/czg/controller/user/UProductController.java b/cash-api/product-server/src/main/java/com/czg/controller/user/UProductController.java index fca30ef4d..1187a99cb 100644 --- a/cash-api/product-server/src/main/java/com/czg/controller/user/UProductController.java +++ b/cash-api/product-server/src/main/java/com/czg/controller/user/UProductController.java @@ -1,7 +1,6 @@ package com.czg.controller.user; import com.czg.product.param.ShopProductSkuParam; -import com.czg.product.service.ProdGroupService; import com.czg.product.service.UProductService; import com.czg.product.vo.ShopGroupProductVo; import com.czg.product.vo.ShopProductInfoVo; @@ -9,6 +8,7 @@ import com.czg.product.vo.ShopProductSkuInfoVo; import com.czg.product.vo.ShopProductVo; import com.czg.resp.CzgResult; import com.czg.sa.StpKit; +import com.czg.service.RedisService; import com.czg.utils.AssertUtil; import com.czg.validator.ValidatorUtil; import com.czg.validator.group.DefaultGroup; @@ -33,7 +33,7 @@ import java.util.Map; @RequestMapping("/user/product") public class UProductController { private final UProductService uProductService; - private final ProdGroupService prodGroupService; + private final RedisService redisService; /** * 小程序点餐-热销商品列表 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 2a22bd09e..2e7351d68 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 @@ -109,4 +109,8 @@ public class ShopProductVo implements Serializable { * 销量 */ private BigDecimal salesVolume; + /** + * 店铺id + */ + private Long shopId; } diff --git a/cash-common/cash-common-tools/src/main/java/com/czg/constant/CacheConstant.java b/cash-common/cash-common-tools/src/main/java/com/czg/constant/CacheConstant.java index 0622fe6c0..d3c02be7c 100644 --- a/cash-common/cash-common-tools/src/main/java/com/czg/constant/CacheConstant.java +++ b/cash-common/cash-common-tools/src/main/java/com/czg/constant/CacheConstant.java @@ -27,4 +27,8 @@ public interface CacheConstant { * 点餐机PC端商品列表 */ String ADMIN_CLIENT_PRODUCT_LIST = ADMIN_CLIENT_PRODUCT_INFO + "list"; + /** + * 点餐机PC端商品列表 + */ + String SHOP_PRODUCT_STOCK = "shop:{}:product-stock:{}"; } 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 c4853db96..03efe9d58 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 @@ -2,6 +2,8 @@ package com.czg.service.product.service.impl; import cn.hutool.core.bean.BeanUtil; 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 com.czg.config.RabbitPublisher; import com.czg.enums.YesNoEnum; @@ -129,7 +131,7 @@ public class ProductRpcServiceImpl implements ProductRpcService { consStockFlowService.saveFlow(consStockFlow); } } - //ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); + ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); log.info("ProductService.--------------------------------------------库存更新成功"); } @@ -202,7 +204,7 @@ public class ProductRpcServiceImpl implements ProductRpcService { consStockFlowService.saveFlow(consStockFlow); } } - //ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); + ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); log.info("ProductService.--------------------------------------------库存更新成功"); } @@ -278,7 +280,7 @@ public class ProductRpcServiceImpl implements ProductRpcService { consStockFlowService.saveFlow(consStockFlow); } } - //ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); + ThreadUtil.execAsync(() -> rabbitPublisher.sendProductInfoChangeMsg(Convert.toStr(shopId))); log.info("ProductService.--------------------------------------------库存更新成功"); } 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 c88e9ce70..936bf7564 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 @@ -770,6 +770,11 @@ 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()); }); } + 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 a74fb0118..4b914d2c8 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 @@ -24,6 +24,7 @@ import com.czg.product.vo.ShopProductInfoVo; import com.czg.product.vo.ShopProductSkuInfoVo; import com.czg.product.vo.ShopProductVo; import com.czg.sa.StpKit; +import com.czg.service.RedisService; import com.czg.service.product.mapper.ProdGroupMapper; import com.czg.service.product.mapper.ProdGroupRelationMapper; import com.czg.service.product.mapper.ProdSkuMapper; @@ -56,6 +57,7 @@ public class UProductServiceImpl extends ServiceImpl imp private final ProdSkuMapper prodSkuMapper; private final ProdGroupMapper prodGroupMapper; private final ProdGroupRelationMapper prodGroupRelationMapper; + private final RedisService redisService; @Override @Cacheable(value = CacheConstant.USER_CLIENT_HOTS_PRODUCT, key = "#shopId", unless = "#result.isEmpty()") @@ -103,6 +105,7 @@ public class UProductServiceImpl extends ServiceImpl imp for (Long productId : productIdList) { ShopProductVo product = productKv.get(productId); ShopProductVo prod = BeanUtil.copyProperties(product, ShopProductVo.class); + prod.setShopId(shopId); if (product != null) { productList.add(prod); } @@ -174,6 +177,7 @@ public class UProductServiceImpl extends ServiceImpl imp } productList.parallelStream().forEach(record -> { record.setStockNumber(stock.getOrDefault(record.getId(), 0)); + refreshRedisStock(record.getShopId(), record.getId(), record.getStockNumber()); }); } @@ -184,9 +188,15 @@ public class UProductServiceImpl extends ServiceImpl imp } productList.parallelStream().forEach(record -> { record.setStockNumber(productStock.getOrDefault(record.getId(), 0)); + refreshRedisStock(record.getShopId(), record.getId(), 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/resources/mapper/ProductMapper.xml b/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml index 5b3409ac8..e954a62c8 100644 --- a/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml +++ b/cash-service/product-service/src/main/resources/mapper/ProductMapper.xml @@ -92,7 +92,8 @@ t1.select_spec_info, t1.group_snap, t1.pack_fee, - ifnull(t4.sales_volume, 0) as sales_volume + ifnull(t4.sales_volume, 0) as sales_volume, + t1.shop_id from tb_product t1 left join (select x.product_id, x.id as sku_id,