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.ServeAggregationSimpleResDTO;
|
||||||
import com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO;
|
import com.jzo2o.foundations.model.dto.response.ServeAggregationTypeSimpleResDTO;
|
||||||
import com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO;
|
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.IServeService;
|
||||||
import com.jzo2o.foundations.service.IServeTypeService;
|
import com.jzo2o.foundations.service.IServeTypeService;
|
||||||
import io.swagger.annotations.Api;
|
import io.swagger.annotations.Api;
|
||||||
@@ -51,6 +52,16 @@ public class ServeController {
|
|||||||
return serveService.getServeById(serveId);
|
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
|
@Resource
|
||||||
private IServeService serveService;
|
private IServeService serveService;
|
||||||
@Resource
|
@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.ServeAggregationSimpleResDTO;
|
||||||
import com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO;
|
import com.jzo2o.foundations.model.dto.response.ServeCategoryResDTO;
|
||||||
import com.jzo2o.foundations.model.dto.response.ServeResDTO;
|
import com.jzo2o.foundations.model.dto.response.ServeResDTO;
|
||||||
|
import com.jzo2o.foundations.model.dto.response.ServeSimpleResDTO;
|
||||||
|
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -80,4 +81,9 @@ public interface IServeService extends IService<Serve> {
|
|||||||
* 获取指定id的服务
|
* 获取指定id的服务
|
||||||
*/
|
*/
|
||||||
ServeAggregationSimpleResDTO getServeById(Long serveId);
|
ServeAggregationSimpleResDTO getServeById(Long serveId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询指定区域的服务
|
||||||
|
*/
|
||||||
|
List<ServeSimpleResDTO> findServeList(String cityCode, Long serveTypeId, String keyword);
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,8 @@
|
|||||||
package com.jzo2o.foundations.service.impl;
|
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.service.impl.ServiceImpl;
|
||||||
import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers;
|
import com.baomidou.mybatisplus.extension.toolkit.ChainWrappers;
|
||||||
import com.jzo2o.common.expcetions.CommonException;
|
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.BeanUtils;
|
||||||
import com.jzo2o.common.utils.CollUtils;
|
import com.jzo2o.common.utils.CollUtils;
|
||||||
import com.jzo2o.common.utils.ObjectUtils;
|
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.constants.RedisConstants;
|
||||||
import com.jzo2o.foundations.enums.FoundationStatusEnum;
|
import com.jzo2o.foundations.enums.FoundationStatusEnum;
|
||||||
import com.jzo2o.foundations.enums.HotStatusEnum;
|
import com.jzo2o.foundations.enums.HotStatusEnum;
|
||||||
@@ -37,6 +42,7 @@ import java.math.BigDecimal;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 区域服务实现类
|
* 区域服务实现类
|
||||||
@@ -329,6 +335,51 @@ public class ServeServiceImpl extends ServiceImpl<ServeMapper, Serve> implements
|
|||||||
.build();
|
.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
|
@Resource
|
||||||
private IRegionService regionService;
|
private IRegionService regionService;
|
||||||
@Resource
|
@Resource
|
||||||
@@ -339,4 +390,6 @@ public class ServeServiceImpl extends ServiceImpl<ServeMapper, Serve> implements
|
|||||||
private IServeItemService serveItemService;
|
private IServeItemService serveItemService;
|
||||||
@Resource
|
@Resource
|
||||||
private ServeSyncMapper serveSyncMapper;
|
private ServeSyncMapper serveSyncMapper;
|
||||||
|
@Resource
|
||||||
|
private ElasticSearchTemplate elasticSearchTemplate;
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user