From fcdc5890e9a8204805f6347364c3eaa94dff948d Mon Sep 17 00:00:00 2001
From: liuxiaolong <liuxiaolong@aiotlink.com>
Date: 星期二, 16 六月 2020 18:50:40 +0800
Subject: [PATCH] done yuying

---
 esutil/EsClient.go |  191 ++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 168 insertions(+), 23 deletions(-)

diff --git a/esutil/EsClient.go b/esutil/EsClient.go
index fdf50d6..eb11b70 100644
--- a/esutil/EsClient.go
+++ b/esutil/EsClient.go
@@ -11,12 +11,11 @@
 	"strings"
 	"time"
 
-	log "github.com/long/test/log"
+	log "andriodServer/log"
 )
 
-func GetEsDataReq(url string, parama string, isSource bool) (error, map[string]interface{}) {
-	//log.Log.Infoln("es 鏌ヨ璇锋眰璺緞" + url) //  閰嶇疆淇℃伅 鑾峰彇
-	req, err := http.NewRequest("POST", url, strings.NewReader(parama))
+func GetEsDataReq(url string, param string, isSource bool) (error, map[string]interface{}) {
+	req, err := http.NewRequest("POST", url, strings.NewReader(param))
 
 	if err != nil {
 		return err, nil
@@ -57,22 +56,56 @@
 		data["total"] = dat["total"]
 		sources := []interface{}{}
 		for _, value := range dat["hits"].([]interface{}) {
+			d := make(map[string]interface{})
 			source, ok := value.(map[string]interface{})["_source"].(map[string]interface{})
 			if !ok {
 				return errors.New("value is not type of map[string]interface{}"), nil
 			}
 
-			source["id"] = value.(map[string]interface{})["_id"]
-			sdkType := source["sdkType"]
-			if sdkType != nil {
-				sdk, err := strconv.Atoi(sdkType.(string))
-				if err != nil {
-					return err, nil
+			d["id"] = value.(map[string]interface{})["_id"]
+
+			pmax, exist := source["picMaxUrl"]
+			if !exist {
+				continue
+			}
+			pmArr := pmax.([]string)
+			if len(pmArr) > 0 {
+				d["picMaxUrl"] = pmArr[0]
+			}
+
+			tB, err := json.Marshal(source["targetInfo"])
+			if err != nil {
+				continue
+			}
+
+			ti := TargetInfo{}
+			err = json.Unmarshal(tB, &ti)
+			if err !=nil {
+				continue
+			}
+
+			d["picSmUrl"] = ti.PicSmUrl
+			if ti.TargetType == "face" {
+				sLabelStr, ok := source["showLabels"]
+				if ok {
+					labelArr := strings.Split(sLabelStr.(string), "/")
+					if len(labelArr) == 3 {
+						d["gender"] = labelArr[0]
+						d["ageDescription"] = labelArr[1]
+						d["race"] = labelArr[2]
+					}
 				}
 
-				source["sdkType"] = sdkTypeToValue(sdk)
+				if bInfos,ok := source["baseInfo"]; ok && bInfos != nil {
+					d["baseInfo"] = getSourceBaseInfo(bInfos)
+				} else {
+					d["baseInfo"] = []interface{}{}
+				}
 			}
-			sources = append(sources, source)
+
+			d["videoNum"] = source["videoUrl"]
+
+			sources = append(sources, d)
 		}
 		data["datalist"] = sources
 		return nil, data
@@ -81,23 +114,135 @@
 	}
 }
 
-//sdk绫诲瀷
-func sdkTypeToValue(i int) string {
-	value := []string{"浜鸿劯", "杞﹁締", "浜轰綋", "鍏ヤ镜", "鎷ユ尋", "闈犲彸琛�", "浜哄憳寮傚父", "涓綋闈欐"}
-
-	return value[i-1]
+type TargetInfo struct {
+	TargetId 		string  		`json:"targetId"`
+	TargetType 		string 			`json:"targetType"`
+	PicSmUrl 		string 			`json:"picSmUrl"`
+	TargetScore 	float32 		`json:"targetScore"`
 }
 
-func PostAction(sec int, Eurl string) []byte {
-	index := "videopersons,personaction"
+type BaseInfo struct {
+	TaskId 			string 		`json:"taskId"`
+	TaskName 		string 		`json:"taskName"`
+	LikePer 		string 		`json:"likePer"`
+	TableId 		string 		`json:"tableId"`
+	TableName 		string 		`json:"tableName"`
+	PersonId 		string 		`json:"personId"`
+	PersonPicUrl 	string 		`json:"personPicUrl"`
+	PersonName 		string 		`json:"personName"`
+	Gender 			string 		`json:"gender"`
+	PhoneNum 		string 		`json:"phoneNum"`
+	IDCard 			string 		`json:"IDCard"`
+	MonitorLevel 	string 		`json:"monitorLevel"`
+	Content 		string 		`json:"content"`
+}
+
+type TI struct {
+	BwType       	string  	`json:"bwType"`
+	TargetPicUrl 	string 		`json:"targetPicUrl"`
+	TargetName 		string 		`json:"targetName"`
+	TargetId 		string 		`json:"targetId"`
+	TableId 		string 		`json:"tableId"`
+	CompareScore 	string 		`json:"compareScore"`
+	MonitorLevel 	string 		`json:"monitorLevel"`
+	Content 		string 		`json:"content"`
+	TableName 		string 		`json:"tableName"`
+	Labels 			string 		`json:"labels"`
+}
+
+func getSourceBaseInfo(bInfos interface{}) []BaseInfo {
+	baseInfoArr := make([]BaseInfo,0)
+
+	b, err := json.Marshal(bInfos)
+	if err == nil {
+		var targetArr []TI
+		if err = json.Unmarshal(b, &targetArr); err == nil && len(targetArr) >0 {
+			for _,t := range targetArr {
+				idCard,sex := "",""
+				if t.Labels != "" {
+					arr := strings.Split(t.Labels, "/")
+					if len(arr) > 0 {
+						for _,str := range arr {
+							if str == "鐢�" || str == "濂�" {
+								sex = str
+								break
+							}
+						}
+						for _,str := range arr {
+							if len(str) == 18 {
+								idCard = str
+								break
+							}
+						}
+					}
+				}
+				baseInfoArr = append(baseInfoArr, BaseInfo{
+					TaskId: "",//2.0鏂板瓧娈�
+					TaskName: "",//2.0鏂板瓧娈�
+					LikePer: t.CompareScore,
+					TableId: "",//2.0鏂板瓧娈�
+					TableName: t.TableName,
+					PersonId: t.TargetId,
+					PersonName: t.TargetName,//浜哄憳濮撳悕锛屼粠绠$悊骞冲彴鑾峰彇
+					PersonPicUrl: t.TargetPicUrl,
+					Gender: sex,
+					PhoneNum: "",//鎵嬫満鍙凤紝浠庣鐞嗗钩鍙拌幏鍙�
+					IDCard: idCard,
+					MonitorLevel: t.MonitorLevel,//2.0鏂板瓧娈�
+					Content: t.Content,
+				})
+			}
+		}
+	}
+
+	return baseInfoArr
+}
+
+func PostAction(sec int, Eurl string, ishub string, size int, lastT time.Time, curTime time.Time) []byte {
+	index := "ai_ocean"
 	url := fmt.Sprintf("%s%s%s", Eurl, index, "/_search")
 
-	seccond := strconv.Itoa(sec)
+	sizeStr :=""
+	if size <=0 {
+		sizeStr = "1000"
+	} else {
+		sizeStr = strconv.Itoa(size)
+	}
+	preSec := "10"
+	if sec <=0 {
+		preSec = "10"
+	} else {
+		preSec = strconv.Itoa(sec)
+	}
+	var filterArr []string
+	//鏄惁鏌ユ姤璀︽暟鎹�
+	if ishub == "hub" {
+		filterArr = append(filterArr,"{\"term\":{\"alarmRules.alarmLevel.raw\":\"涓�绾"}}")
+	}
 
-	prama := "{\"query\":{\"bool\":{\"filter\":[{\"term\":{\"personIsHub\":\"1\"}},{\"range\":{\"picDate\":{\"gte\":\"now+8h-" + seccond + "s\",\"lt\":\"now+8h\"}}}]}},\"size\":\"1000\",\"sort\":[{\"picDate\":{\"order\":\"desc\"}}]," +
-		"\"_source\":[\"baseInfo\",\"gender\",\"indeviceName\",\"sdkType\",\"ageDescription\",\"content\",\"ID\",\"picAddress\",\"picMaxUrl\",\"picDate\",\"race\",\"videoNum\",\"picSmUrl\",\"taskName\",\"personIsHub\",\"IDCard\",\"videoIp\",\"videoReqNum\"]" +
+	filterArr = append(filterArr, "{\"range\":{\"picDate\":{\"gte\":\"now+8h-"+preSec+"s\",\"lt\":\"now+8h\"}}}")
+
+	filterStr := ""
+	if len(filterArr) >0 {
+		filterStr = strings.Join(filterArr, ",")
+	}
+	sourceArr := []string{
+		"baseInfo",
+		"targetInfo",
+		"content",
+		"id",
+		"picMaxUrl",
+		"picDate",
+		"showLabels",
+		"taskName",
+	}
+	sourceStr := strings.Join(sourceArr, ",")
+	log.Log.Infoln("filterArr:", filterStr)
+	param := "{\"query\":{\"bool\":{\"filter\":["+filterStr+"]}},\"size\":\""+sizeStr+"\",\"sort\":[{\"picDate\":{\"order\":\"desc\"}}]," +
+		"\"_source\":{\"includes\":["+sourceStr+"],\"excludes\":[\"*.feature\",\"*.attachTarget\",\"*.targetLocation\",\"alarmRules\"]}" +
 		"}"
-	err, tokenRes := GetEsDataReq(url, prama, true)
+	err, tokenRes := GetEsDataReq(url, param, true)
+
 	if err != nil {
 		log.Log.Errorln(err)
 		return nil

--
Gitblit v1.8.0