whywhyo
2023-09-18 d221c28fa06bd7f400b9e6510e8d3be30fe97f9f
zhang-content/src/main/java/com/ruoyi/service/impl/EsServiceImpl.java
@@ -1,9 +1,13 @@
package com.ruoyi.service.impl;
import com.ruoyi.common.core.domain.entity.EsModel;
import com.ruoyi.domain.ZAuthority;
import com.ruoyi.domain.ZInfoUser;
import com.ruoyi.mapper.EsRepository;
import com.ruoyi.service.EsService;
import com.ruoyi.service.ZAuthorityService;
import com.ruoyi.service.ZInfoUserService;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.MultiMatchQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
@@ -22,6 +26,9 @@
import java.util.Iterator;
import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;
import static com.ruoyi.constant.MenuAuthority.EQUIPMENT_LIST;
@Service
public class EsServiceImpl implements EsService {
@@ -29,6 +36,13 @@
    private EsRepository esRepository;
    @Resource
    private ElasticsearchRestTemplate elasticsearchRestTemplate;
    @Resource
    private ZInfoUserService zInfoUserService;
    @Resource
    private ZAuthorityService zAuthorityService;
    @Override
    public int insertTable(EsModel esModel) {
        try {
@@ -49,6 +63,18 @@
        //多字段进行匹配
//        MultiMatchQueryBuilder multiMatchQueryBuilder = QueryBuilders.multiMatchQuery(con, "ctName", "ctContent","remark",
//                "by1","by2","by3","by4");
        //要查自己家庭的
        ZInfoUser myself = zInfoUserService.getMyself();
        Long familyId = myself.getFamilyId();
        //也要查别人授权的
        List<ZAuthority> authority = zAuthorityService.getAuthority();
        List<Long> idList = authority.stream().filter(auth -> auth.getAuthority().toString().equals(EQUIPMENT_LIST)).map(ZAuthority::getFid).collect(Collectors.toList());
        //加上自己家庭的id
        idList.add(familyId);
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        boolQueryBuilder.should(QueryBuilders.matchQuery("ctName",con));
        boolQueryBuilder.should(QueryBuilders.matchQuery("ctContent",con));
@@ -59,6 +85,7 @@
        boolQueryBuilder.should(QueryBuilders.matchQuery("by4",con));
        boolQueryBuilder.should(QueryBuilders.matchQuery("by6",con));
        boolQueryBuilder.should(QueryBuilders.matchQuery("by7",con));
        boolQueryBuilder.filter(QueryBuilders.termsQuery("fid", idList));
        NativeSearchQueryBuilder nativeSearchQueryBuilder = new NativeSearchQueryBuilder()
                .withQuery(boolQueryBuilder);