diff --git a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java index e03d38c0..ceee4a1a 100644 --- a/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java +++ b/consumer/src/main/java/cn/lili/event/impl/StockUpdateExecute.java @@ -358,6 +358,7 @@ public class StockUpdateExecute implements OrderStatusChangeEvent { skuKeys.add(GoodsSkuService.getStockCacheKey(orderItem.getSkuId())); GoodsSku goodsSku = new GoodsSku(); goodsSku.setId(orderItem.getSkuId()); + goodsSku.setGoodsId(orderItem.getGoodsId()); goodsSkus.add(goodsSku); } //批量获取商品库存 diff --git a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java index 72e32930..aa6bc4c4 100644 --- a/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/goods/serviceimpl/GoodsSkuServiceImpl.java @@ -506,18 +506,14 @@ public class GoodsSkuServiceImpl extends ServiceImpl i @Override @Transactional(rollbackFor = Exception.class) public void updateGoodsStuck(List goodsSkus) { - //商品id集合 hashset 去重复 - Set goodsIds = new HashSet<>(); - for (GoodsSku sku : goodsSkus) { - goodsIds.add(sku.getGoodsId()); - } + Map> groupByGoodsIds = goodsSkus.stream().collect(Collectors.groupingBy(GoodsSku::getGoodsId)); //获取相关的sku集合 LambdaQueryWrapper lambdaQueryWrapper = new LambdaQueryWrapper<>(); - lambdaQueryWrapper.in(GoodsSku::getGoodsId, goodsIds); + lambdaQueryWrapper.in(GoodsSku::getGoodsId, groupByGoodsIds.keySet()); List goodsSkuList = this.list(lambdaQueryWrapper); //统计每个商品的库存 - for (String goodsId : goodsIds) { + for (String goodsId : groupByGoodsIds.keySet()) { //库存 Integer quantity = 0; for (GoodsSku goodsSku : goodsSkuList) {