From f83ccac5385bee25e358469b45a86898e6144c09 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=97=AD?= <2795210596@qq.com> Date: Sun, 13 Apr 2025 22:51:31 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9APP=E7=AB=AF=E6=90=9C?= =?UTF-8?q?=E7=B4=A2=E7=90=83=E6=9D=86=E5=95=86=E5=93=81=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=EF=BC=8C=E5=A2=9E=E5=8A=A0=E7=B2=BE=E5=87=86=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/local/dto/CueProductSearchDTO.java | 11 +++++++++++ .../LocalCueProductSearchRequestBuilder.java | 19 +++---------------- .../cloud/search/constant/EsConstant.java | 2 ++ .../app/LocalCueProductSearchController.java | 8 ++++++++ 4 files changed, 24 insertions(+), 16 deletions(-) diff --git a/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/dto/CueProductSearchDTO.java b/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/dto/CueProductSearchDTO.java index c4990af..4712764 100644 --- a/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/dto/CueProductSearchDTO.java +++ b/tmerclub-common/tmerclub-common-loacl/src/main/java/com/tmerclub/cloud/common/local/dto/CueProductSearchDTO.java @@ -20,5 +20,16 @@ public class CueProductSearchDTO implements Serializable { * 商品名称 */ private String productName; + /** + * 关联的球杆品牌ID + */ + private Long brandId; + /** + * 关联的球杆类型ID + */ + private Long typeId; + public void setProductName(String productName) { + this.productName = productName.trim(); + } } diff --git a/tmerclub-search/src/main/java/com/tmerclub/cloud/search/builder/LocalCueProductSearchRequestBuilder.java b/tmerclub-search/src/main/java/com/tmerclub/cloud/search/builder/LocalCueProductSearchRequestBuilder.java index b2b7128..70e8d25 100644 --- a/tmerclub-search/src/main/java/com/tmerclub/cloud/search/builder/LocalCueProductSearchRequestBuilder.java +++ b/tmerclub-search/src/main/java/com/tmerclub/cloud/search/builder/LocalCueProductSearchRequestBuilder.java @@ -2,13 +2,8 @@ package com.tmerclub.cloud.search.builder; import cn.hutool.core.util.ObjectUtil; import com.tmerclub.cloud.api.dto.EsPageDTO; -import com.tmerclub.cloud.api.vo.EsPageVO; -import com.tmerclub.cloud.common.constant.Constant; import com.tmerclub.cloud.common.i18n.I18nMessage; import com.tmerclub.cloud.common.local.dto.CueProductSearchDTO; -import com.tmerclub.cloud.common.local.vo.CueProductSearchVO; -import com.tmerclub.cloud.common.product.vo.search.SpuSearchVO; -import com.tmerclub.cloud.common.util.Json; import com.tmerclub.cloud.search.constant.EsConstant; import com.tmerclub.cloud.search.constant.EsIndexEnum; import com.tmerclub.cloud.search.util.EsSearchUtil; @@ -16,16 +11,11 @@ import org.elasticsearch.action.search.SearchRequest; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.SearchHit; -import org.elasticsearch.search.SearchHits; -import org.elasticsearch.search.aggregations.Aggregations; import org.elasticsearch.search.builder.SearchSourceBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; -import java.util.ArrayList; -import java.util.List; import java.util.Objects; /** @@ -87,13 +77,10 @@ public class LocalCueProductSearchRequestBuilder { * 关键字搜索 */ private void keywordSearch(CueProductSearchDTO param, BoolQueryBuilder boolQueryBuilder, Integer lang) { - if (ObjectUtil.isEmpty(param.getProductName())) { - return; - } - log.error("---------------------{}", param.getProductName()); - // 创建查询语句 ES中must和should不能同时使用 同时使用should失效 嵌套多个must 将should条件拼接在一个must中即可 BoolQueryBuilder keywordShouldQuery = QueryBuilders.boolQuery(); - keywordShouldQuery.should(QueryBuilders.wildcardQuery(EsConstant.CUE_PRODUCT_NAME, "*" + param.getProductName() + "*")); + keywordShouldQuery.must(QueryBuilders.wildcardQuery(EsConstant.CUE_PRODUCT_NAME, "*" + param.getProductName() + "*")); + keywordShouldQuery.must(QueryBuilders.termQuery(EsConstant.CUE_BRAND_ID, param.getBrandId())); + keywordShouldQuery.must(QueryBuilders.termQuery(EsConstant.CUE_TYPE_ID, param.getTypeId())); boolQueryBuilder.must(keywordShouldQuery); } } diff --git a/tmerclub-search/src/main/java/com/tmerclub/cloud/search/constant/EsConstant.java b/tmerclub-search/src/main/java/com/tmerclub/cloud/search/constant/EsConstant.java index cc2f27c..31b30b9 100644 --- a/tmerclub-search/src/main/java/com/tmerclub/cloud/search/constant/EsConstant.java +++ b/tmerclub-search/src/main/java/com/tmerclub/cloud/search/constant/EsConstant.java @@ -172,6 +172,8 @@ public interface EsConstant { * 球杆商品 */ String CUE_PRODUCT_NAME = "productName"; + String CUE_BRAND_ID = "brandId"; + String CUE_TYPE_ID = "typeId"; /** * 商品指定返回字段 diff --git a/tmerclub-search/src/main/java/com/tmerclub/cloud/search/controller/app/LocalCueProductSearchController.java b/tmerclub-search/src/main/java/com/tmerclub/cloud/search/controller/app/LocalCueProductSearchController.java index b5ab752..434eed6 100644 --- a/tmerclub-search/src/main/java/com/tmerclub/cloud/search/controller/app/LocalCueProductSearchController.java +++ b/tmerclub-search/src/main/java/com/tmerclub/cloud/search/controller/app/LocalCueProductSearchController.java @@ -1,5 +1,6 @@ package com.tmerclub.cloud.search.controller.app; +import cn.hutool.core.util.ObjectUtil; import com.tmerclub.cloud.api.dto.EsPageDTO; import com.tmerclub.cloud.api.vo.EsPageVO; import com.tmerclub.cloud.common.local.dto.CueProductSearchDTO; @@ -38,6 +39,13 @@ public class LocalCueProductSearchController { @GetMapping("/searchCueProductPage") @Operation(summary = "APP端搜索球杆商品接口", description = "APP端搜索球杆商品接口") public ServerResponseEntity> searchCueProductPage(@Valid EsPageDTO pageDTO, CueProductSearchDTO cueProductSearchDTO) { + // 判断搜索必要参数是否为空,如果为空则返回自定义异常 + if (ObjectUtil.isEmpty(cueProductSearchDTO.getProductName()) || + ObjectUtil.isEmpty(cueProductSearchDTO.getBrandId()) || + ObjectUtil.isEmpty(cueProductSearchDTO.getTypeId())) { + return ServerResponseEntity.showFailMsg("搜索参数不能为空"); + } + EsPageVO page = localCueProductSearchManager.page(pageDTO, cueProductSearchDTO); return ServerResponseEntity.success(page); }