From 0d251e8d1a5ba99f1186daa20ca88f90d1bf6c29 Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期四, 28 五月 2020 18:46:20 +0800
Subject: [PATCH] add log

---
 EsClient.go |  189 +++++++++++++++++++++++++++++++++++++++--------
 1 files changed, 157 insertions(+), 32 deletions(-)

diff --git a/EsClient.go b/EsClient.go
index 1f01186..39754cf 100644
--- a/EsClient.go
+++ b/EsClient.go
@@ -57,43 +57,90 @@
 	}
 }
 
-func Parsesources(sources []map[string]interface{}) (esinfos []*protomsg.Esinfo) {
+func Parsesources(sources []map[string]interface{}) (multiInfos []*protomsg.MultiFeaCache) {
 	var ok bool
 	for _, source := range sources {
+		var multiInfo protomsg.MultiFeaCache
 		var tmpinfo protomsg.Esinfo
-		tmpinfo.FaceFeature, ok = source["faceFeature"].(string)
-		if !ok {
-			continue
-		}
-
 		tmpinfo.Id, ok = source["id"].(string)
 		if !ok {
 			continue
 		}
-		tmpinfo.Tableid, ok = source["tableId"].(string)
+		if source["targetInfo"] != nil {
+			for _, v := range source["targetInfo"].([]interface{}) {
+				m := v.(map[string]interface{})
+				tmpinfo.FaceFeature, ok = m["feature"].(string)
+				if !ok {
+					continue
+				}
+				if m["attachTarget"] != nil {
+					multiInfo.AttachFeature, ok = m["attachTarget"].(map[string]interface{})["feature"].(string)
+				}
+				if m["targetLocation"] != nil {
+					targetLocation := m["targetLocation"].(map[string]interface{})
+					topLeft := targetLocation["topLeft"].(map[string]interface{})
+					tx := topLeft["x"].(float64)
+					ty := topLeft["y"].(float64)
+					bottomRight := targetLocation["bottomRight"].(map[string]interface{})
+					bx := bottomRight["x"].(float64)
+					by := bottomRight["y"].(float64)
+					multiInfo.TargetLocation = &protomsg.TargetLocation{
+						TopLeft: &protomsg.Location{
+							X: tx,
+							Y: ty,
+						},
+						BottomRight: &protomsg.Location{
+							X: bx,
+							Y: by,
+						},
+					}
+				}
+			}
+		}
+		tmpinfo.AnalyServerId, ok = source["analyServerId"].(string)
 		if !ok {
 			continue
 		}
-
-		esinfos = append(esinfos, &tmpinfo)
-
-		//        tmpinfo.PersonName,ok  =   source["personName"].(string)
-		//            //Isnil("personName", ok)
-		//        tmpinfo.PersonPicUrl,ok =  source["personPicUrl"].(string)
-		//            //Isnil("personPicUrl", ok)
-		//        tmpinfo.PhoneNum,ok     =  source["phoneNum"].(string)
-		//            //Isnil("phoneNum", ok)
-		//        tmpinfo.Sex,ok          =  source["sex"].(string)
-		//            //Isnil("sex", ok)
-		//        tmpinfo.Idcard,ok       =  source["idCard"].(string)
-		//            //Isnil("idCard", ok)
-		//        tmpinfo.MonitorLevel,ok =  source["monitorLevel"].(string)
-
-		// 鏍规嵁 tableid 鑾峰彇 tablename
-		//        name, _:= Dbtablename(tmpinfo.TableId)
-		//        tmpinfo.TableName= name
-		//        binfos.Infos = append(binfos.Infos, &tmpinfo)
-
+		multiInfo.EsInfo = &tmpinfo
+		multiInfo.CameraId, ok = source["cameraId"].(string)
+		//fmt.Println(source["cameraId"])
+		leis := make([]*protomsg.LinkEsInfo, 0)
+		if source["linkTagInfo"] != nil {
+			for _, v := range source["linkTagInfo"].([]interface{}) {
+				var lei protomsg.LinkEsInfo
+				mi := v.(map[string]interface{})
+				lei.CameraId, ok = mi["cameraId"].(string)
+				if mi["targetInfo"] != nil {
+					for _, val := range mi["targetInfo"].([]interface{}) {
+						fmi := val.(map[string]interface{})
+						lei.Feature, ok = fmi["feature"].(string)
+						if fmi["targetLocation"] != nil {
+							targetLocation := fmi["targetLocation"].(map[string]interface{})
+							topLeft := targetLocation["topLeft"].(map[string]interface{})
+							tx := topLeft["x"].(float64)
+							ty := topLeft["y"].(float64)
+							bottomRight := targetLocation["bottomRight"].(map[string]interface{})
+							bx := bottomRight["x"].(float64)
+							by := bottomRight["y"].(float64)
+							multiInfo.TargetLocation = &protomsg.TargetLocation{
+								TopLeft: &protomsg.Location{
+									X: tx,
+									Y: ty,
+								},
+								BottomRight: &protomsg.Location{
+									X: bx,
+									Y: by,
+								},
+							}
+						}
+						lei.AttachFeature, ok = fmi["attachTarget"].(map[string]interface{})["feature"].(string)
+					}
+				}
+				leis = append(leis, &lei)
+			}
+		}
+		multiInfo.LinkEsInfo = leis
+		multiInfos = append(multiInfos, &multiInfo)
 	}
 	return
 }
@@ -122,7 +169,12 @@
 		tmpinfo.TaskId, ok = source["taskId"].(string)
 		tmpinfo.TaskName, ok = source["taskName"].(string)
 		tmpinfo.SdkName, ok = source["sdkName"].(string)
-		tmpinfo.PicMaxUrl, ok = source["picMaxUrl"].(string)
+
+		if source["picMaxUrl"] != nil {
+			for _, v := range source["picMaxUrl"].([]interface{}) {
+				tmpinfo.PicMaxUrl = append(tmpinfo.PicMaxUrl, v.(string))
+			}
+		}
 		tmpinfo.VideoUrl, ok = source["videoUrl"].(string)
 		tmpinfo.PicDate, ok = source["picDate"].(string)
 		if source["targetInfo"] != nil {
@@ -130,6 +182,7 @@
 				m := v.(map[string]interface{})
 				var ti protomsg.TargetInfo
 				ti.TargetId, ok = m["targetId"].(string)
+				ti.TargetType, ok = m["targetType"].(string)
 				ti.TargetScore, ok = m["targetScore"].(float64)
 				ti.Feature, ok = m["feature"].(string)
 				ti.PicSmUrl, ok = m["picSmUrl"].(string)
@@ -166,7 +219,7 @@
 				bi.CompareScore, ok = m["compareScore"].(float64)
 				bi.BwType, ok = m["bwType"].(string)
 				bi.TargetId, ok = m["targetId"].(string)
-				bi.TableName, ok = m["tableName"].(string)
+				bi.TargetName, ok = m["targetName"].(string)
 				bi.TargetPicUrl, ok = m["targetPicUrl"].(string)
 				bi.MonitorLevel, ok = m["monitorLevel"].(string)
 				bi.Labels, ok = m["labels"].(string)
@@ -216,7 +269,11 @@
 				lti.TaskId, ok = lm["taskId"].(string)
 				lti.TaskName, ok = lm["taskName"].(string)
 				lti.SdkName, ok = lm["sdkName"].(string)
-				lti.PicMaxUrl, ok = lm["picMaxUrl"].(string)
+				if lm["picMaxUrl"] != nil {
+					for _, v := range lm["picMaxUrl"].([]interface{}) {
+						lti.PicMaxUrl = append(lti.PicMaxUrl, v.(string))
+					}
+				}
 				lti.VideoUrl, ok = lm["videoUrl"].(string)
 				lti.PicDate, ok = lm["picDate"].(string)
 				if lm["targetInfo"] != nil {
@@ -224,6 +281,7 @@
 						m := v.(map[string]interface{})
 						var ti protomsg.TargetInfo
 						ti.TargetId, ok = m["targetId"].(string)
+						ti.TargetType, ok = m["targetType"].(string)
 						ti.TargetScore, ok = m["targetScore"].(float64)
 						ti.Feature, ok = m["feature"].(string)
 						ti.PicSmUrl, ok = m["picSmUrl"].(string)
@@ -260,7 +318,7 @@
 						bi.CompareScore, ok = m["compareScore"].(float64)
 						bi.BwType, ok = m["bwType"].(string)
 						bi.TargetId, ok = m["targetId"].(string)
-						bi.TableName, ok = m["tableName"].(string)
+						bi.TargetName, ok = m["targetName"].(string)
 						bi.TargetPicUrl, ok = m["targetPicUrl"].(string)
 						bi.MonitorLevel, ok = m["monitorLevel"].(string)
 						bi.Labels, ok = m["labels"].(string)
@@ -484,9 +542,76 @@
 	return data, nil
 }
 
+func SourceCreated(buf []byte) (result bool, err error) {
+	var info interface{}
+	json.Unmarshal(buf, &info)
+	out, ok := info.(map[string]interface{})
+	if !ok {
+		return false, errors.New("http response interface can not change map[string]interface{}")
+	}
+
+	middle, ok := out["result"].(string)
+	if !ok {
+		return false, errors.New("first total change error!")
+	}
+	if middle == "created" || middle == "updated" {
+		result = true
+	}
+	return result, nil
+}
+
+func SourceDeleted(buf []byte) (total int, err error) {
+	var info interface{}
+	json.Unmarshal(buf, &info)
+	out, ok := info.(map[string]interface{})
+	if !ok {
+		return -1, errors.New("http response interface can not change map[string]interface{}")
+	}
+
+	middle, ok := out["deleted"].(float64)
+	if !ok {
+		return -1, errors.New("first total change error!")
+	}
+	total = int(middle)
+	return total, nil
+}
+
+func SourceUpdated(buf []byte) (total int, err error) {
+	var info interface{}
+	json.Unmarshal(buf, &info)
+	out, ok := info.(map[string]interface{})
+	if !ok {
+		return -1, errors.New("http response interface can not change map[string]interface{}")
+	}
+
+	middle, ok := out["updated"].(float64)
+	if !ok {
+		return -1, errors.New("first total change error!")
+	}
+	total = int(middle)
+	return total, nil
+}
+
+func SourceTotal(buf []byte) (total int, err error) {
+	var info interface{}
+	json.Unmarshal(buf, &info)
+	out, ok := info.(map[string]interface{})
+	if !ok {
+		return -1, errors.New("http response interface can not change map[string]interface{}")
+	}
+
+	middle, ok := out["hits"].(map[string]interface{})
+	if !ok {
+		return -1, errors.New("first total change error!")
+	}
+	tmp := middle["total"].(float64)
+	total = int(tmp)
+	return total, nil
+}
+
 func EsReq(method string, url string, parama []byte) (buf []byte, err error) {
 	//defer elapsed("page")()
-	timeout := time.Duration(10 * time.Second)
+	timeout := time.Duration(100 * time.Second)
 	client := http.Client{
 		Timeout: timeout,
 	}

--
Gitblit v1.8.0