Compare commits

..

2 Commits

4 changed files with 22 additions and 17 deletions

View File

@ -1,5 +1,6 @@
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;
@ -20,5 +21,18 @@ 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,13 +2,8 @@ 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;
@ -16,16 +11,11 @@ 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;
/** /**
@ -87,13 +77,12 @@ public class LocalCueProductSearchRequestBuilder {
* 关键字搜索 * 关键字搜索
*/ */
private void keywordSearch(CueProductSearchDTO param, BoolQueryBuilder boolQueryBuilder, Integer lang) { 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(); BoolQueryBuilder keywordShouldQuery = QueryBuilders.boolQuery();
keywordShouldQuery.should(QueryBuilders.wildcardQuery(EsConstant.CUE_PRODUCT_NAME, "*" + param.getProductName() + "*")); if (ObjectUtil.isNotEmpty(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); boolQueryBuilder.must(keywordShouldQuery);
} }
} }

View File

@ -172,6 +172,8 @@ 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, CueProductSearchDTO cueProductSearchDTO) { public ServerResponseEntity<EsPageVO<CueProductSearchVO>> searchCueProductPage(@Valid EsPageDTO pageDTO, @Valid CueProductSearchDTO cueProductSearchDTO) {
EsPageVO<CueProductSearchVO> page = localCueProductSearchManager.page(pageDTO, cueProductSearchDTO); EsPageVO<CueProductSearchVO> page = localCueProductSearchManager.page(pageDTO, cueProductSearchDTO);
return ServerResponseEntity.success(page); return ServerResponseEntity.success(page);
} }