package TeacherDao import ( "dsBigData/Business/Teacher/TeacherModel" "dsBigData/Utils/CommonUtil" "dsBigData/Utils/EsUtil" "encoding/json" "github.com/olivere/elastic/v7" "github.com/tidwall/gjson" ) var esClient = EsUtil.EsClient var CTX = EsUtil.CTX func GetTeacherCountAggsXxbxlxByCityOrDistrict(districtCode []string, schoolIds []string, xxbxlxs []string) ([]TeacherModel.TeacherCountAggsXxbxlx, error) { enableFlagTerm := elastic.NewTermQuery("enable_flag", 1) delFlagTerm := elastic.NewTermQuery("del_flag", 0) bUseTerm := elastic.NewTermQuery("data_content.b_use", 1) interfaceArr := CommonUtil.ConvertStringArrToInterfaceArr(xxbxlxs) xxbxlxTerms := elastic.NewTermsQuery("school_type", interfaceArr...) var boolQuery *elastic.BoolQuery if len(districtCode) > 0 { interfaceArr := CommonUtil.ConvertStringArrToInterfaceArr(districtCode) districtCodeTerms := elastic.NewTermsQuery("district_code", interfaceArr...) boolQuery = elastic.NewBoolQuery().Must(districtCodeTerms, enableFlagTerm, delFlagTerm, bUseTerm, xxbxlxTerms) } else if len(schoolIds) > 0 { interfaceArr := CommonUtil.ConvertStringArrToInterfaceArr(schoolIds) orgIdTerms := elastic.NewTermsQuery("org_id", interfaceArr...) boolQuery = elastic.NewBoolQuery().Must(orgIdTerms, enableFlagTerm, delFlagTerm, bUseTerm, xxbxlxTerms) } xxbxlxAggs := elastic. NewTermsAggregation(). Field("school_type"). Size(50) result, err := esClient.Search(). Index("user_teacher"). Query(boolQuery). Size(0). Aggregation("xxbxlx", xxbxlxAggs). Do(CTX) if err != nil { return nil, err } resByte, err := json.Marshal(result.Aggregations) resStr := string(resByte) var teacherCountAggsXxbxlxArr []TeacherModel.TeacherCountAggsXxbxlx resCount := gjson.Get(resStr, "xxbxlx.buckets.#") for i := 0; i < int(resCount.Num); i++ { var teacherCountAggsXxbxlx TeacherModel.TeacherCountAggsXxbxlx teacherCountAggsXxbxlx.XxbxlxCode = gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".key").Str teacherCountAggsXxbxlx.Count = int(gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Num) teacherCountAggsXxbxlxArr = append(teacherCountAggsXxbxlxArr, teacherCountAggsXxbxlx) } return teacherCountAggsXxbxlxArr, nil } func GetTeacherCountAggsOrgId(schoolIds []string) ([]TeacherModel.TeacherCountAggsOrg, error) { enableFlagTerm := elastic.NewTermQuery("enable_flag", 1) delFlagTerm := elastic.NewTermQuery("del_flag", 0) bUseTerm := elastic.NewTermQuery("data_content.b_use", 1) interfaceArr := CommonUtil.ConvertStringArrToInterfaceArr(schoolIds) orgIdTerms := elastic.NewTermsQuery("org_id", interfaceArr...) boolQuery := elastic.NewBoolQuery().Must(orgIdTerms, enableFlagTerm, delFlagTerm, bUseTerm, orgIdTerms) orgIdAggs := elastic. NewTermsAggregation(). Field("org_id"). Size(1000) result, err := esClient.Search(). Index("user_teacher"). Query(boolQuery). Size(0). Aggregation("orgId", orgIdAggs). Do(CTX) if err != nil { return nil, err } resByte, err := json.Marshal(result.Aggregations) resStr := string(resByte) var teacherCountAggsOrgArr []TeacherModel.TeacherCountAggsOrg resCount := gjson.Get(resStr, "orgId.buckets.#") for i := 0; i < int(resCount.Num); i++ { var teacherCountAggsOrg TeacherModel.TeacherCountAggsOrg teacherCountAggsOrg.OrgId = gjson.Get(resStr, "orgId.buckets."+CommonUtil.ConvertIntToString(i)+".key").Str teacherCountAggsOrg.Count = int(gjson.Get(resStr, "orgId.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Num) teacherCountAggsOrgArr = append(teacherCountAggsOrgArr, teacherCountAggsOrg) } return teacherCountAggsOrgArr, nil } func GetTeacherCountAggsBzlb(schoolId string, bzlbs []string) ([]TeacherModel.TeacherCountAggsBzlb, error) { orgIdTerm := elastic.NewTermQuery("org_id", schoolId) bUseTerm := elastic.NewTermQuery("data_content.b_use", 1) enableFlagTerm := elastic.NewTermQuery("enable_flag", 1) delFlagTerm := elastic.NewTermQuery("del_flag", 0) boolQuery := elastic.NewBoolQuery().Must(orgIdTerm, bUseTerm, enableFlagTerm, delFlagTerm) bzlbAggs := elastic. NewTermsAggregation(). Field("data_content.bzlbm"). Size(10) result, err := esClient.Search(). Index("user_teacher"). Query(boolQuery). Size(0). Aggregation("bzlb", bzlbAggs). Do(CTX) if err != nil { return nil, err } resByte, err := json.Marshal(result.Aggregations) resStr := string(resByte) var teacherCountAggsBzlbArr []TeacherModel.TeacherCountAggsBzlb resCount := gjson.Get(resStr, "bzlb.buckets.#") for i := 0; i < int(resCount.Num); i++ { var teacherCountAggsBzlb TeacherModel.TeacherCountAggsBzlb teacherCountAggsBzlb.BzlbCode = gjson.Get(resStr, "bzlb.buckets."+CommonUtil.ConvertIntToString(i)+".key").Str teacherCountAggsBzlb.Count = int(gjson.Get(resStr, "bzlb.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Num) teacherCountAggsBzlbArr = append(teacherCountAggsBzlbArr, teacherCountAggsBzlb) } return teacherCountAggsBzlbArr, nil }