From b07fc790e5f32a577320daef1c2876b9393727a0 Mon Sep 17 00:00:00 2001 From: misworga831 Date: Fri, 31 Mar 2023 16:49:42 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96es=E5=95=86=E5=93=81?= =?UTF-8?q?=E6=90=9C=E7=B4=A2=E8=BF=94=E5=9B=9E=E7=BB=93=E6=9E=9C=E3=80=82?= =?UTF-8?q?=E5=87=8F=E5=B0=91=E9=87=8D=E5=A4=8D=E8=BF=94=E5=9B=9E=E7=BB=93?= =?UTF-8?q?=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../goods/GoodsBuyerController.java | 8 +++---- .../search/service/EsGoodsSearchService.java | 10 +++++++++ .../serviceimpl/EsGoodsSearchServiceImpl.java | 21 +++++++++++++++---- 3 files changed, 30 insertions(+), 9 deletions(-) diff --git a/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java b/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java index fc5a5f0d1..19caa3e01 100644 --- a/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java +++ b/buyer-api/src/main/java/cn/lili/controller/goods/GoodsBuyerController.java @@ -18,14 +18,13 @@ import cn.lili.modules.search.service.HotWordsService; import cn.lili.modules.statistics.aop.PageViewPoint; import cn.lili.modules.statistics.aop.enums.PageViewEnum; import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.elasticsearch.core.SearchPage; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; @@ -104,10 +103,9 @@ public class GoodsBuyerController { @ApiOperation(value = "从ES中获取商品信息") @GetMapping("/es") - public ResultMessage> getGoodsByPageFromEs(EsGoodsSearchDTO goodsSearchParams, PageVO pageVO) { + public ResultMessage> getGoodsByPageFromEs(EsGoodsSearchDTO goodsSearchParams, PageVO pageVO) { pageVO.setNotConvert(true); - SearchPage esGoodsIndices = goodsSearchService.searchGoods(goodsSearchParams, pageVO); - return ResultUtil.data(esGoodsIndices); + return ResultUtil.data(goodsSearchService.searchGoodsByPage(goodsSearchParams, pageVO)); } @ApiOperation(value = "从ES中获取相关商品品牌名称,分类名称及属性") diff --git a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java index 22b46a27a..61930be05 100644 --- a/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java +++ b/framework/src/main/java/cn/lili/modules/search/service/EsGoodsSearchService.java @@ -4,6 +4,7 @@ import cn.lili.common.vo.PageVO; import cn.lili.modules.search.entity.dos.EsGoodsIndex; import cn.lili.modules.search.entity.dos.EsGoodsRelatedInfo; import cn.lili.modules.search.entity.dto.EsGoodsSearchDTO; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.springframework.data.elasticsearch.core.SearchPage; import java.util.List; @@ -25,6 +26,15 @@ public interface EsGoodsSearchService { */ SearchPage searchGoods(EsGoodsSearchDTO searchDTO, PageVO pageVo); + /** + * 商品搜索 + * + * @param searchDTO 搜索参数 + * @param pageVo 分页参数 + * @return 搜索结果 + */ + Page searchGoodsByPage(EsGoodsSearchDTO searchDTO, PageVO pageVo); + /** * 获取筛选器 * diff --git a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java index 669e6241c..114109f82 100644 --- a/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/search/serviceimpl/EsGoodsSearchServiceImpl.java @@ -17,6 +17,7 @@ import cn.lili.modules.search.entity.dto.SelectorOptions; import cn.lili.modules.search.service.EsGoodsSearchService; import cn.lili.modules.search.utils.SqlFilter; import com.alibaba.druid.util.StringUtils; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import lombok.extern.slf4j.Slf4j; import org.apache.lucene.search.join.ScoreMode; import org.elasticsearch.common.lucene.search.function.FieldValueFactorFunction; @@ -37,15 +38,13 @@ import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Pageable; -import org.springframework.data.elasticsearch.core.ElasticsearchOperations; -import org.springframework.data.elasticsearch.core.SearchHitSupport; -import org.springframework.data.elasticsearch.core.SearchHits; -import org.springframework.data.elasticsearch.core.SearchPage; +import org.springframework.data.elasticsearch.core.*; import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Service; import java.util.*; +import java.util.stream.Collectors; /** * ES商品搜索业务层实现 @@ -95,6 +94,20 @@ public class EsGoodsSearchServiceImpl implements EsGoodsSearchService { return SearchHitSupport.searchPageFor(search, searchQuery.getPageable()); } + @Override + public Page searchGoodsByPage(EsGoodsSearchDTO searchDTO, PageVO pageVo) { + SearchPage esGoodsIndices = this.searchGoods(searchDTO, pageVo); + Page resultPage = new Page<>(); + if (esGoodsIndices != null && !esGoodsIndices.getContent().isEmpty()) { + List collect = esGoodsIndices.getSearchHits().getSearchHits().stream().map(SearchHit::getContent).collect(Collectors.toList()); + resultPage.setRecords(collect); + resultPage.setPages(esGoodsIndices.getTotalPages()); + resultPage.setCurrent(esGoodsIndices.getNumber() + 1L); + resultPage.setSize(esGoodsIndices.getSize()); + resultPage.setTotal(esGoodsIndices.getTotalElements()); + } + return resultPage; + } @Override public EsGoodsRelatedInfo getSelector(EsGoodsSearchDTO goodsSearch, PageVO pageVo) {