diff --git a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java index 45c1ea98..19a1bab4 100644 --- a/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/GoodsMessageListener.java @@ -376,20 +376,18 @@ public class GoodsMessageListener implements RocketMQListener { */ private void generatorGoodsIndex(Goods goods, List goodsSkuList) { int skuSource = 100; + List esGoodsIndices = new ArrayList<>(); for (GoodsSku goodsSku : goodsSkuList) { - EsGoodsIndex esGoodsOld = goodsIndexService.findById(goodsSku.getId()); EsGoodsIndex goodsIndex = this.settingUpGoodsIndexData(goods, goodsSku); goodsIndex.setSkuSource(skuSource--); log.info("goodsSku:{}", goodsSku); - log.info("esGoodsOld:{}", esGoodsOld); //如果商品库存不为0,并且es中有数据 - if (goodsSku.getQuantity() > 0 && esGoodsOld == null) { + if (goodsSku.getQuantity() > 0) { log.info("生成商品索引 {}", goodsIndex); - this.goodsIndexService.addIndex(goodsIndex); - } else if (goodsSku.getQuantity() > 0 && esGoodsOld != null) { - goodsIndexService.updateIndex(goodsIndex); + esGoodsIndices.add(goodsIndex); } } + this.goodsIndexService.addIndex(esGoodsIndices); } private EsGoodsIndex settingUpGoodsIndexData(Goods goods, GoodsSku goodsSku) { diff --git a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java index 11a20fab..8421156a 100644 --- a/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java +++ b/framework/src/main/java/cn/lili/elasticsearch/BaseElasticsearchService.java @@ -29,7 +29,6 @@ import org.springframework.beans.factory.annotation.Qualifier; import java.io.IOException; import java.util.concurrent.CountDownLatch; import java.util.concurrent.TimeUnit; -import java.util.concurrent.atomic.AtomicReference; /** * @author paulG @@ -343,20 +342,20 @@ public abstract class BaseElasticsearchService { PutMappingRequest request = new PutMappingRequest(index) .source(source, XContentType.JSON); CountDownLatch latch = new CountDownLatch(1); - AtomicReference response = new AtomicReference<>(); client.indices().putMappingAsync( request, RequestOptions.DEFAULT, new ActionListener() { @Override public void onResponse(AcknowledgedResponse r) { - response.set(r); latch.countDown(); + log.info("创建索引mapping成功:{}", r); } @Override public void onFailure(Exception e) { latch.countDown(); + log.error("创建索引mapping失败", e); } }); latch.await(10, TimeUnit.SECONDS); diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java index e5a93839..aad7893e 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsIndexService.java @@ -38,6 +38,13 @@ public interface EsGoodsIndexService { */ void addIndex(EsGoodsIndex goods); + /** + * 添加商品索引 + * + * @param goods 商品索引信息 + */ + void addIndex(List goods); + /** * 更新商品索引 * diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java index c78a96af..0a02ea2a 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsIndexServiceImpl.java @@ -210,6 +210,20 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements } } + /** + * 添加商品索引 + * + * @param goods 商品索引信息 + */ + @Override + public void addIndex(List goods) { + try { + goodsIndexRepository.saveAll(goods); + } catch (Exception e) { + log.error("批量为商品生成索引异常", e); + } + } + @Override public void updateIndex(EsGoodsIndex goods) { goodsIndexRepository.save(goods);