feat(foundations):新增客户端检索上架服务功能
This commit is contained in:
@@ -3,6 +3,7 @@ package com.jzo2o.foundations.controller.consumer;
|
||||
import com.jzo2o.foundations.model.dto.response.ServeAggregationSimpleResDTO;
|
||||
import com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO;
|
||||
import com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO;
|
||||
import com.jzo2o.foundations.model.dto.response.ServeSimpleResDTO;
|
||||
import com.jzo2o.foundations.service.IServeService;
|
||||
import com.jzo2o.foundations.service.IServeTypeService;
|
||||
import io.swagger.annotations.Api;
|
||||
@@ -51,6 +52,16 @@ public class ServeController {
|
||||
return serveService.getServeById(serveId);
|
||||
}
|
||||
|
||||
/**
|
||||
* 服务查询
|
||||
*/
|
||||
@GetMapping("/search")
|
||||
public List<ServeSimpleResDTO> findServeList(@RequestParam() String cityCode,
|
||||
@RequestParam(required = false) Long serveTypeId,
|
||||
@RequestParam(required = false) String keyword) {
|
||||
return serveService.findServeList(cityCode, serveTypeId, keyword);
|
||||
}
|
||||
|
||||
@Resource
|
||||
private IServeService serveService;
|
||||
@Resource
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.jzo2o.foundations.model.dto.request.ServeUpsertReqDTO;
|
||||
import com.jzo2o.foundations.model.dto.response.ServeAggregationSimpleResDTO;
|
||||
import com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO;
|
||||
import com.jzo2o.foundations.model.dto.response.ServeResDTO;
|
||||
import com.jzo2o.foundations.model.dto.response.ServeSimpleResDTO;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
@@ -80,4 +81,9 @@ public interface IServeService extends IService<Serve> {
|
||||
* 获取指定id的服务
|
||||
*/
|
||||
ServeAggregationSimpleResDTO getServeById(Long serveId);
|
||||
|
||||
/**
|
||||
* 查询指定区域的服务
|
||||
*/
|
||||
List<ServeSimpleResDTO> findServeList(String cityCode, Long serveTypeId, String keyword);
|
||||
}
|
||||
@@ -1,5 +1,8 @@
|
||||
package com.jzo2o.foundations.service.impl;
|
||||
|
||||
import co.elastic.clients.elasticsearch._types.SortOrder;
|
||||
import co.elastic.clients.elasticsearch.core.SearchRequest;
|
||||
import co.elastic.clients.elasticsearch.core.SearchResponse;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers;
|
||||
import com.jzo2o.common.expcetions.CommonException;
|
||||
@@ -8,6 +11,8 @@ import com.jzo2o.common.model.PageResult;
|
||||
import com.jzo2o.common.utils.BeanUtils;
|
||||
import com.jzo2o.common.utils.CollUtils;
|
||||
import com.jzo2o.common.utils.ObjectUtils;
|
||||
import com.jzo2o.es.core.ElasticSearchTemplate;
|
||||
import com.jzo2o.es.utils.SearchResponseUtils;
|
||||
import com.jzo2o.foundations.constants.RedisConstants;
|
||||
import com.jzo2o.foundations.enums.FoundationStatusEnum;
|
||||
import com.jzo2o.foundations.enums.HotStatusEnum;
|
||||
@@ -37,6 +42,7 @@ import java.math.BigDecimal;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 区域服务实现类
|
||||
@@ -329,6 +335,51 @@ public class ServeServiceImpl extends ServiceImpl<ServeMapper, Serve> implements
|
||||
.build();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ServeSimpleResDTO> findServeList(String cityCode, Long serveTypeId, String keyword) {
|
||||
// 构建ES搜索请求
|
||||
SearchRequest searchRequest = new SearchRequest.Builder()
|
||||
.index("serve_aggregation")
|
||||
.query(query -> query
|
||||
.bool(bool -> {
|
||||
bool = bool.must(must -> must.term(term -> term
|
||||
.field("city_code")
|
||||
.value(cityCode)));
|
||||
|
||||
if (!ObjectUtils.isEmpty(serveTypeId)) {
|
||||
bool = bool.must(must -> must.term(term -> term
|
||||
.field("serve_type_id")
|
||||
.value(serveTypeId)));
|
||||
}
|
||||
|
||||
if (!ObjectUtils.isEmpty(keyword)) {
|
||||
bool = bool.must(must -> must.multiMatch(multi -> multi
|
||||
.query(keyword)
|
||||
.fields("serve_item_name", "serve_item_name")));
|
||||
}
|
||||
|
||||
return bool;
|
||||
}))
|
||||
.sort(sort -> sort
|
||||
.field(field -> field
|
||||
.field("serve_item_sort_num")
|
||||
.order(SortOrder.Asc)))
|
||||
.build();
|
||||
|
||||
// 发送搜索请求获取结果
|
||||
SearchResponse<ServeAggregation> response = elasticSearchTemplate
|
||||
.opsForDoc()
|
||||
.search(searchRequest, ServeAggregation.class);
|
||||
|
||||
if (SearchResponseUtils.isNotSuccess(response)) {
|
||||
return Collections.emptyList();
|
||||
} else {
|
||||
return response.hits().hits().stream()
|
||||
.map(hit -> BeanUtils.toBean(hit.source(), ServeSimpleResDTO.class))
|
||||
.collect(Collectors.toList());
|
||||
}
|
||||
}
|
||||
|
||||
@Resource
|
||||
private IRegionService regionService;
|
||||
@Resource
|
||||
@@ -339,4 +390,6 @@ public class ServeServiceImpl extends ServiceImpl<ServeMapper, Serve> implements
|
||||
private IServeItemService serveItemService;
|
||||
@Resource
|
||||
private ServeSyncMapper serveSyncMapper;
|
||||
@Resource
|
||||
private ElasticSearchTemplate elasticSearchTemplate;
|
||||
}
|
||||
Reference in New Issue
Block a user