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
*
* @Description: 搜索客户端Service
* @Project:
* @CreateDate: Created in 2020/2/24 12:13
* @Author: liuke
*/
public class QueryServiceImpl implements IQueryService {
@Resource
private SearchService searchService;
@Resource
private AggregationService aggregationService;
@Override
public PageResult strQuery(String indexName, SearchDto searchDto) {
return strQuery(indexName, searchDto, null);
}
@Override
public PageResult 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 requestStatAgg(String indexName, String routing) {
return aggregationService.requestStatAgg(indexName, routing);
}
}