mirror of
https://github.com/chatopera/cosin.git
synced 2025-08-01 16:38:02 +08:00
Replace Operator's package path
This commit is contained in:
parent
33b41ed395
commit
d0d85ead52
File diff suppressed because it is too large
Load Diff
@ -1,197 +1,193 @@
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.Contacts;
|
||||
import com.chatopera.cc.model.User;
|
||||
import com.chatopera.cc.persistence.repository.UserRepository;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder.Operator;
|
||||
import org.elasticsearch.index.query.RangeQueryBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class ContactsRepositoryImpl implements ContactsEsCommonRepository {
|
||||
@Autowired
|
||||
private UserRepository userRes;
|
||||
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByCreaterAndSharesAndOrgi(String creater, String shares, String orgi, boolean includeDeleteData, String q, Pageable page) {
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", "all"));
|
||||
boolQueryBuilder.must(boolQueryBuilder1);
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (includeDeleteData) {
|
||||
boolQueryBuilder.must(termQuery("datastatus", true));
|
||||
} else {
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
}
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByCreaterAndSharesAndOrgi(String creater,
|
||||
String shares, String orgi, Date begin, Date end, boolean includeDeleteData,
|
||||
BoolQueryBuilder boolQueryBuilder, String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", "all"));
|
||||
boolQueryBuilder.must(boolQueryBuilder1);
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (includeDeleteData) {
|
||||
boolQueryBuilder.must(termQuery("datastatus", true));
|
||||
} else {
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
}
|
||||
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime");
|
||||
if (begin != null) {
|
||||
rangeQuery.from(begin.getTime());
|
||||
}
|
||||
if (end != null) {
|
||||
rangeQuery.to(end.getTime());
|
||||
} else {
|
||||
rangeQuery.to(new Date().getTime());
|
||||
}
|
||||
if (begin != null || end != null) {
|
||||
boolQueryBuilder.must(rangeQuery);
|
||||
}
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByOrgi(String orgi, boolean includeDeleteData,
|
||||
String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (includeDeleteData) {
|
||||
boolQueryBuilder.must(termQuery("datastatus", true));
|
||||
} else {
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
}
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByCreaterAndSharesAndOrgi(String creater, String shares, String orgi, Date begin, Date end, boolean includeDeleteData, String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", "all"));
|
||||
boolQueryBuilder.must(boolQueryBuilder1);
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (includeDeleteData) {
|
||||
boolQueryBuilder.must(termQuery("datastatus", true));
|
||||
} else {
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
}
|
||||
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime");
|
||||
if (begin != null) {
|
||||
rangeQuery.from(begin.getTime());
|
||||
}
|
||||
if (end != null) {
|
||||
rangeQuery.to(end.getTime());
|
||||
} else {
|
||||
rangeQuery.to(new Date().getTime());
|
||||
}
|
||||
if (begin != null || end != null) {
|
||||
boolQueryBuilder.must(rangeQuery);
|
||||
}
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
|
||||
|
||||
private Page<Contacts> processQuery(BoolQueryBuilder boolQueryBuilder, Pageable page) {
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("creater").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("name").unmappedType("string").order(SortOrder.DESC));
|
||||
|
||||
searchQueryBuilder.withPageable(page);
|
||||
|
||||
Page<Contacts> entCustomerList = null;
|
||||
if (elasticsearchTemplate.indexExists(Contacts.class)) {
|
||||
entCustomerList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build(), Contacts.class);
|
||||
}
|
||||
if (entCustomerList.getContent().size() > 0) {
|
||||
List<String> ids = new ArrayList<String>();
|
||||
for (Contacts contacts : entCustomerList.getContent()) {
|
||||
if (contacts.getCreater() != null && ids.size() < 1024) {
|
||||
ids.add(contacts.getCreater());
|
||||
}
|
||||
}
|
||||
List<User> users = userRes.findAll(ids);
|
||||
for (Contacts contacts : entCustomerList.getContent()) {
|
||||
for (User user : users) {
|
||||
if (user.getId().equals(contacts.getCreater())) {
|
||||
contacts.setUser(user);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return entCustomerList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByDataAndOrgi(String orgi, String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.Contacts;
|
||||
import com.chatopera.cc.model.User;
|
||||
import com.chatopera.cc.persistence.repository.UserRepository;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.*;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class ContactsRepositoryImpl implements ContactsEsCommonRepository {
|
||||
@Autowired
|
||||
private UserRepository userRes;
|
||||
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByCreaterAndSharesAndOrgi(String creater, String shares, String orgi, boolean includeDeleteData, String q, Pageable page) {
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", "all"));
|
||||
boolQueryBuilder.must(boolQueryBuilder1);
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (includeDeleteData) {
|
||||
boolQueryBuilder.must(termQuery("datastatus", true));
|
||||
} else {
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
}
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByCreaterAndSharesAndOrgi(String creater,
|
||||
String shares, String orgi, Date begin, Date end, boolean includeDeleteData,
|
||||
BoolQueryBuilder boolQueryBuilder, String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", "all"));
|
||||
boolQueryBuilder.must(boolQueryBuilder1);
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (includeDeleteData) {
|
||||
boolQueryBuilder.must(termQuery("datastatus", true));
|
||||
} else {
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
}
|
||||
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime");
|
||||
if (begin != null) {
|
||||
rangeQuery.from(begin.getTime());
|
||||
}
|
||||
if (end != null) {
|
||||
rangeQuery.to(end.getTime());
|
||||
} else {
|
||||
rangeQuery.to(new Date().getTime());
|
||||
}
|
||||
if (begin != null || end != null) {
|
||||
boolQueryBuilder.must(rangeQuery);
|
||||
}
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByOrgi(String orgi, boolean includeDeleteData,
|
||||
String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (includeDeleteData) {
|
||||
boolQueryBuilder.must(termQuery("datastatus", true));
|
||||
} else {
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
}
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByCreaterAndSharesAndOrgi(String creater, String shares, String orgi, Date begin, Date end, boolean includeDeleteData, String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", creater));
|
||||
boolQueryBuilder1.should(termQuery("shares", "all"));
|
||||
boolQueryBuilder.must(boolQueryBuilder1);
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (includeDeleteData) {
|
||||
boolQueryBuilder.must(termQuery("datastatus", true));
|
||||
} else {
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
}
|
||||
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime");
|
||||
if (begin != null) {
|
||||
rangeQuery.from(begin.getTime());
|
||||
}
|
||||
if (end != null) {
|
||||
rangeQuery.to(end.getTime());
|
||||
} else {
|
||||
rangeQuery.to(new Date().getTime());
|
||||
}
|
||||
if (begin != null || end != null) {
|
||||
boolQueryBuilder.must(rangeQuery);
|
||||
}
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
|
||||
|
||||
private Page<Contacts> processQuery(BoolQueryBuilder boolQueryBuilder, Pageable page) {
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("creater").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("name").unmappedType("string").order(SortOrder.DESC));
|
||||
|
||||
searchQueryBuilder.withPageable(page);
|
||||
|
||||
Page<Contacts> entCustomerList = null;
|
||||
if (elasticsearchTemplate.indexExists(Contacts.class)) {
|
||||
entCustomerList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build(), Contacts.class);
|
||||
}
|
||||
if (entCustomerList.getContent().size() > 0) {
|
||||
List<String> ids = new ArrayList<String>();
|
||||
for (Contacts contacts : entCustomerList.getContent()) {
|
||||
if (contacts.getCreater() != null && ids.size() < 1024) {
|
||||
ids.add(contacts.getCreater());
|
||||
}
|
||||
}
|
||||
List<User> users = userRes.findAll(ids);
|
||||
for (Contacts contacts : entCustomerList.getContent()) {
|
||||
for (User user : users) {
|
||||
if (user.getId().equals(contacts.getCreater())) {
|
||||
contacts.setUser(user);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return entCustomerList;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Contacts> findByDataAndOrgi(String orgi, String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("datastatus", false));
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (StringUtils.isNotBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
return processQuery(boolQueryBuilder, page);
|
||||
}
|
||||
}
|
||||
|
@ -1,174 +1,170 @@
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.EntCustomer;
|
||||
import com.chatopera.cc.model.User;
|
||||
import com.chatopera.cc.persistence.repository.UserRepository;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder.Operator;
|
||||
import org.elasticsearch.index.query.RangeQueryBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Repository
|
||||
public class EntCustomerRepositoryImpl implements EntCustomerEsCommonRepository{
|
||||
|
||||
private SimpleDateFormat dateFromate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss") ;
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRes ;
|
||||
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<EntCustomer> findByCreaterAndSharesAndOrgi(String creater, String shares ,String orgi, boolean includeDeleteData ,String q , Pageable page) {
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , "all")) ;
|
||||
boolQueryBuilder.must(boolQueryBuilder1) ;
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(includeDeleteData){
|
||||
boolQueryBuilder.must(termQuery("datastatus" , true)) ;
|
||||
}else{
|
||||
boolQueryBuilder.must(termQuery("datastatus" , false)) ;
|
||||
}
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
return processQuery(boolQueryBuilder , page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<EntCustomer> findByCreaterAndSharesAndOrgi(String creater,
|
||||
String shares,String orgi, Date begin, Date end, boolean includeDeleteData,
|
||||
BoolQueryBuilder boolQueryBuilder , String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , "all")) ;
|
||||
boolQueryBuilder.must(boolQueryBuilder1) ;
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(includeDeleteData){
|
||||
boolQueryBuilder.must(termQuery("datastatus" , true)) ;
|
||||
}else{
|
||||
boolQueryBuilder.must(termQuery("datastatus" , false)) ;
|
||||
}
|
||||
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime") ;
|
||||
if(begin!=null){
|
||||
rangeQuery.from(begin.getTime()) ;
|
||||
}
|
||||
if(end!=null){
|
||||
rangeQuery.to(end.getTime()) ;
|
||||
}else{
|
||||
rangeQuery.to(new Date().getTime()) ;
|
||||
}
|
||||
if(begin!=null || end!=null){
|
||||
boolQueryBuilder.must(rangeQuery) ;
|
||||
}
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
return processQuery(boolQueryBuilder , page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<EntCustomer> findByCreaterAndSharesAndOrgi(String creater,String shares,String orgi, Date begin, Date end, boolean includeDeleteData,String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , "all")) ;
|
||||
boolQueryBuilder.must(boolQueryBuilder1) ;
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(includeDeleteData){
|
||||
boolQueryBuilder.must(termQuery("datastatus" , true)) ;
|
||||
}else{
|
||||
boolQueryBuilder.must(termQuery("datastatus" , false)) ;
|
||||
}
|
||||
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime") ;
|
||||
if(begin!=null){
|
||||
rangeQuery.from(dateFromate.format(begin)) ;
|
||||
}
|
||||
if(end!=null){
|
||||
rangeQuery.to(dateFromate.format(end)) ;
|
||||
}else{
|
||||
rangeQuery.to(dateFromate.format(new Date())) ;
|
||||
}
|
||||
if(begin!=null || end!=null){
|
||||
boolQueryBuilder.must(rangeQuery) ;
|
||||
}
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
return processQuery(boolQueryBuilder , page);
|
||||
}
|
||||
|
||||
|
||||
private Page<EntCustomer> processQuery(BoolQueryBuilder boolQueryBuilder , Pageable page){
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("creater").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("name").unmappedType("string").order(SortOrder.DESC));
|
||||
|
||||
searchQueryBuilder.withPageable(page);
|
||||
|
||||
Page<EntCustomer> entCustomerList = null ;
|
||||
if(elasticsearchTemplate.indexExists(EntCustomer.class)){
|
||||
entCustomerList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build() , EntCustomer.class ) ;
|
||||
}
|
||||
if(entCustomerList.getContent().size() > 0){
|
||||
List<String> ids = new ArrayList<String>() ;
|
||||
for(EntCustomer entCustomer : entCustomerList.getContent()){
|
||||
if(entCustomer.getCreater()!=null && ids.size()<1024){
|
||||
ids.add(entCustomer.getCreater()) ;
|
||||
}
|
||||
}
|
||||
List<User> users = userRes.findAll(ids) ;
|
||||
for(EntCustomer entCustomer : entCustomerList.getContent()){
|
||||
for(User user : users){
|
||||
if(user.getId().equals(entCustomer.getCreater())){
|
||||
entCustomer.setUser(user);
|
||||
break ;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return entCustomerList;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.EntCustomer;
|
||||
import com.chatopera.cc.model.User;
|
||||
import com.chatopera.cc.persistence.repository.UserRepository;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.*;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.stereotype.Repository;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Repository
|
||||
public class EntCustomerRepositoryImpl implements EntCustomerEsCommonRepository {
|
||||
|
||||
private final SimpleDateFormat dateFromate = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
||||
|
||||
@Autowired
|
||||
private UserRepository userRes;
|
||||
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<EntCustomer> findByCreaterAndSharesAndOrgi(String creater, String shares ,String orgi, boolean includeDeleteData ,String q , Pageable page) {
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , "all")) ;
|
||||
boolQueryBuilder.must(boolQueryBuilder1) ;
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(includeDeleteData){
|
||||
boolQueryBuilder.must(termQuery("datastatus" , true)) ;
|
||||
}else{
|
||||
boolQueryBuilder.must(termQuery("datastatus" , false)) ;
|
||||
}
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
return processQuery(boolQueryBuilder , page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<EntCustomer> findByCreaterAndSharesAndOrgi(String creater,
|
||||
String shares,String orgi, Date begin, Date end, boolean includeDeleteData,
|
||||
BoolQueryBuilder boolQueryBuilder , String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , "all")) ;
|
||||
boolQueryBuilder.must(boolQueryBuilder1) ;
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(includeDeleteData){
|
||||
boolQueryBuilder.must(termQuery("datastatus" , true)) ;
|
||||
}else{
|
||||
boolQueryBuilder.must(termQuery("datastatus" , false)) ;
|
||||
}
|
||||
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime") ;
|
||||
if(begin!=null){
|
||||
rangeQuery.from(begin.getTime()) ;
|
||||
}
|
||||
if(end!=null){
|
||||
rangeQuery.to(end.getTime()) ;
|
||||
}else{
|
||||
rangeQuery.to(new Date().getTime()) ;
|
||||
}
|
||||
if(begin!=null || end!=null){
|
||||
boolQueryBuilder.must(rangeQuery) ;
|
||||
}
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
return processQuery(boolQueryBuilder , page);
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<EntCustomer> findByCreaterAndSharesAndOrgi(String creater,String shares,String orgi, Date begin, Date end, boolean includeDeleteData,String q, Pageable page) {
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder();
|
||||
boolQueryBuilder1.should(termQuery("creater" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , creater)) ;
|
||||
boolQueryBuilder1.should(termQuery("shares" , "all")) ;
|
||||
boolQueryBuilder.must(boolQueryBuilder1) ;
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(includeDeleteData){
|
||||
boolQueryBuilder.must(termQuery("datastatus" , true)) ;
|
||||
}else{
|
||||
boolQueryBuilder.must(termQuery("datastatus" , false)) ;
|
||||
}
|
||||
RangeQueryBuilder rangeQuery = QueryBuilders.rangeQuery("createtime") ;
|
||||
if(begin!=null){
|
||||
rangeQuery.from(dateFromate.format(begin)) ;
|
||||
}
|
||||
if(end!=null){
|
||||
rangeQuery.to(dateFromate.format(end)) ;
|
||||
}else{
|
||||
rangeQuery.to(dateFromate.format(new Date())) ;
|
||||
}
|
||||
if(begin!=null || end!=null){
|
||||
boolQueryBuilder.must(rangeQuery) ;
|
||||
}
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
return processQuery(boolQueryBuilder , page);
|
||||
}
|
||||
|
||||
|
||||
private Page<EntCustomer> processQuery(BoolQueryBuilder boolQueryBuilder , Pageable page){
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("creater").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("name").unmappedType("string").order(SortOrder.DESC));
|
||||
|
||||
searchQueryBuilder.withPageable(page);
|
||||
|
||||
Page<EntCustomer> entCustomerList = null ;
|
||||
if(elasticsearchTemplate.indexExists(EntCustomer.class)){
|
||||
entCustomerList = elasticsearchTemplate.queryForPage(searchQueryBuilder.build() , EntCustomer.class ) ;
|
||||
}
|
||||
if(entCustomerList.getContent().size() > 0){
|
||||
List<String> ids = new ArrayList<String>() ;
|
||||
for(EntCustomer entCustomer : entCustomerList.getContent()){
|
||||
if(entCustomer.getCreater()!=null && ids.size()<1024){
|
||||
ids.add(entCustomer.getCreater()) ;
|
||||
}
|
||||
}
|
||||
List<User> users = userRes.findAll(ids) ;
|
||||
for(EntCustomer entCustomer : entCustomerList.getContent()){
|
||||
for(User user : users){
|
||||
if(user.getId().equals(entCustomer.getCreater())) {
|
||||
entCustomer.setUser(user);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return entCustomerList;
|
||||
}
|
||||
}
|
||||
|
@ -1,107 +1,107 @@
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.KbsTopicComment;
|
||||
import com.chatopera.cc.model.Topic;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder.Operator;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRepository{
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
@Override
|
||||
public Page<KbsTopicComment> findByDataid(String id , int p , int ps) {
|
||||
Page<KbsTopicComment> pages = null ;
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("dataid" , id)).withSort(new FieldSortBuilder("optimal").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)).build().setPageable(new PageRequest(p, ps)) ;
|
||||
if(elasticsearchTemplate.indexExists(KbsTopicComment.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class);
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<KbsTopicComment> findByOptimal(String dataid) {
|
||||
List<KbsTopicComment> commentList = null ;
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("dataid" , dataid)).withQuery(termQuery("optimal" , true)).build();
|
||||
if(elasticsearchTemplate.indexExists(KbsTopicComment.class)){
|
||||
commentList = elasticsearchTemplate.queryForList(searchQuery, KbsTopicComment.class);
|
||||
}
|
||||
return commentList ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<KbsTopicComment> findByCon(NativeSearchQueryBuilder searchQueryBuilder , String field , String aggname, String q , final int p , final int ps) {
|
||||
Page<KbsTopicComment> pages = null ;
|
||||
if(!StringUtils.isBlank(q)){
|
||||
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
SearchQuery searchQuery = searchQueryBuilder.build();
|
||||
if(elasticsearchTemplate.indexExists(KbsTopicComment.class)){
|
||||
if(!StringUtils.isBlank(q)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class , new UKResultMapper());
|
||||
}else{
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class , new UKAggTopResultExtractor(field , aggname));
|
||||
}
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
@Override
|
||||
public Page<KbsTopicComment> findByCon(
|
||||
NativeSearchQueryBuilder searchQueryBuilder, String q, int p, int ps) {
|
||||
searchQueryBuilder.withPageable(new PageRequest(p, ps)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)) ;
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("content").fragmentSize(200)) ;
|
||||
if(!StringUtils.isBlank(q)){
|
||||
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
return elasticsearchTemplate.queryForPage(searchQueryBuilder.build(), KbsTopicComment.class , new UKResultMapper()) ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<KbsTopicComment> countByCon(
|
||||
NativeSearchQueryBuilder searchQueryBuilder, String q, int p, int ps) {
|
||||
Page<KbsTopicComment> pages = null ;
|
||||
if(!StringUtils.isBlank(q)){
|
||||
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if(elasticsearchTemplate.indexExists(Topic.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class , new UKAggResultExtractor("creater") );
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.KbsTopicComment;
|
||||
import com.chatopera.cc.model.Topic;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.Operator;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class KbsTopicCommentRepositoryImpl implements KbsTopicCommentEsCommonRepository{
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
@Override
|
||||
public Page<KbsTopicComment> findByDataid(String id , int p , int ps) {
|
||||
Page<KbsTopicComment> pages = null;
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("dataid", id)).withSort(new FieldSortBuilder("optimal").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)).build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(KbsTopicComment.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class);
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<KbsTopicComment> findByOptimal(String dataid) {
|
||||
List<KbsTopicComment> commentList = null ;
|
||||
SearchQuery searchQuery = new NativeSearchQueryBuilder().withQuery(termQuery("dataid" , dataid)).withQuery(termQuery("optimal" , true)).build();
|
||||
if(elasticsearchTemplate.indexExists(KbsTopicComment.class)){
|
||||
commentList = elasticsearchTemplate.queryForList(searchQuery, KbsTopicComment.class);
|
||||
}
|
||||
return commentList ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<KbsTopicComment> findByCon(NativeSearchQueryBuilder searchQueryBuilder , String field , String aggname, String q , final int p , final int ps) {
|
||||
Page<KbsTopicComment> pages = null ;
|
||||
if(!StringUtils.isBlank(q)){
|
||||
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
SearchQuery searchQuery = searchQueryBuilder.build();
|
||||
if (elasticsearchTemplate.indexExists(KbsTopicComment.class)) {
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class, new UKResultMapper());
|
||||
} else {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class, new UKAggTopResultExtractor(field, aggname));
|
||||
}
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
@Override
|
||||
public Page<KbsTopicComment> findByCon(
|
||||
NativeSearchQueryBuilder searchQueryBuilder, String q, int p, int ps) {
|
||||
searchQueryBuilder.withPageable(new PageRequest(p, ps)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC)) ;
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("content").fragmentSize(200)) ;
|
||||
if(!StringUtils.isBlank(q)){
|
||||
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
return elasticsearchTemplate.queryForPage(searchQueryBuilder.build(), KbsTopicComment.class , new UKResultMapper()) ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<KbsTopicComment> countByCon(
|
||||
NativeSearchQueryBuilder searchQueryBuilder, String q, int p, int ps) {
|
||||
Page<KbsTopicComment> pages = null;
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
searchQueryBuilder.withQuery(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(Topic.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopicComment.class, new UKAggResultExtractor("creater"));
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
}
|
||||
|
@ -1,152 +1,148 @@
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.KbsTopic;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder.Operator;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository{
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
@Override
|
||||
public Page<KbsTopic> getTopicByCate(String cate , String q, final int p , final int ps) {
|
||||
|
||||
Page<KbsTopic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)) ;
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps)) ;
|
||||
if(elasticsearchTemplate.indexExists(KbsTopic.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class , new UKResultMapper());
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<KbsTopic> getTopicByTop(boolean top , final int p , final int ps) {
|
||||
|
||||
Page<KbsTopic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("top" , top)) ;
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").from(new Date().getTime())) ;
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").to(new Date().getTime())) ;
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)) ;
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps)) ;
|
||||
if(elasticsearchTemplate.indexExists(KbsTopic.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class , new UKResultMapper());
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<KbsTopic> getTopicByCateAndUser(String cate , String q , String user ,final int p , final int ps) {
|
||||
|
||||
Page<KbsTopic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater" , user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if(elasticsearchTemplate.indexExists(KbsTopic.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, new UKResultMapper());
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<KbsTopic> getTopicByCon(BoolQueryBuilder boolQueryBuilder, final int p , final int ps) {
|
||||
|
||||
Page<KbsTopic> pages = null ;
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").from(new Date().getTime())) ;
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").to(new Date().getTime())) ;
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps)) ;
|
||||
if(elasticsearchTemplate.indexExists(KbsTopic.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class);
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
@Override
|
||||
public List<KbsTopic> getTopicByOrgi(String orgi , String type, String q) {
|
||||
|
||||
List<KbsTopic> list = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
|
||||
if(!StringUtils.isBlank(type)){
|
||||
boolQueryBuilder.must(termQuery("cate" , type)) ;
|
||||
}
|
||||
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build();
|
||||
if(elasticsearchTemplate.indexExists(KbsTopic.class)){
|
||||
list = elasticsearchTemplate.queryForList(searchQuery, KbsTopic.class);
|
||||
}
|
||||
return list ;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.KbsTopic;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.*;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class KbsTopicRepositoryImpl implements KbsTopicEsCommonRepository{
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
@Override
|
||||
public Page<KbsTopic> getTopicByCate(String cate , String q, final int p , final int ps) {
|
||||
|
||||
Page<KbsTopic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, new UKResultMapper());
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<KbsTopic> getTopicByTop(boolean top , final int p , final int ps) {
|
||||
|
||||
Page<KbsTopic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("top" , top)) ;
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").from(new Date().getTime()));
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").to(new Date().getTime()));
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, new UKResultMapper());
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<KbsTopic> getTopicByCateAndUser(String cate , String q , String user ,final int p , final int ps) {
|
||||
|
||||
Page<KbsTopic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater", user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class, new UKResultMapper());
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<KbsTopic> getTopicByCon(BoolQueryBuilder boolQueryBuilder, final int p , final int ps) {
|
||||
|
||||
Page<KbsTopic> pages = null ;
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").from(new Date().getTime()));
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").to(new Date().getTime()));
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, KbsTopic.class);
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
@Override
|
||||
public List<KbsTopic> getTopicByOrgi(String orgi , String type, String q) {
|
||||
|
||||
List<KbsTopic> list = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
|
||||
if(!StringUtils.isBlank(type)){
|
||||
boolQueryBuilder.must(termQuery("cate" , type)) ;
|
||||
}
|
||||
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build();
|
||||
if (elasticsearchTemplate.indexExists(KbsTopic.class)) {
|
||||
list = elasticsearchTemplate.queryForList(searchQuery, KbsTopic.class);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
@ -1,219 +1,215 @@
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.basic.MainContext;
|
||||
import com.chatopera.cc.model.QuickReply;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder.Operator;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.DeleteQuery;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository{
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate ;
|
||||
}
|
||||
@Override
|
||||
public Page<QuickReply> getByOrgiAndCate(String orgi , String cate , String q, Pageable page) {
|
||||
|
||||
Page<QuickReply> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)) ;
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page) ;
|
||||
if(elasticsearchTemplate.indexExists(QuickReply.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class , new UKResultMapper());
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QuickReply> findByOrgiAndCreater(String orgi ,String creater , String q) {
|
||||
|
||||
List<QuickReply> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
|
||||
BoolQueryBuilder quickQueryBuilder = QueryBuilders.boolQuery();
|
||||
|
||||
quickQueryBuilder.should(termQuery("type" , MainContext.QuickType.PUB.toString())) ;
|
||||
|
||||
BoolQueryBuilder priQueryBuilder = QueryBuilders.boolQuery();
|
||||
|
||||
priQueryBuilder.must(termQuery("type" , MainContext.QuickType.PRI.toString())) ;
|
||||
priQueryBuilder.must(termQuery("creater" , creater)) ;
|
||||
|
||||
quickQueryBuilder.should(priQueryBuilder) ;
|
||||
|
||||
boolQueryBuilder.must(quickQueryBuilder) ;
|
||||
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)) ;
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(0, 10000)) ;
|
||||
if(elasticsearchTemplate.indexExists(QuickReply.class)){
|
||||
pages = elasticsearchTemplate.queryForList(searchQuery, QuickReply.class);
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Page<QuickReply> getByQuicktype(String quicktype , final int p , final int ps) {
|
||||
|
||||
Page<QuickReply> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("type" , quicktype)) ;
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)) ;
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps)) ;
|
||||
if(elasticsearchTemplate.indexExists(QuickReply.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class , new UKResultMapper());
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<QuickReply> getByCateAndUser(String cate , String q , String user ,final int p , final int ps) {
|
||||
|
||||
Page<QuickReply> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater" , user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if(elasticsearchTemplate.indexExists(QuickReply.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, new UKResultMapper());
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<QuickReply> getByCon(BoolQueryBuilder boolQueryBuilder, final int p , final int ps) {
|
||||
|
||||
Page<QuickReply> pages = null ;
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").from(new Date().getTime())) ;
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").to(new Date().getTime())) ;
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps)) ;
|
||||
if(elasticsearchTemplate.indexExists(QuickReply.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class);
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
@Override
|
||||
public Page<QuickReply> getByOrgiAndType(String orgi ,String type, String q , Pageable page) {
|
||||
|
||||
Page<QuickReply> list = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(!StringUtils.isBlank(type)) {
|
||||
boolQueryBuilder.must(termQuery("type" , type)) ;
|
||||
}
|
||||
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page);
|
||||
if(elasticsearchTemplate.indexExists(QuickReply.class)){
|
||||
list = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class);
|
||||
}
|
||||
return list ;
|
||||
}
|
||||
@Override
|
||||
public void deleteByCate(String cate ,String orgi) {
|
||||
DeleteQuery deleteQuery = new DeleteQuery();
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
deleteQuery.setQuery(boolQueryBuilder);
|
||||
elasticsearchTemplate.delete(deleteQuery);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QuickReply> getQuickReplyByOrgi(String orgi , String cate,String type, String q) {
|
||||
|
||||
List<QuickReply> list = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
|
||||
if(!StringUtils.isBlank(cate)){
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
}
|
||||
if(!StringUtils.isBlank(type)){
|
||||
boolQueryBuilder.must(termQuery("type" , type)) ;
|
||||
}
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(0, 10000));
|
||||
if(elasticsearchTemplate.indexExists(QuickReply.class)){
|
||||
list = elasticsearchTemplate.queryForList(searchQuery, QuickReply.class);
|
||||
}
|
||||
return list ;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.basic.MainContext;
|
||||
import com.chatopera.cc.model.QuickReply;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.*;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Pageable;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.DeleteQuery;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class QuickReplyRepositoryImpl implements QuickReplyEsCommonRepository{
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate ;
|
||||
}
|
||||
@Override
|
||||
public Page<QuickReply> getByOrgiAndCate(String orgi , String cate , String q, Pageable page) {
|
||||
|
||||
Page<QuickReply> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page);
|
||||
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, new UKResultMapper());
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QuickReply> findByOrgiAndCreater(String orgi ,String creater , String q) {
|
||||
|
||||
List<QuickReply> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
|
||||
BoolQueryBuilder quickQueryBuilder = QueryBuilders.boolQuery();
|
||||
|
||||
quickQueryBuilder.should(termQuery("type" , MainContext.QuickType.PUB.toString())) ;
|
||||
|
||||
BoolQueryBuilder priQueryBuilder = QueryBuilders.boolQuery();
|
||||
|
||||
priQueryBuilder.must(termQuery("type" , MainContext.QuickType.PRI.toString())) ;
|
||||
priQueryBuilder.must(termQuery("creater" , creater)) ;
|
||||
|
||||
quickQueryBuilder.should(priQueryBuilder) ;
|
||||
|
||||
boolQueryBuilder.must(quickQueryBuilder) ;
|
||||
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(0, 10000));
|
||||
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
|
||||
pages = elasticsearchTemplate.queryForList(searchQuery, QuickReply.class);
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Page<QuickReply> getByQuicktype(String quicktype , final int p , final int ps) {
|
||||
|
||||
Page<QuickReply> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("type", quicktype));
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, new UKResultMapper());
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<QuickReply> getByCateAndUser(String cate , String q , String user ,final int p , final int ps) {
|
||||
|
||||
Page<QuickReply> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater", user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class, new UKResultMapper());
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<QuickReply> getByCon(BoolQueryBuilder boolQueryBuilder, final int p , final int ps) {
|
||||
|
||||
Page<QuickReply> pages = null ;
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").from(new Date().getTime()));
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").to(new Date().getTime()));
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class);
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
@Override
|
||||
public Page<QuickReply> getByOrgiAndType(String orgi ,String type, String q , Pageable page) {
|
||||
|
||||
Page<QuickReply> list = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(!StringUtils.isBlank(type)) {
|
||||
boolQueryBuilder.must(termQuery("type" , type)) ;
|
||||
}
|
||||
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(page);
|
||||
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
|
||||
list = elasticsearchTemplate.queryForPage(searchQuery, QuickReply.class);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
@Override
|
||||
public void deleteByCate(String cate ,String orgi) {
|
||||
DeleteQuery deleteQuery = new DeleteQuery();
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
deleteQuery.setQuery(boolQueryBuilder);
|
||||
elasticsearchTemplate.delete(deleteQuery);
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<QuickReply> getQuickReplyByOrgi(String orgi , String cate,String type, String q) {
|
||||
|
||||
List<QuickReply> list = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
|
||||
if(!StringUtils.isBlank(cate)){
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
}
|
||||
if(!StringUtils.isBlank(type)){
|
||||
boolQueryBuilder.must(termQuery("type" , type)) ;
|
||||
}
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(0, 10000));
|
||||
if (elasticsearchTemplate.indexExists(QuickReply.class)) {
|
||||
list = elasticsearchTemplate.queryForList(searchQuery, QuickReply.class);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
@ -1,159 +1,155 @@
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.Topic;
|
||||
import com.chatopera.cc.persistence.repository.XiaoEUKResultMapper;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilders;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder.Operator;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class TopicRepositoryImpl implements TopicEsCommonRepository{
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
@Override
|
||||
public Page<Topic> getTopicByCateAndOrgi(String cate ,String orgi, String q, final int p , final int ps) {
|
||||
|
||||
Page<Topic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
if(!StringUtils.isBlank(cate)) {
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
}
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)) ;
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps)) ;
|
||||
if(elasticsearchTemplate.indexExists(Topic.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class , new XiaoEUKResultMapper());
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<Topic> getTopicByTopAndOrgi(boolean top ,String orgi, String aiid ,final int p , final int ps) {
|
||||
|
||||
Page<Topic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("top" , top)) ;
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(!StringUtils.isBlank(aiid)) {
|
||||
boolQueryBuilder.must(termQuery("aiid" , aiid)) ;
|
||||
}
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").to(new Date().getTime())) ;
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").from(new Date().getTime())) ;
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200)) ;
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps)) ;
|
||||
if(elasticsearchTemplate.indexExists(Topic.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class , new XiaoEUKResultMapper());
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Topic> getTopicByCateAndUser(String cate , String q , String user ,final int p , final int ps) {
|
||||
|
||||
Page<Topic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater" , user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if(elasticsearchTemplate.indexExists(Topic.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, new XiaoEUKResultMapper());
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<Topic> getTopicByCon(BoolQueryBuilder boolQueryBuilder, final int p , final int ps) {
|
||||
|
||||
Page<Topic> pages = null ;
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").to(new Date().getTime())) ;
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").from(new Date().getTime())) ;
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps)) ;
|
||||
if(elasticsearchTemplate.indexExists(Topic.class)){
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class);
|
||||
}
|
||||
return pages ;
|
||||
}
|
||||
@Override
|
||||
public List<Topic> getTopicByOrgi(String orgi , String type, String q) {
|
||||
|
||||
List<Topic> list = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
|
||||
if(!StringUtils.isBlank(type)){
|
||||
boolQueryBuilder.must(termQuery("cate" , type)) ;
|
||||
}
|
||||
|
||||
if(!StringUtils.isBlank(q)){
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND)) ;
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build();
|
||||
if(elasticsearchTemplate.indexExists(Topic.class)){
|
||||
list = elasticsearchTemplate.queryForList(searchQuery, Topic.class);
|
||||
}
|
||||
return list ;
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.persistence.es;
|
||||
|
||||
import com.chatopera.cc.model.Topic;
|
||||
import com.chatopera.cc.persistence.repository.XiaoEUKResultMapper;
|
||||
import org.apache.commons.lang.StringUtils;
|
||||
import org.elasticsearch.index.query.*;
|
||||
import org.elasticsearch.search.highlight.HighlightBuilder;
|
||||
import org.elasticsearch.search.sort.FieldSortBuilder;
|
||||
import org.elasticsearch.search.sort.SortOrder;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.data.domain.Page;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.elasticsearch.core.ElasticsearchTemplate;
|
||||
import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder;
|
||||
import org.springframework.data.elasticsearch.core.query.SearchQuery;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
@Component
|
||||
public class TopicRepositoryImpl implements TopicEsCommonRepository{
|
||||
private ElasticsearchTemplate elasticsearchTemplate;
|
||||
|
||||
@Autowired
|
||||
public void setElasticsearchTemplate(ElasticsearchTemplate elasticsearchTemplate) {
|
||||
this.elasticsearchTemplate = elasticsearchTemplate;
|
||||
}
|
||||
@Override
|
||||
public Page<Topic> getTopicByCateAndOrgi(String cate ,String orgi, String q, final int p , final int ps) {
|
||||
|
||||
Page<Topic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
if(!StringUtils.isBlank(cate)) {
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
}
|
||||
boolQueryBuilder.must(termQuery("orgi", orgi));
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(Topic.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, new XiaoEUKResultMapper());
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<Topic> getTopicByTopAndOrgi(boolean top ,String orgi, String aiid ,final int p , final int ps) {
|
||||
|
||||
Page<Topic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("top" , top)) ;
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
if(!StringUtils.isBlank(aiid)) {
|
||||
boolQueryBuilder.must(termQuery("aiid" , aiid)) ;
|
||||
}
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").to(new Date().getTime())) ;
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").from(new Date().getTime()));
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
|
||||
|
||||
searchQueryBuilder.withHighlightFields(new HighlightBuilder.Field("title").fragmentSize(200));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(Topic.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, new XiaoEUKResultMapper());
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Page<Topic> getTopicByCateAndUser(String cate , String q , String user ,final int p , final int ps) {
|
||||
|
||||
Page<Topic> pages = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("cate" , cate)) ;
|
||||
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withQuery(termQuery("creater", user)).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(Topic.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class, new XiaoEUKResultMapper());
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
@Override
|
||||
public Page<Topic> getTopicByCon(BoolQueryBuilder boolQueryBuilder, final int p , final int ps) {
|
||||
|
||||
Page<Topic> pages = null;
|
||||
|
||||
QueryBuilder beginFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("begintime")).should(QueryBuilders.rangeQuery("begintime").to(new Date().getTime()));
|
||||
QueryBuilder endFilter = QueryBuilders.boolQuery().should(QueryBuilders.missingQuery("endtime")).should(QueryBuilders.rangeQuery("endtime").from(new Date().getTime()));
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withFilter(QueryBuilders.boolQuery().must(beginFilter).must(endFilter)).withSort(new FieldSortBuilder("createtime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build().setPageable(new PageRequest(p, ps));
|
||||
if (elasticsearchTemplate.indexExists(Topic.class)) {
|
||||
pages = elasticsearchTemplate.queryForPage(searchQuery, Topic.class);
|
||||
}
|
||||
return pages;
|
||||
}
|
||||
@Override
|
||||
public List<Topic> getTopicByOrgi(String orgi , String type, String q) {
|
||||
|
||||
List<Topic> list = null ;
|
||||
|
||||
BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
|
||||
boolQueryBuilder.must(termQuery("orgi" , orgi)) ;
|
||||
|
||||
if(!StringUtils.isBlank(type)){
|
||||
boolQueryBuilder.must(termQuery("cate" , type)) ;
|
||||
}
|
||||
|
||||
if (!StringUtils.isBlank(q)) {
|
||||
boolQueryBuilder.must(new QueryStringQueryBuilder(q).defaultOperator(Operator.AND));
|
||||
}
|
||||
|
||||
NativeSearchQueryBuilder searchQueryBuilder = new NativeSearchQueryBuilder().withQuery(boolQueryBuilder).withSort(new FieldSortBuilder("top").unmappedType("boolean").order(SortOrder.DESC)).withSort(new FieldSortBuilder("updatetime").unmappedType("date").order(SortOrder.DESC));
|
||||
SearchQuery searchQuery = searchQueryBuilder.build();
|
||||
if (elasticsearchTemplate.indexExists(Topic.class)) {
|
||||
list = elasticsearchTemplate.queryForList(searchQuery, Topic.class);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
}
|
||||
|
@ -1,352 +1,352 @@
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.util.es;
|
||||
|
||||
import com.chatopera.cc.basic.Constants;
|
||||
import com.chatopera.cc.basic.MainContext;
|
||||
import com.chatopera.cc.model.FormFilter;
|
||||
import com.chatopera.cc.model.FormFilterItem;
|
||||
import com.chatopera.cc.model.MetadataTable;
|
||||
import com.chatopera.cc.persistence.impl.ESDataExchangeImpl;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder.Operator;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.rangeQuery;
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
public class SearchTools {
|
||||
|
||||
public static PageImpl<UKDataBean> search(String orgi , FormFilter formFilter , List<FormFilterItem> itemList , MetadataTable metadataTable , boolean loadRef , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
|
||||
BoolQueryBuilder orBuilder = new BoolQueryBuilder();
|
||||
int orNums = 0 ;
|
||||
for(FormFilterItem formFilterItem : itemList) {
|
||||
QueryBuilder tempQueryBuilder = null ;
|
||||
if(formFilterItem.getField().equals("q")) {
|
||||
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).defaultOperator(Operator.AND) ;
|
||||
}else {
|
||||
switch(formFilterItem.getCond()) {
|
||||
case "01" :
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(false) ;
|
||||
break ;
|
||||
case "02" :
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(true) ;
|
||||
break ;
|
||||
case "03" :
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(false) ;
|
||||
break ;
|
||||
case "04" :
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(true) ;
|
||||
break ;
|
||||
case "05" :
|
||||
tempQueryBuilder = termQuery(formFilterItem.getField() , formFilterItem.getValue()) ;
|
||||
break ;
|
||||
case "06" :
|
||||
tempQueryBuilder = termQuery(formFilterItem.getField() , formFilterItem.getValue()) ;
|
||||
break ;
|
||||
case "07" :
|
||||
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).field(formFilterItem.getField()).defaultOperator(Operator.AND) ;
|
||||
break ;
|
||||
default :
|
||||
break ;
|
||||
}
|
||||
}
|
||||
if("AND".equalsIgnoreCase(formFilterItem.getComp())) {
|
||||
if("06".equals(formFilterItem.getCond())) {
|
||||
queryBuilder.mustNot(tempQueryBuilder) ;
|
||||
}else {
|
||||
queryBuilder.must(tempQueryBuilder) ;
|
||||
}
|
||||
}else {
|
||||
orNums ++ ;
|
||||
if("06".equals(formFilterItem.getCond())) {
|
||||
orBuilder.mustNot(tempQueryBuilder) ;
|
||||
}else {
|
||||
orBuilder.should(tempQueryBuilder) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(orNums > 0) {
|
||||
queryBuilder.must(orBuilder) ;
|
||||
}
|
||||
|
||||
return search(queryBuilder, metadataTable, loadRef, p, ps);
|
||||
}
|
||||
|
||||
public static PageImpl<UKDataBean> dissearch(String orgi , FormFilter formFilter , List<FormFilterItem> itemList , MetadataTable metadataTable , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.NOT.toString())) ;
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
|
||||
BoolQueryBuilder orBuilder = new BoolQueryBuilder();
|
||||
int orNums = 0 ;
|
||||
for(FormFilterItem formFilterItem : itemList) {
|
||||
QueryBuilder tempQueryBuilder = null ;
|
||||
if(formFilterItem.getField().equals("q")) {
|
||||
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).defaultOperator(Operator.AND) ;
|
||||
}else {
|
||||
switch(formFilterItem.getCond()) {
|
||||
case "01" :
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(false) ;
|
||||
break ;
|
||||
case "02" :
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(true) ;
|
||||
break ;
|
||||
case "03" :
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(false) ;
|
||||
break ;
|
||||
case "04" :
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(true) ;
|
||||
break ;
|
||||
case "05" :
|
||||
tempQueryBuilder = termQuery(formFilterItem.getField() , formFilterItem.getValue()) ;
|
||||
break ;
|
||||
case "06" :
|
||||
tempQueryBuilder = termQuery(formFilterItem.getField() , formFilterItem.getValue()) ;
|
||||
break ;
|
||||
case "07" :
|
||||
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).field(formFilterItem.getField()).defaultOperator(Operator.AND) ;
|
||||
break ;
|
||||
default :
|
||||
break ;
|
||||
}
|
||||
}
|
||||
if("AND".equalsIgnoreCase(formFilterItem.getComp())) {
|
||||
if("06".equals(formFilterItem.getCond())) {
|
||||
queryBuilder.mustNot(tempQueryBuilder) ;
|
||||
}else {
|
||||
queryBuilder.must(tempQueryBuilder) ;
|
||||
}
|
||||
}else {
|
||||
orNums ++ ;
|
||||
if("06".equals(formFilterItem.getCond())) {
|
||||
orBuilder.mustNot(tempQueryBuilder) ;
|
||||
}else {
|
||||
orBuilder.should(tempQueryBuilder) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(orNums > 0) {
|
||||
queryBuilder.must(orBuilder) ;
|
||||
}
|
||||
return search(queryBuilder, metadataTable, false, p, ps);
|
||||
}
|
||||
|
||||
public static PageImpl<UKDataBean> recoversearch(String orgi , String cmd ,String id, MetadataTable metadataTable , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString())) ;
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
|
||||
switch(cmd) {
|
||||
case "actid" : queryBuilder.must(termQuery("actid", id)) ; break ;
|
||||
case "batid" : queryBuilder.must(termQuery("batid", id)) ; break ;
|
||||
case "taskid" : queryBuilder.must(termQuery("taskid", id)) ; break ;
|
||||
case "filterid" : queryBuilder.must(termQuery("filterid", id)) ; break ;
|
||||
case "agent" : queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, id)) ; break ;
|
||||
case "skill" : queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_ORGAN, id)) ; break ;
|
||||
case "taskskill" : queryBuilder.must(termQuery("taskid", id)).must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ; break ;
|
||||
case "filterskill" : queryBuilder.must(termQuery("filterid", id)).must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ; break ;
|
||||
default : queryBuilder.must(termQuery("actid", "NOT_EXIST_KEY")) ; //必须传入一个进来;
|
||||
}
|
||||
|
||||
return search(queryBuilder, metadataTable, false, p, ps);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> agentsearch(String orgi ,boolean excludeCalled , String agent , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
if(excludeCalled){
|
||||
queryBuilder.must(termQuery("callstatus", MainContext.NameStatusType.NOTCALL.toString())) ;
|
||||
}
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, agent)) ;
|
||||
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ;
|
||||
|
||||
return search(queryBuilder, p, ps);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> agentapsearch(String orgi , String agent , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, agent)) ;
|
||||
queryBuilder.must(termQuery("apstatus", true)) ; //预约状态
|
||||
|
||||
queryBuilder.must(rangeQuery("aptime").to(System.currentTimeMillis())) ; //预约状态
|
||||
|
||||
return search(queryBuilder, p, ps);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> aisearch(String orgi , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.must(termQuery("callstatus", MainContext.NameStatusType.NOTCALL.toString())) ;
|
||||
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAI.toString())) ;
|
||||
|
||||
return search(queryBuilder, p, ps);
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> namesearch(String orgi , String phonenum){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ;
|
||||
StringBuffer strb = new StringBuffer();
|
||||
if(!StringUtils.isBlank(phonenum)) {
|
||||
strb.append(phonenum) ;
|
||||
if(phonenum.startsWith("0")) {
|
||||
strb.append(" ").append(phonenum.substring(1)) ;
|
||||
}
|
||||
}else {
|
||||
strb.append(Constants.CSKEFU_SYSTEM_NO_DAT) ;
|
||||
}
|
||||
queryBuilder.must(new QueryStringQueryBuilder(strb.toString()).defaultOperator(Operator.OR) );
|
||||
return search(queryBuilder,0, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder, int p, int ps){
|
||||
return search(queryBuilder, null, true, p, ps);
|
||||
}
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
private static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder , MetadataTable metadataTable , boolean loadRef , int p, int ps){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
return esDataExchange.findPageResult(queryBuilder, Constants.SYSTEM_INDEX, metadataTable, new PageRequest(p, ps , Sort.Direction.ASC, "createtime") , loadRef) ;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> aggregation(BoolQueryBuilder queryBuilder , String aggField, boolean loadRef , int p, int ps){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
return esDataExchange.findAllPageAggResult(queryBuilder , aggField , new PageRequest(p, ps , Sort.Direction.ASC, "createtime") , loadRef , null) ;
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static UKDataBean get(UKDataBean dataBean){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
return esDataExchange.getIObjectByPK(dataBean, dataBean.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static UKDataBean get(String type, String id){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
return esDataExchange.getIObjectByPK(type, id);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static void save(UKDataBean dataBean){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
try {
|
||||
esDataExchange.saveIObject(dataBean);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Copyright (C) 2017 优客服-多渠道客服系统
|
||||
* Modifications copyright (C) 2018-2019 Chatopera Inc, <https://www.chatopera.com>
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.chatopera.cc.util.es;
|
||||
|
||||
import com.chatopera.cc.basic.Constants;
|
||||
import com.chatopera.cc.basic.MainContext;
|
||||
import com.chatopera.cc.model.FormFilter;
|
||||
import com.chatopera.cc.model.FormFilterItem;
|
||||
import com.chatopera.cc.model.MetadataTable;
|
||||
import com.chatopera.cc.persistence.impl.ESDataExchangeImpl;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.elasticsearch.index.query.BoolQueryBuilder;
|
||||
import org.elasticsearch.index.query.Operator;
|
||||
import org.elasticsearch.index.query.QueryBuilder;
|
||||
import org.elasticsearch.index.query.QueryStringQueryBuilder;
|
||||
import org.springframework.data.domain.PageImpl;
|
||||
import org.springframework.data.domain.PageRequest;
|
||||
import org.springframework.data.domain.Sort;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import static org.elasticsearch.index.query.QueryBuilders.rangeQuery;
|
||||
import static org.elasticsearch.index.query.QueryBuilders.termQuery;
|
||||
|
||||
public class SearchTools {
|
||||
|
||||
public static PageImpl<UKDataBean> search(String orgi , FormFilter formFilter , List<FormFilterItem> itemList , MetadataTable metadataTable , boolean loadRef , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
|
||||
BoolQueryBuilder orBuilder = new BoolQueryBuilder();
|
||||
int orNums = 0 ;
|
||||
for(FormFilterItem formFilterItem : itemList) {
|
||||
QueryBuilder tempQueryBuilder = null ;
|
||||
if(formFilterItem.getField().equals("q")) {
|
||||
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).defaultOperator(Operator.AND) ;
|
||||
}else {
|
||||
switch(formFilterItem.getCond()) {
|
||||
case "01":
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(false);
|
||||
break;
|
||||
case "02":
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(true);
|
||||
break;
|
||||
case "03":
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(false);
|
||||
break;
|
||||
case "04":
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(true);
|
||||
break;
|
||||
case "05":
|
||||
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
|
||||
break;
|
||||
case "06":
|
||||
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
|
||||
break;
|
||||
case "07":
|
||||
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).field(formFilterItem.getField()).defaultOperator(Operator.AND);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if("AND".equalsIgnoreCase(formFilterItem.getComp())) {
|
||||
if("06".equals(formFilterItem.getCond())) {
|
||||
queryBuilder.mustNot(tempQueryBuilder) ;
|
||||
}else {
|
||||
queryBuilder.must(tempQueryBuilder) ;
|
||||
}
|
||||
}else {
|
||||
orNums ++ ;
|
||||
if("06".equals(formFilterItem.getCond())) {
|
||||
orBuilder.mustNot(tempQueryBuilder) ;
|
||||
}else {
|
||||
orBuilder.should(tempQueryBuilder) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(orNums > 0) {
|
||||
queryBuilder.must(orBuilder) ;
|
||||
}
|
||||
|
||||
return search(queryBuilder, metadataTable, loadRef, p, ps);
|
||||
}
|
||||
|
||||
public static PageImpl<UKDataBean> dissearch(String orgi , FormFilter formFilter , List<FormFilterItem> itemList , MetadataTable metadataTable , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.NOT.toString())) ;
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
|
||||
BoolQueryBuilder orBuilder = new BoolQueryBuilder();
|
||||
int orNums = 0 ;
|
||||
for(FormFilterItem formFilterItem : itemList) {
|
||||
QueryBuilder tempQueryBuilder = null ;
|
||||
if(formFilterItem.getField().equals("q")) {
|
||||
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).defaultOperator(Operator.AND) ;
|
||||
}else {
|
||||
switch(formFilterItem.getCond()) {
|
||||
case "01":
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(false);
|
||||
break;
|
||||
case "02":
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).from(formFilterItem.getValue()).includeLower(true);
|
||||
break;
|
||||
case "03":
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(false);
|
||||
break;
|
||||
case "04":
|
||||
tempQueryBuilder = rangeQuery(formFilterItem.getField()).to(formFilterItem.getValue()).includeUpper(true);
|
||||
break;
|
||||
case "05":
|
||||
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
|
||||
break;
|
||||
case "06":
|
||||
tempQueryBuilder = termQuery(formFilterItem.getField(), formFilterItem.getValue());
|
||||
break;
|
||||
case "07":
|
||||
tempQueryBuilder = new QueryStringQueryBuilder(formFilterItem.getValue()).field(formFilterItem.getField()).defaultOperator(Operator.AND);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
if("AND".equalsIgnoreCase(formFilterItem.getComp())) {
|
||||
if("06".equals(formFilterItem.getCond())) {
|
||||
queryBuilder.mustNot(tempQueryBuilder) ;
|
||||
}else {
|
||||
queryBuilder.must(tempQueryBuilder) ;
|
||||
}
|
||||
}else {
|
||||
orNums ++ ;
|
||||
if("06".equals(formFilterItem.getCond())) {
|
||||
orBuilder.mustNot(tempQueryBuilder) ;
|
||||
}else {
|
||||
orBuilder.should(tempQueryBuilder) ;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(orNums > 0) {
|
||||
queryBuilder.must(orBuilder) ;
|
||||
}
|
||||
return search(queryBuilder, metadataTable, false, p, ps);
|
||||
}
|
||||
|
||||
public static PageImpl<UKDataBean> recoversearch(String orgi , String cmd ,String id, MetadataTable metadataTable , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.mustNot(termQuery("status", MainContext.NamesDisStatusType.NOT.toString())) ;
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
|
||||
switch(cmd) {
|
||||
case "actid" : queryBuilder.must(termQuery("actid", id)) ; break ;
|
||||
case "batid" : queryBuilder.must(termQuery("batid", id)) ; break ;
|
||||
case "taskid" : queryBuilder.must(termQuery("taskid", id)) ; break ;
|
||||
case "filterid" : queryBuilder.must(termQuery("filterid", id)) ; break ;
|
||||
case "agent" : queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, id)) ; break ;
|
||||
case "skill" : queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_ORGAN, id)) ; break ;
|
||||
case "taskskill" : queryBuilder.must(termQuery("taskid", id)).must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ; break ;
|
||||
case "filterskill" : queryBuilder.must(termQuery("filterid", id)).must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ; break ;
|
||||
default : queryBuilder.must(termQuery("actid", "NOT_EXIST_KEY")) ; //必须传入一个进来;
|
||||
}
|
||||
|
||||
return search(queryBuilder, metadataTable, false, p, ps);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> agentsearch(String orgi ,boolean excludeCalled , String agent , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
if(excludeCalled){
|
||||
queryBuilder.must(termQuery("callstatus", MainContext.NameStatusType.NOTCALL.toString())) ;
|
||||
}
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, agent)) ;
|
||||
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ;
|
||||
|
||||
return search(queryBuilder, p, ps);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> agentapsearch(String orgi , String agent , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
queryBuilder.must(termQuery(Constants.CSKEFU_SYSTEM_DIS_AGENT, agent)) ;
|
||||
queryBuilder.must(termQuery("apstatus", true)) ; //预约状态
|
||||
|
||||
queryBuilder.must(rangeQuery("aptime").to(System.currentTimeMillis())) ; //预约状态
|
||||
|
||||
return search(queryBuilder, p, ps);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> aisearch(String orgi , int p, int ps){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.must(termQuery("callstatus", MainContext.NameStatusType.NOTCALL.toString())) ;
|
||||
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAI.toString())) ;
|
||||
|
||||
return search(queryBuilder, p, ps);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> namesearch(String orgi , String phonenum){
|
||||
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
|
||||
queryBuilder.must(termQuery("orgi", orgi)) ;
|
||||
queryBuilder.must(termQuery("validresult", "valid")) ;
|
||||
queryBuilder.must(termQuery("status", MainContext.NamesDisStatusType.DISAGENT.toString())) ;
|
||||
StringBuffer strb = new StringBuffer();
|
||||
if(!StringUtils.isBlank(phonenum)) {
|
||||
strb.append(phonenum) ;
|
||||
if(phonenum.startsWith("0")) {
|
||||
strb.append(" ").append(phonenum.substring(1)) ;
|
||||
}
|
||||
}else {
|
||||
strb.append(Constants.CSKEFU_SYSTEM_NO_DAT) ;
|
||||
}
|
||||
queryBuilder.must(new QueryStringQueryBuilder(strb.toString()).defaultOperator(Operator.OR) );
|
||||
return search(queryBuilder, 0, 1);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param orgi
|
||||
* @param agent
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder, int p, int ps){
|
||||
return search(queryBuilder, null, true, p, ps);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
private static PageImpl<UKDataBean> search(BoolQueryBuilder queryBuilder , MetadataTable metadataTable , boolean loadRef , int p, int ps){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
return esDataExchange.findPageResult(queryBuilder, Constants.SYSTEM_INDEX, metadataTable, new PageRequest(p, ps , Sort.Direction.ASC, "createtime") , loadRef);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static PageImpl<UKDataBean> aggregation(BoolQueryBuilder queryBuilder , String aggField, boolean loadRef , int p, int ps){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
return esDataExchange.findAllPageAggResult(queryBuilder , aggField , new PageRequest(p, ps , Sort.Direction.ASC, "createtime") , loadRef , null);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static UKDataBean get(UKDataBean dataBean){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
return esDataExchange.getIObjectByPK(dataBean, dataBean.getId());
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static UKDataBean get(String type, String id){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
return esDataExchange.getIObjectByPK(type, id);
|
||||
}
|
||||
|
||||
/**
|
||||
*
|
||||
* @param queryBuilder
|
||||
* @param metadataTable
|
||||
* @param loadRef
|
||||
* @param p
|
||||
* @param ps
|
||||
* @return
|
||||
*/
|
||||
public static void save(UKDataBean dataBean){
|
||||
ESDataExchangeImpl esDataExchange = MainContext.getContext().getBean(ESDataExchangeImpl.class);
|
||||
try {
|
||||
esDataExchange.saveIObject(dataBean);
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user