From 845f643c1aaaa37a53219b6f11b77a1b333cf619 Mon Sep 17 00:00:00 2001
From: sunty <1172534965@qq.com>
Date: 星期一, 09 十二月 2019 20:42:28 +0800
Subject: [PATCH] add track cache util

---
 EsApi.go |   91 ++++++++++++++++++++++++---------------------
 1 files changed, 49 insertions(+), 42 deletions(-)

diff --git a/EsApi.go b/EsApi.go
index ccf41b4..1ab935d 100644
--- a/EsApi.go
+++ b/EsApi.go
@@ -72,45 +72,46 @@
 	if err != nil {
 		return "", err
 	}
+
 	feature := sources[0]["targetInfo"].([]interface{})[0].(map[string]interface{})["feature"].(string)
 	return feature, nil
 }
 
 //鏍规嵁鐩爣id杩藉姞璺熻釜淇℃伅
-func AppendTargetInfo(id string,targetInfo string, indexName string, serverIp string, serverPort string)(string,error){
-	if targetInfo == ""{
-		return "",errors.New("append data is nil")
+func AppendTargetInfo(id string, targetInfo string, indexName string, serverIp string, serverPort string) (string, error) {
+	if targetInfo == "" {
+		return "", errors.New("append data is nil")
 	}
 	var info interface{}
 	url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_update_by_query?refresh=true"
 	jsonDSL := `{
   "query": {
     "term":{
-      "id":"`+id+`"
+      "id":"` + id + `"
     }
   },
   "script": {
     "lang": "painless",
     "inline": "ctx._source.linkTagInfo.add(params.newparam)",
     "params": {
-      "newparam": `+targetInfo+`
+      "newparam": ` + targetInfo + `
     }
   }
 }`
 	fmt.Println(jsonDSL)
 	buf, err := EsReq("POST", url, []byte(jsonDSL))
 	if err != nil {
-		return "",err
+		return "", err
 	}
-	json.Unmarshal(buf,&info)
+	json.Unmarshal(buf, &info)
 	out, ok := info.(map[string]interface{})
 	fmt.Println(out)
 	if !ok {
-		return "",errors.New("http response interface can not change map[string]interface{}")
+		return "", errors.New("http response interface can not change map[string]interface{}")
 	}
 	middle, ok := out["updated"].(float64)
 	if !ok {
-		return "",errors.New("first updated change error!")
+		return "", errors.New("first updated change error!")
 	}
 	mes := ""
 	if middle == 1 {
@@ -119,7 +120,7 @@
 	if middle == 0 {
 		mes = "宸茬粡杩藉姞"
 	}
-	return mes,nil
+	return mes, nil
 
 }
 
@@ -176,7 +177,7 @@
 	return statu
 }
 
-//鑾峰彇褰撳墠鑺傜偣鎶撴媿搴撴墍鏈変汉鍛業D
+//鑾峰彇褰撳墠鑺傜偣鎶撴媿搴撴墍鏈変汉鍛業D*缂撳瓨*
 func GetAllLocalVideopersonsId(compareArgs protomsg.CompareArgs, indexName string, serverIp string, serverPort string, alarmLevelTypes string) (capturetable []string) {
 	queryStr := ""
 	queryBody := compareArgs.InputValue
@@ -347,26 +348,26 @@
 		"/" + indexName + "/_search"
 	var filterArr []string
 	if isAlarm != "all" {
-		filterArr = append(filterArr,`				{
+		filterArr = append(filterArr, `				{
 					"term":{
-						"isAlarm":"` + isAlarm + `"
+						"isAlarm":"`+isAlarm+`"
 					}
 				}`)
 	}
 
 	if category != "all" {
-		filterArr = append(filterArr,`				{
+		filterArr = append(filterArr, `				{
 					"term":{
-						"targetInfo.targetType":"` + category + `"
+						"targetInfo.targetType":"`+category+`"
 					}
 				}`)
 
 	}
 
- 	queryStr := `"query":{
+	queryStr := `"query":{
 		"bool":{
 			"filter":[
-				`+strings.Join(filterArr,",")+`
+				` + strings.Join(filterArr, ",") + `
 			]
 		}
 	},`
@@ -635,22 +636,22 @@
 }
 
 /****************************************浠ヤ笅涓簊dkCompare姣斿缂撳瓨浣跨敤鏂规硶*********************************************/
-//鑾峰彇鏌ヨ鎬绘暟
-func GetTotal(serverIp string, serverPort string, indexName string, shards string) (total int) {
+//鑾峰彇鏌ヨ鎬绘暟 *缂撳瓨*
+func GetTotal(serverIp string, serverPort string, indexName string, shards string, targetType string) (total int) {
 	JsonDSL := `{
 	"size": 0,
 	"query": {
 		"bool": {
 			"filter": [{
 				"term": {
-					"targetInfo.targetType.raw": "face"
+					"targetInfo.targetType.raw": "`+targetType+`"
 				}
 			}]
 		}
 	}
 }`
 
-	url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search"
+	url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search?preference=_shards:" + shards + "|_only_local"
 	buf, err := EsReq("POST", url, []byte(JsonDSL))
 	if err != nil {
 		return
@@ -670,11 +671,17 @@
 
 }
 
-//鏌ヨ鏃堕棿娈垫暟鎹�
-func GetPeriodInfos(serverIp string, serverPort string, startTime string, endTime string, indexName string, shards string) ([]*protomsg.Esinfo, error) {
-	var capdbinfo []*protomsg.Esinfo
+//鏌ヨ鏃堕棿娈垫暟鎹� *缂撳瓨*
+func GetPeriodInfos(serverIp string, serverPort string, startTime string, endTime string, indexName string, shards string, targetType string) ([]*protomsg.MultiFeaCache, error) {
+	var capdbinfo []*protomsg.MultiFeaCache
 	url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search?preference=_shards:" + shards + "|_only_local"
-
+	var source []string
+	switch targetType {
+	case "face":
+		source = []string{"id","targetInfo.feature","analyServerId","cameraId"}
+	case "track":
+		source = []string{"id","targetInfo.feature","analyServerId","cameraId","targetInfo.attachTarget.feature","linkTagInfo.targetInfo.feature","linkTagInfo.targetInfo.attachTarget.feature","linkTagInfo.cameraId"}
+	}
 	JsonDSL := `
 				{
 				    "query": {
@@ -682,7 +689,7 @@
 				            "filter": [
 				                {
 				                    "term": {
-				                        "targetInfo.targetType.raw": "face"
+				                        "targetInfo.targetType.raw": "`+targetType+`"
 				                    }
 				                },
 				                {
@@ -697,15 +704,12 @@
 				        }
 				    },
 				    "size": 1000000,
-				    "_source": [
-				        "id",
-				        "targetInfo.feature",
-				        "analyServerId"
-				    ]
+				    "_source": ["`+strings.Replace(strings.Trim(fmt.Sprint(source), "[]"), " ", "\",\"", -1)+`"]
 				}
     `
 	//logger.Debug(url)
 	//logger.Debug(JsonDSL)
+	//fmt.Println(JsonDSL)
 	buf, err := EsReq("POST", url, []byte(JsonDSL))
 	if err != nil {
 		return capdbinfo, errors.New("http request dbtablename info is err!")
@@ -716,19 +720,26 @@
 	if err != nil {
 		return capdbinfo, err
 	}
-
+	//fmt.Println(sources)
 	// 杩斿洖鎵�鏈夋煡璇㈢殑鏁版嵁
 	capdbinfos := Parsesources(sources)
 	return capdbinfos, nil
-
 }
 
-// 鏌ヨ搴曞簱浜哄憳淇℃伅
-func GetOceanFeatures(serverIp string, serverPort string, queryIndexNum int, queryNums int, indexName string, shards string) ([]*protomsg.Esinfo, error) {
-	var dbinfos []*protomsg.Esinfo
+// 鏌ヨ搴曞簱浜哄憳淇℃伅*缂撳瓨*
+func GetOceanFeatures(serverIp string, serverPort string, queryIndexNum int, queryNums int, indexName string, shards string, targetType string) ([]*protomsg.MultiFeaCache, error) {
+	var dbinfos []*protomsg.MultiFeaCache
 	point := strconv.Itoa(queryIndexNum)
 	number := strconv.Itoa(queryNums)
 	JsonDSL := ""
+	var source []string
+	switch targetType {
+	case "face":
+		source = []string{"id","targetInfo.feature","analyServerId"}
+	case "track":
+		source = []string{"id","targetInfo.feature","analyServerId","targetInfo.attachTarget.feature","linkTagInfo.targetInfo.feature","linkTagInfo.targetInfo.attachTarget.feature"}
+	}
+
 	url := "http://" + serverIp + ":" + serverPort + "/" + indexName + "/_search?preference=_shards:" + shards + "|_only_local"
 	JsonDSL = `  {
                     "from": ` + point + `,        
@@ -737,18 +748,14 @@
 							"filter": [
 								{
 									"term": {
-										"targetInfo.targetType.raw": "face"
+										"targetInfo.targetType.raw": "`+targetType+`"
 								}
 									}
 							]
 						}	
 					},
                      "size":` + number + `,
-                     "_source": [
-							"id",
-							"targetInfo.feature",
-							"analyServerId"
-                       ]
+                     "_source": ["`+strings.Replace(strings.Trim(fmt.Sprint(source), "[]"), " ", "\",\"", -1)+`"]
                     }`
 
 	buf, err := EsReq("POST", url, []byte(JsonDSL))

--
Gitblit v1.8.0