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