From a46931eb698575476d15f0af5cae4ebe7edc45a3 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期一, 24 八月 2020 18:10:04 +0800
Subject: [PATCH] add auto param

---
 EsApi.go |  174 +++++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 105 insertions(+), 69 deletions(-)

diff --git a/EsApi.go b/EsApi.go
index 875ba9a..13a40b5 100644
--- a/EsApi.go
+++ b/EsApi.go
@@ -161,32 +161,38 @@
 
 //鏍规嵁鎽勫儚鏈哄垪琛ㄥ拰鏃堕棿鏌ヨ浜哄憳娴忚杞ㄨ抗
 func GetPersonDataByCameraIdAndTime(cameraId []string, startTime string, endTime string, serverIp string, ServerPort string, indexName string) (map[string]interface{}, error) {
-	esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
+
+	var filterArr []string
+	if cameraId != nil && len(cameraId) > 0{
+		esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
+		filterArr = append(filterArr, `{
+							{
+							"terms": {
+                        	"cameraId": ["`+esCameraId+`"]
+						}
+				}`)
+	}
+	filterArr = append(filterArr, `{
+                    "range": {
+                        "picDate": {
+                            "gte": "`+startTime+`",
+                            "lte": "`+endTime+`"
+                        }
+                    }
+                }`)
+	filterArr = append(filterArr, `                {
+                    "term": {
+                        "targetInfo.targetType.raw": "Yolo"
+                    }
+                }`)
+	queryStr := strings.Join(filterArr, ",")
+
 	personUrl := "http://" + serverIp + ":" + ServerPort + "/" + indexName + "/_search"
 	personBody := `{
     "query": {
         "bool": {
             "filter": [
-                {
-                    "range": {
-                        "picDate": {
-                            "gte": "` + startTime + `",
-                            "lte": "` + endTime + `"
-                        }
-                    }
-                },
-                {
-                    "term": {
-                        "targetInfo.targetType.raw": "Yolo"
-                    }
-                },
-                {
-                    "terms": {
-                        "cameraId": [
-                           "` + esCameraId + `"
-                        ]
-                    }
-                }
+				` + queryStr + `
             ]
         }
     },
@@ -214,12 +220,12 @@
 	if err != nil {
 		return nil, err
 	}
-	queryUseTime := time.Now().Sub(queryStartTime).Seconds()*1000
+	queryUseTime := time.Now().Sub(queryStartTime).Seconds() * 1000
 	sources, err := Sourcelist(buf)
 	if err != nil {
 		return nil, err
 	}
-	resData,err := PerSonAnalysis(sources)
+	resData, err := PerSonAnalysis(sources)
 	source["result"] = resData
 	source["total"] = len(resData)
 	source["queryUseTime"] = queryUseTime
@@ -229,31 +235,45 @@
 }
 
 //鏍规嵁鏃堕棿鑼冨洿锛屾憚鍍忔満鍒楄〃锛屽垎缁勮仛鍚堜汉鑴稿垪琛�,杩斿洖鍒嗙粍鏁版嵁
-func GetFaceDataBucketsByCameraIdAndTimeReturnByGrouped(cameraId []string, startTime string, endTime string, thresholdTime float64, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{}, err error) {
-	esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
+func GetFaceDataBucketsByCameraIdAndTimeReturnByGrouped(cameraId []string, personId []string, startTime string, endTime string, thresholdTime float64, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{}, err error) {
+	var filterArr []string
+	if cameraId != nil && len(cameraId) > 0{
+		esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
+		filterArr = append(filterArr, `{
+							"terms": {
+                        	"cameraId": ["`+esCameraId+`"]
+						}
+				}`)
+	}
+	if personId != nil &&len(personId) > 0{
+		esPersonId := strings.Replace(strings.Trim(fmt.Sprint(personId), "[]"), " ", "\",\"", -1)
+		filterArr = append(filterArr, `{
+			"terms": {
+				"baseInfo.targetId": ["`+esPersonId+`"]
+				}
+			}`)
+	}
+	filterArr = append(filterArr, `{
+                    "range": {
+                        "picDate": {
+                            "gte": "`+startTime+`",
+                            "lte": "`+endTime+`"
+                        }
+                    }
+                }`)
+	filterArr = append(filterArr, `                {
+                    "term": {
+                        "targetInfo.targetType.raw": "FaceDetect"
+                    }
+                }`)
+	queryStr := strings.Join(filterArr, ",")
+
 	var buckersUrl = "http://" + serverIp + ":" + ServerPort + "/" + indexName + "/_search"
 	var buckersBody = `{
     "query": {
         "bool": {
             "filter": [
-                {
-                    "range": {
-                        "picDate": {
-                            "gte": "` + startTime + `",
-                            "lte": "` + endTime + `"
-                        }
-                    }
-                },
-                {
-                    "term": {
-                        "targetInfo.targetType.raw": "FaceDetect"
-                    }
-                },
-                {
-                    "terms": {
-                        "cameraId": ["` + esCameraId + `"]
-                    }
-                }
+				` + queryStr + `
             ]
         }
     },
@@ -299,13 +319,15 @@
         }
     }
 }`
+	//fmt.Println(buckersUrl)
+	//fmt.Println(buckersBody)
 	sources := make(map[string]interface{})
 	queryStartTime := time.Now()
 	buf, err := EsReq("POST", buckersUrl, []byte(buckersBody))
 	if err != nil {
 		return nil, err
 	}
-	queryUseTime := time.Now().Sub(queryStartTime).Seconds()*1000
+	queryUseTime := time.Now().Sub(queryStartTime).Seconds() * 1000
 	//fmt.Println(queryUseTime)
 	tmpSources, err := SourceAggregationsReturnByGrouped(buf, thresholdTime)
 	if err != nil {
@@ -319,31 +341,45 @@
 }
 
 //鏍规嵁鏃堕棿鑼冨洿锛屾憚鍍忔満鍒楄〃锛屽垎缁勮仛鍚堜汉鑴稿垪琛�
-func GetFaceDataBucketsByCameraIdAndTime(cameraId []string, startTime string, endTime string, thresholdTime float64, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{}, err error) {
-	esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
+func GetFaceDataBucketsByCameraIdAndTime(cameraId []string, personId []string, startTime string, endTime string, thresholdTime float64, serverIp string, ServerPort string, indexName string) (buckersDate map[string]interface{}, err error) {
+	var filterArr []string
+	if cameraId != nil && len(cameraId) > 0{
+		esCameraId := strings.Replace(strings.Trim(fmt.Sprint(cameraId), "[]"), " ", "\",\"", -1)
+		filterArr = append(filterArr, `{
+							"terms": {
+                        	"cameraId": ["`+esCameraId+`"]
+						}
+				}`)
+	}
+	if personId != nil &&len(personId) > 0{
+		esPersonId := strings.Replace(strings.Trim(fmt.Sprint(personId), "[]"), " ", "\",\"", -1)
+		filterArr = append(filterArr, `{
+			"terms": {
+				"baseInfo.targetId": ["`+esPersonId+`"]
+				}
+			}`)
+	}
+	filterArr = append(filterArr, `{
+                    "range": {
+                        "picDate": {
+                            "gte": "`+startTime+`",
+                            "lte": "`+endTime+`"
+                        }
+                    }
+                }`)
+	filterArr = append(filterArr, `                {
+                    "term": {
+                        "targetInfo.targetType.raw": "FaceDetect"
+                    }
+                }`)
+	queryStr := strings.Join(filterArr, ",")
+
 	var buckersUrl = "http://" + serverIp + ":" + ServerPort + "/" + indexName + "/_search"
 	var buckersBody = `{
     "query": {
         "bool": {
             "filter": [
-                {
-                    "range": {
-                        "picDate": {
-                            "gte": "` + startTime + `",
-                            "lte": "` + endTime + `"
-                        }
-                    }
-                },
-                {
-                    "term": {
-                        "targetInfo.targetType.raw": "FaceDetect"
-                    }
-                },
-                {
-                    "terms": {
-                        "cameraId": ["` + esCameraId + `"]
-                    }
-                }
+				` + queryStr + `
             ]
         }
     },
@@ -396,9 +432,9 @@
 	if err != nil {
 		return nil, err
 	}
-	queryUseTime := time.Now().Sub(queryStartTime).Seconds()*1000
+	queryUseTime := time.Now().Sub(queryStartTime).Seconds() * 1000
 
-	sources, err := SourceAggregations(buf, thresholdTime,queryUseTime)
+	sources, err := SourceAggregations(buf, thresholdTime, queryUseTime)
 	if err != nil {
 		return nil, err
 	}
@@ -407,7 +443,7 @@
 
 //鏍规嵁鎶撴媿浜哄憳id鏇存柊锛坧icurl锛夊浘鐗囧湴鍧�
 func UpdatePicUrlById(id string, picUrl string, indexName string, serverIp string, serverPort string) (err error) {
-    updateTime := time.Now().Format("2006-01-02 15:04:05")
+	updateTime := time.Now().Format("2006-01-02 15:04:05")
 	tRes, err := AIOceaninfosbyid([]string{id}, indexName, serverIp, serverPort)
 	if err != nil || len(tRes) == 0 {
 		return err
@@ -415,10 +451,10 @@
 	picMaxUrls := tRes[0].PicMaxUrl
 	sourceStr := `    	
         "lang":"painless",
-        "inline": "ctx._source.picMaxUrl.add('` + picUrl + `');ctx._source.updateTime='`+updateTime+`'"
+        "inline": "ctx._source.picMaxUrl.add('` + picUrl + `');ctx._source.updateTime='` + updateTime + `'"
 `
 	if len(picMaxUrls) >= 2 {
-		sourceStr = `"source": "ctx._source.picMaxUrl[1]='` + picUrl + `';ctx._source.updateTime='`+updateTime+`'"`
+		sourceStr = `"source": "ctx._source.picMaxUrl[1]='` + picUrl + `';ctx._source.updateTime='` + updateTime + `'"`
 	}
 	var info interface{}
 	url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_update_by_query?refresh=true"

--
Gitblit v1.8.0