feat(foundations):新增客户端检索上架服务功能

This commit is contained in:
JIAN
2024-08-27 13:17:03 +08:00
parent e743f616c7
commit 2b46184d29
3 changed files with 70 additions and 0 deletions

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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;
}