From 0b5dfb70be50bd03d95a7a1248a366661549cfa4 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期一, 07 九月 2020 17:15:23 +0800 Subject: [PATCH] fix getfaceDate --- EsClient.go | 94 ++++++++++++++++++++++++++--------------------- 1 files changed, 52 insertions(+), 42 deletions(-) diff --git a/EsClient.go b/EsClient.go index 3e6fd24..0fa7e80 100644 --- a/EsClient.go +++ b/EsClient.go @@ -476,8 +476,7 @@ return tmpinfos } - -func FaceSourceAggregations(buf []byte, thresholdTime int,thresholdStayTime int) (sources []map[string]interface{}, err error) { +func FaceSourceAggregations(buf []byte, thresholdTime int, thresholdStayTime int) (sources []map[string]interface{}, err error) { loc, err := time.LoadLocation("Asia/Shanghai") if err != nil { return nil, errors.New("鏃跺尯璁剧疆閿欒") @@ -507,7 +506,7 @@ indexLength := len(finalHits) point := 0 for _, in := range finalHits { - point = point+1 + point = point + 1 tmpHitSource := make(map[string]interface{}) tmpBuf, ok := in.(map[string]interface{}) if !ok { @@ -528,24 +527,26 @@ } sTime := tmpTime - eTime := mTime.Add(time.Second*1).Format("2006-01-02 15:04:05") + eTime := mTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") stayTime := 1.0 - if startTime != "" && point < indexLength{ + if startTime != "" && point <= indexLength { sinTime, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, loc) passTime := math.Abs(mTime.Sub(sinTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime //fmt.Println("passTime: ", passTime) - if int(passTime) <= thresholdTime || point == indexLength{ - startTime = tmpTime - hitsSources[len(hitsSources)-1]["endTime"] = tmpTime - if point == indexLength{ + if int(passTime) <= thresholdTime { + if point == indexLength { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime startTime = "" + } else { + startTime = tmpTime + hitsSources[len(hitsSources)-1]["endTime"] = tmpTime + continue } - continue + } else { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) @@ -556,12 +557,13 @@ sinTime.Add(time.Second * 1) sinTime.Format("2006-01-02 15:04:05") hitsSources[len(hitsSources)-1]["endTime"] = tmpTime - stayTime = 1 + stayTime = 1 } hitsSources[len(hitsSources)-1]["stayTime"] = stayTime + if point == indexLength { + stayTime = 1 + } startTime = "" - continue - //fmt.Println(hitsSources[len(hitsSources)-1]) } } //fmt.Println("========================================================") @@ -582,7 +584,7 @@ return allSource, nil } -func SourceDeduplication(buf [] byte) ([]map[string]interface{},error) { +func SourceDeduplication(buf [] byte) ([]map[string]interface{}, error) { var info interface{} json.Unmarshal(buf, &info) out, ok := info.(map[string]interface{}) @@ -598,7 +600,7 @@ if len(buckets) == 0 { return nil, nil } - faceId := make([]map[string]interface{},0) + faceId := make([]map[string]interface{}, 0) for _, in := range buckets { tmpInfo := make(map[string]interface{}) topAttentionHits := in.(map[string]interface{})["top_attention_hits"].(map[string]interface{}) @@ -608,11 +610,11 @@ tmpInfo["lastTime"] = finalHits[0].(map[string]interface{})["_source"].(map[string]interface{})["picDate"].(string) faceId = append(faceId, tmpInfo) } - return faceId,nil + return faceId, nil } //瑙f瀽鑱氬悎璁℃暟缁撴瀯 -func SourceStatistics(buf [] byte) ([]map[string]interface{},error) { +func SourceStatistics(buf [] byte) ([]map[string]interface{}, error) { var info interface{} json.Unmarshal(buf, &info) out, ok := info.(map[string]interface{}) @@ -628,14 +630,14 @@ if len(buckets) == 0 { return nil, nil } - resultData := make([]map[string]interface{},0) + resultData := make([]map[string]interface{}, 0) for _, pick := range buckets { - data := make(map[string]interface{},0) + data := make(map[string]interface{}, 0) data["areaId"] = pick.(map[string]interface{})["key"].(map[string]interface{})["areaId"].(string) data["peopleNum"] = int(pick.(map[string]interface{})["doc_count"].(float64)) resultData = append(resultData, data) } - return resultData,nil + return resultData, nil } func SourceAggregations(buf [] byte, thresholdTime float64, queryUseTime float64) (sources map[string]interface{}, err error) { @@ -672,7 +674,7 @@ indexLength := len(finalHits) point := 0 for _, in := range finalHits { - point = point+1 + point = point + 1 tmpHitSource := make(map[string]interface{}) tmpbuf, ok := in.(map[string]interface{}) if !ok { @@ -693,23 +695,26 @@ } sTime := tmpTime - eTime := mTime.Add(time.Second*1).Format("2006-01-02 15:04:05") + eTime := mTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") stayTime := 1.0 - if startTime != "" && point < indexLength{ + if startTime != "" && point <= indexLength { sinTime, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, loc) passTime := math.Abs(mTime.Sub(sinTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime //fmt.Println("passTime: ", passTime) - if passTime <= thresholdTime || point == indexLength{ - startTime = tmpTime - hitsSources[len(hitsSources)-1]["endTime"] = tmpTime - if point == indexLength{ + if passTime <= thresholdTime { + if point == indexLength { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime + startTime = "" + } else { + startTime = tmpTime + hitsSources[len(hitsSources)-1]["endTime"] = tmpTime + continue } - continue + } else { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) @@ -720,12 +725,13 @@ sinTime.Add(time.Second * 1) sinTime.Format("2006-01-02 15:04:05") hitsSources[len(hitsSources)-1]["endTime"] = tmpTime - stayTime = 1 + stayTime = 1 } hitsSources[len(hitsSources)-1]["stayTime"] = stayTime + if point == indexLength { + stayTime = 1 + } startTime = "" - continue - //fmt.Println(hitsSources[len(hitsSources)-1]) } } //fmt.Println("========================================================") @@ -795,7 +801,7 @@ startTime := "" //fmt.Println("finalHits: ",finalHits) for _, in := range finalHits { - point = point+1 + point = point + 1 tmpHitSource := make(map[string]interface{}) tmpbuf, ok := in.(map[string]interface{}) if !ok { @@ -816,23 +822,26 @@ } sTime := tmpTime - eTime := mTime.Add(time.Second*1).Format("2006-01-02 15:04:05") + eTime := mTime.Add(time.Second * 1).Format("2006-01-02 15:04:05") stayTime := 1.0 - if startTime != "" && point < indexLength{ + if startTime != "" && point <= indexLength { sinTime, _ := time.ParseInLocation("2006-01-02 15:04:05", startTime, loc) passTime := math.Abs(mTime.Sub(sinTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime //fmt.Println("passTime: ", passTime) - if passTime <= thresholdTime || point == indexLength{ - startTime = tmpTime - hitsSources[len(hitsSources)-1]["endTime"] = tmpTime - if point == indexLength{ + if passTime <= thresholdTime { + if point == indexLength { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) realStartTime, _ := time.ParseInLocation("2006-01-02 15:04:05", hitStartTime, loc) stayTime = math.Abs(mTime.Sub(realStartTime).Seconds()) hitsSources[len(hitsSources)-1]["stayTime"] = stayTime + startTime = "" + } else { + startTime = tmpTime + hitsSources[len(hitsSources)-1]["endTime"] = tmpTime + continue } - continue + } else { hitStartTime := hitsSources[len(hitsSources)-1]["startTime"].(string) hitEndTime := hitsSources[len(hitsSources)-1]["endTime"].(string) @@ -843,12 +852,13 @@ sinTime.Add(time.Second * 1) sinTime.Format("2006-01-02 15:04:05") hitsSources[len(hitsSources)-1]["endTime"] = tmpTime - stayTime = 1 + stayTime = 1 } hitsSources[len(hitsSources)-1]["stayTime"] = stayTime + if point == indexLength { + stayTime = 1 + } startTime = "" - continue - //fmt.Println(hitsSources[len(hitsSources)-1]) } } startTime = tmpTime -- Gitblit v1.8.0