package com.kidgrow.searchcenter.client.service.impl;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.alibaba.fastjson.JSONObject;
|
import com.kidgrow.common.model.PageResult;
|
import com.kidgrow.searchcenter.client.feign.AggregationService;
|
import com.kidgrow.searchcenter.client.feign.SearchService;
|
import com.kidgrow.searchcenter.client.service.IQueryService;
|
import com.kidgrow.searchcenter.model.LogicDelDto;
|
import com.kidgrow.searchcenter.model.SearchDto;
|
|
import javax.annotation.Resource;
|
import java.util.Map;
|
|
/**
|
* 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
|
*
|
* @Description: 搜索客户端Service<br>
|
* @Project: <br>
|
* @CreateDate: Created in 2020/2/24 12:13 <br>
|
* @Author: <a href="4345453@kidgrow.com">liuke</a>
|
*/
|
public class QueryServiceImpl implements IQueryService {
|
@Resource
|
private SearchService searchService;
|
|
@Resource
|
private AggregationService aggregationService;
|
|
@Override
|
public PageResult<JSONObject> strQuery(String indexName, SearchDto searchDto) {
|
return strQuery(indexName, searchDto, null);
|
}
|
|
@Override
|
public PageResult<JSONObject> strQuery(String indexName, SearchDto searchDto, LogicDelDto logicDelDto) {
|
setLogicDelQueryStr(searchDto, logicDelDto);
|
return searchService.strQuery(indexName, searchDto);
|
}
|
|
/**
|
* 拼装逻辑删除的条件
|
* @param searchDto 搜索dto
|
* @param logicDelDto 逻辑删除dto
|
*/
|
private void setLogicDelQueryStr(SearchDto searchDto, LogicDelDto logicDelDto) {
|
if (logicDelDto != null
|
&& StrUtil.isNotEmpty(logicDelDto.getLogicDelField())
|
&& StrUtil.isNotEmpty(logicDelDto.getLogicNotDelValue())) {
|
String result;
|
//搜索条件
|
String queryStr = searchDto.getQueryStr();
|
//拼凑逻辑删除的条件
|
String logicStr = logicDelDto.getLogicDelField() + ":" + logicDelDto.getLogicNotDelValue();
|
if (StrUtil.isNotEmpty(queryStr)) {
|
result = "(" + queryStr + ") AND " + logicStr;
|
} else {
|
result = logicStr;
|
}
|
searchDto.setQueryStr(result);
|
}
|
}
|
|
/**
|
* 访问统计聚合查询
|
* @param indexName 索引名
|
* @param routing es的路由
|
*/
|
@Override
|
public Map<String, Object> requestStatAgg(String indexName, String routing) {
|
return aggregationService.requestStatAgg(indexName, routing);
|
}
|
}
|