From 4316fa8953c3f05a890c08992aa5e916a8d491e1 Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 9 Jun 2022 16:43:16 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E5=95=86=E5=93=81=E7=B4=A2=E5=BC=95=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E7=BC=96=E8=BE=91=E5=95=86=E5=93=81=E6=97=B6=EF=BC=8C=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E5=8E=9F=E5=95=86=E5=93=81=E7=9A=84=E9=94=80=E9=87=8F?= =?UTF-8?q?=E3=80=81=E5=A5=BD=E8=AF=84=E7=8E=87=E5=92=8C=E8=AF=84=E4=BB=B7?= =?UTF-8?q?=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../serviceimpl/GoodsSkuServiceImpl.java | 32 ++++++++++++++++--- .../search/entity/dos/EsGoodsIndex.java | 5 +-- .../serviceimpl/EsGoodsIndexServiceImpl.java | 3 +- 3 files changed, 32 insertions(+), 8 deletions(-) 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 aa6bc4c4..c4072466 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 @@ -14,6 +14,7 @@ import cn.lili.common.properties.RocketmqCustomProperties; import cn.lili.common.security.context.UserContext; import cn.lili.common.utils.SnowFlake; import cn.lili.modules.goods.entity.dos.Goods; +import cn.lili.modules.goods.entity.dos.GoodsGallery; import cn.lili.modules.goods.entity.dos.GoodsSku; import cn.lili.modules.goods.entity.dto.GoodsOperationDTO; import cn.lili.modules.goods.entity.dto.GoodsSearchParams; @@ -166,8 +167,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i } else { skuList = new ArrayList<>(); for (Map map : goodsOperationDTO.getSkuList()) { - GoodsSku sku = null; - sku = GoodsSkuBuilder.build(goods, map, goodsOperationDTO); + GoodsSku sku = GoodsSkuBuilder.build(goods, map, goodsOperationDTO); renderGoodsSku(sku, goodsOperationDTO); skuList.add(sku); //如果商品状态值不对,则es索引移除 @@ -636,6 +636,7 @@ public class GoodsSkuServiceImpl extends ServiceImpl i // 商品销售模式渲染器 salesModelRenders.stream().filter(i -> i.getSalesMode().equals(goodsOperationDTO.getSalesModel())).findFirst().ifPresent(i -> i.renderBatch(goodsSkuList, goodsOperationDTO)); for (GoodsSku goodsSku : goodsSkuList) { + extendOldSkuValue(goodsSku); this.renderImages(goodsSku); } } @@ -647,22 +648,43 @@ public class GoodsSkuServiceImpl extends ServiceImpl i * @param goodsOperationDTO 商品操作DTO */ void renderGoodsSku(GoodsSku goodsSku, GoodsOperationDTO goodsOperationDTO) { + extendOldSkuValue(goodsSku); // 商品销售模式渲染器 salesModelRenders.stream().filter(i -> i.getSalesMode().equals(goodsOperationDTO.getSalesModel())).findFirst().ifPresent(i -> i.renderSingle(goodsSku, goodsOperationDTO)); this.renderImages(goodsSku); } + /** + * 将原sku的一些不会直接传递的值放到新的sku中 + * + * @param goodsSku 商品sku + */ + private void extendOldSkuValue(GoodsSku goodsSku) { + if (CharSequenceUtil.isNotEmpty(goodsSku.getGoodsId())) { + GoodsSku oldSku = this.getGoodsSkuByIdFromCache(goodsSku.getId()); + if (oldSku != null) { + goodsSku.setCommentNum(oldSku.getCommentNum()); + goodsSku.setViewCount(oldSku.getViewCount()); + goodsSku.setBuyCount(oldSku.getBuyCount()); + goodsSku.setGrade(oldSku.getGrade()); + } + } + } + /** * 渲染sku图片 * - * @param goodsSku + * @param goodsSku sku */ void renderImages(GoodsSku goodsSku) { JSONObject jsonObject = JSONUtil.parseObj(goodsSku.getSpecs()); List> images = jsonObject.get("images", List.class); if (images != null && !images.isEmpty()) { - goodsSku.setThumbnail(goodsGalleryService.getGoodsGallery(images.get(0).get("url")).getThumbnail()); - goodsSku.setSmall(goodsGalleryService.getGoodsGallery(images.get(0).get("url")).getSmall()); + GoodsGallery goodsGallery = goodsGalleryService.getGoodsGallery(images.get(0).get("url")); + goodsSku.setBig(goodsGallery.getOriginal()); + goodsSku.setOriginal(goodsGallery.getOriginal()); + goodsSku.setThumbnail(goodsGallery.getThumbnail()); + goodsSku.setSmall(goodsGallery.getSmall()); } } diff --git a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java index 9687f832..743b5dd5 100644 --- a/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java +++ b/framework/src/main/java/cn/lili/modules/search/entity/dos/EsGoodsIndex.java @@ -28,7 +28,7 @@ import java.util.Map; * @author paulG **/ @Data -@Document(indexName = "#{@elasticsearchProperties.indexPrefix}_" + EsSuffix.GOODS_INDEX_NAME) +@Document(indexName = "#{@elasticsearchProperties.indexPrefix}_" + EsSuffix.GOODS_INDEX_NAME, createIndex = false) @ToString @NoArgsConstructor @Accessors(chain = true) @@ -215,6 +215,7 @@ public class EsGoodsIndex implements Serializable { /** * 销售模式 + * * @see cn.lili.modules.goods.entity.enums.GoodsSalesModeEnum */ @Field(type = FieldType.Text) @@ -316,7 +317,7 @@ public class EsGoodsIndex implements Serializable { /** * 参数索引增加 * - * @param sku 商品sku信息 + * @param sku 商品sku信息 * @param goodsParamDTOS 商品参数信息 */ public EsGoodsIndex(GoodsSku sku, List goodsParamDTOS) { 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 063de202..2c999f64 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 @@ -66,6 +66,7 @@ import org.springframework.stereotype.Service; import java.io.IOException; import java.lang.reflect.Field; import java.util.*; +import java.util.concurrent.TimeUnit; import java.util.stream.Collectors; /** @@ -127,7 +128,7 @@ public class EsGoodsIndexServiceImpl extends BaseElasticsearchService implements Boolean flag = (Boolean) cache.get(CachePrefix.INIT_INDEX_FLAG.getPrefix()); //为空则默认写入没有任务 if (flag == null) { - cache.put(CachePrefix.INIT_INDEX_FLAG.getPrefix(), false); + cache.put(CachePrefix.INIT_INDEX_FLAG.getPrefix(), false, 10L, TimeUnit.MINUTES); } //有正在初始化的任务,则提示异常 if (Boolean.TRUE.equals(flag)) {