master
wubin 5 years ago
parent 4db5ba399e
commit 07957ec7f2

@ -0,0 +1,9 @@
package StudentController
import "github.com/gin-gonic/gin"
func GetStudentCountByArea(c *gin.Context) {
cityCode := c.Query("cityCode")
districtCode := c.Query("districtCode")
}

@ -1,6 +1,59 @@
package StudentDao
import "dsBigData/Utils/EsUtil"
import (
"dsBigData/Business/Student/StudentModel"
"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 GetStudentCountByCityOrDistrict(cityCode string, districtCode string) ([]StudentModel.StudentCountAggsXxbxlx, error) {
enableFlagTerm := elastic.NewTermQuery("enable_flag", 1)
delFlagTerm := elastic.NewTermQuery("del_flag", 0)
bUseTerm := elastic.NewTermQuery("data_content.b_use", 1)
var areaTerm *elastic.TermQuery
if len(cityCode) > 0 {
areaTerm = elastic.NewTermQuery("city_code", cityCode)
} else if len(districtCode) > 0 {
areaTerm = elastic.NewTermQuery("district_code", districtCode)
}
boolQuery := elastic.NewBoolQuery().Must(areaTerm, enableFlagTerm, delFlagTerm, bUseTerm)
xxbxlxAggs := elastic.
NewTermsAggregation().
Field("school_type").
Size(50)
result, err := esClient.Search().
Index("user_student").
Query(boolQuery).
Size(1000).
Aggregation("district", xxbxlxAggs).
Do(CTX)
if err != nil {
return nil, err
}
resByte, err := json.Marshal(result.Aggregations)
resStr := string(resByte)
var studentCountAggsXxbxlxArr []StudentModel.StudentCountAggsXxbxlx
resCount := gjson.Get(resStr, "xxbxlx.buckets.#")
for i := 0; i < int(resCount.Num); i++ {
var studentCountAggsXxbxlx StudentModel.StudentCountAggsXxbxlx
studentCountAggsXxbxlx.XxbxlxCode = gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".key").Str
studentCountAggsXxbxlx.Count = gjson.Get(resStr, "xxbxlx.buckets."+CommonUtil.ConvertIntToString(i)+".doc_count").Raw
studentCountAggsXxbxlxArr = append(studentCountAggsXxbxlxArr, studentCountAggsXxbxlx)
}
return studentCountAggsXxbxlxArr, nil
}

@ -0,0 +1,12 @@
package StudentModel
type StudentCountAggsXxbxlx struct{
XxbxlxCode string `json:"xxbxlx_code"`
Count string `json:"count"`
}
type StudentCount struct {
XxbxlxCode string `json:"xxbxlx_code"`
XxbxlxName string `json:"xxbxlx_name"`
Count int `json:"count"`
}

@ -0,0 +1,11 @@
package StudentService
import (
"dsBigData/Business/Student/StudentDao"
"dsBigData/Business/Student/StudentModel"
)
func GetStudentCountByCityOrDistrict(cityCode string, districtCode string) ([]StudentModel.StudentCountAggsXxbxlx, error) {
arr, err := StudentDao.GetStudentCountByCityOrDistrict(cityCode, districtCode)
return arr, err
}
Loading…
Cancel
Save