Compare commits

..

No commits in common. "659871efda4ae067ef354b75de5d33539fb8594c" and "962a3ee5b5adc0413b7d863ddae1977206749e73" have entirely different histories.

4 changed files with 17 additions and 22 deletions

View File

@ -1,6 +1,5 @@
package com.tmerclub.cloud.common.local.dto; package com.tmerclub.cloud.common.local.dto;
import jakarta.validation.constraints.NotNull;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
@ -21,18 +20,5 @@ public class CueProductSearchDTO implements Serializable {
* 商品名称 * 商品名称
*/ */
private String productName; private String productName;
/**
* 关联的球杆品牌ID
*/
@NotNull(message = "关联的球杆品牌ID不能为空")
private Long brandId;
/**
* 关联的球杆类型ID
*/
@NotNull(message = "关联的球杆类型ID不能为空")
private Long typeId;
public void setProductName(String productName) {
this.productName = productName.trim();
}
} }

View File

@ -2,8 +2,13 @@ package com.tmerclub.cloud.search.builder;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.tmerclub.cloud.api.dto.EsPageDTO; 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.i18n.I18nMessage;
import com.tmerclub.cloud.common.local.dto.CueProductSearchDTO; 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.EsConstant;
import com.tmerclub.cloud.search.constant.EsIndexEnum; import com.tmerclub.cloud.search.constant.EsIndexEnum;
import com.tmerclub.cloud.search.util.EsSearchUtil; import com.tmerclub.cloud.search.util.EsSearchUtil;
@ -11,11 +16,16 @@ import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders; 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.elasticsearch.search.builder.SearchSourceBuilder;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects; import java.util.Objects;
/** /**
@ -77,12 +87,13 @@ public class LocalCueProductSearchRequestBuilder {
* 关键字搜索 * 关键字搜索
*/ */
private void keywordSearch(CueProductSearchDTO param, BoolQueryBuilder boolQueryBuilder, Integer lang) { private void keywordSearch(CueProductSearchDTO param, BoolQueryBuilder boolQueryBuilder, Integer lang) {
BoolQueryBuilder keywordShouldQuery = QueryBuilders.boolQuery(); if (ObjectUtil.isEmpty(param.getProductName())) {
if (ObjectUtil.isNotEmpty(param.getProductName())) { return;
keywordShouldQuery.must(QueryBuilders.wildcardQuery(EsConstant.CUE_PRODUCT_NAME, "*" + param.getProductName() + "*"));
} }
keywordShouldQuery.must(QueryBuilders.termQuery(EsConstant.CUE_BRAND_ID, param.getBrandId())); log.error("---------------------{}", param.getProductName());
keywordShouldQuery.must(QueryBuilders.termQuery(EsConstant.CUE_TYPE_ID, param.getTypeId())); // 创建查询语句 ES中must和should不能同时使用 同时使用should失效 嵌套多个must 将should条件拼接在一个must中即可
BoolQueryBuilder keywordShouldQuery = QueryBuilders.boolQuery();
keywordShouldQuery.should(QueryBuilders.wildcardQuery(EsConstant.CUE_PRODUCT_NAME, "*" + param.getProductName() + "*"));
boolQueryBuilder.must(keywordShouldQuery); boolQueryBuilder.must(keywordShouldQuery);
} }
} }

View File

@ -172,8 +172,6 @@ public interface EsConstant {
* 球杆商品 * 球杆商品
*/ */
String CUE_PRODUCT_NAME = "productName"; String CUE_PRODUCT_NAME = "productName";
String CUE_BRAND_ID = "brandId";
String CUE_TYPE_ID = "typeId";
/** /**
* 商品指定返回字段 * 商品指定返回字段

View File

@ -37,7 +37,7 @@ public class LocalCueProductSearchController {
*/ */
@GetMapping("/searchCueProductPage") @GetMapping("/searchCueProductPage")
@Operation(summary = "APP端搜索球杆商品接口", description = "APP端搜索球杆商品接口") @Operation(summary = "APP端搜索球杆商品接口", description = "APP端搜索球杆商品接口")
public ServerResponseEntity<EsPageVO<CueProductSearchVO>> searchCueProductPage(@Valid EsPageDTO pageDTO, @Valid CueProductSearchDTO cueProductSearchDTO) { public ServerResponseEntity<EsPageVO<CueProductSearchVO>> searchCueProductPage(@Valid EsPageDTO pageDTO, CueProductSearchDTO cueProductSearchDTO) {
EsPageVO<CueProductSearchVO> page = localCueProductSearchManager.page(pageDTO, cueProductSearchDTO); EsPageVO<CueProductSearchVO> page = localCueProductSearchManager.page(pageDTO, cueProductSearchDTO);
return ServerResponseEntity.success(page); return ServerResponseEntity.success(page);
} }