修改APP端搜索球杆商品接口,增加精准查询参数
This commit is contained in:
parent
962a3ee5b5
commit
f83ccac538
@ -20,5 +20,16 @@ public class CueProductSearchDTO implements Serializable {
|
|||||||
* 商品名称
|
* 商品名称
|
||||||
*/
|
*/
|
||||||
private String productName;
|
private String productName;
|
||||||
|
/**
|
||||||
|
* 关联的球杆品牌ID
|
||||||
|
*/
|
||||||
|
private Long brandId;
|
||||||
|
/**
|
||||||
|
* 关联的球杆类型ID
|
||||||
|
*/
|
||||||
|
private Long typeId;
|
||||||
|
|
||||||
|
public void setProductName(String productName) {
|
||||||
|
this.productName = productName.trim();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -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,10 @@ 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() + "*"));
|
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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 商品指定返回字段
|
* 商品指定返回字段
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.tmerclub.cloud.search.controller.app;
|
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.dto.EsPageDTO;
|
||||||
import com.tmerclub.cloud.api.vo.EsPageVO;
|
import com.tmerclub.cloud.api.vo.EsPageVO;
|
||||||
import com.tmerclub.cloud.common.local.dto.CueProductSearchDTO;
|
import com.tmerclub.cloud.common.local.dto.CueProductSearchDTO;
|
||||||
@ -38,6 +39,13 @@ 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, CueProductSearchDTO cueProductSearchDTO) {
|
||||||
|
// 判断搜索必要参数是否为空,如果为空则返回自定义异常
|
||||||
|
if (ObjectUtil.isEmpty(cueProductSearchDTO.getProductName()) ||
|
||||||
|
ObjectUtil.isEmpty(cueProductSearchDTO.getBrandId()) ||
|
||||||
|
ObjectUtil.isEmpty(cueProductSearchDTO.getTypeId())) {
|
||||||
|
return ServerResponseEntity.showFailMsg("搜索参数不能为空");
|
||||||
|
}
|
||||||
|
|
||||||
EsPageVO<CueProductSearchVO> page = localCueProductSearchManager.page(pageDTO, cueProductSearchDTO);
|
EsPageVO<CueProductSearchVO> page = localCueProductSearchManager.page(pageDTO, cueProductSearchDTO);
|
||||||
return ServerResponseEntity.success(page);
|
return ServerResponseEntity.success(page);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user