From ec3cdd20b8221caa6093d0a44984ee3098504b52 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期三, 20 十一月 2019 10:40:02 +0800
Subject: [PATCH] update protomsg and use aiocean index

---
 controllers/fileController.go |  109 +++++++++++++++++----------
 go.sum                        |    8 +-
 models/dbtablepersons.go      |    2 
 go.mod                        |    4 
 controllers/dbtableperson.go  |   63 ++-------------
 5 files changed, 83 insertions(+), 103 deletions(-)

diff --git a/controllers/dbtableperson.go b/controllers/dbtableperson.go
index 06ab88b..dbc6149 100644
--- a/controllers/dbtableperson.go
+++ b/controllers/dbtableperson.go
@@ -4,13 +4,12 @@
 	"basic.com/dbapi.git"
 	"basic.com/fileServer/WeedFSClient.git"
 	"basic.com/pubsub/protomsg.git"
+	"basic.com/valib/logger.git"
 	"encoding/base64"
-	"encoding/json"
 	"io/ioutil"
 	"sort"
 	"strconv"
 	"time"
-	"basic.com/valib/logger.git"
 	"webserver/cache"
 	"webserver/service"
 
@@ -18,7 +17,6 @@
 	"github.com/satori/go.uuid"
 	"webserver/extend/code"
 	"webserver/extend/config"
-	"webserver/extend/esutil"
 	"webserver/extend/util"
 	"webserver/models"
 
@@ -197,7 +195,7 @@
 	for idx,v :=range compResult.CompareResult{
 		dbPersonM[v.Id] = ScoreIndex{
 			Index: idx,
-			CompareScore: v.CompareScore,
+			CompareScore: float64(v.CompareScore),
 		}
 		personIds = append(personIds,v.Id)
 	}
@@ -230,7 +228,7 @@
 			dbP.CreateTime = p.CreateTime
 			dbP.UpdateTime = p.UpdateTime
 			dbP.CreateBy = p.CreateBy
-			dbP.CompareScore = util.ParseScore(dbPersonM[p.Id].CompareScore)
+			dbP.CompareScore = dbPersonM[p.Id].CompareScore
 			//dbTableInfos, _ := dtApi.DbtablesById([]string{ p.TableId })
 			//if dbTableInfos !=nil{
 			//	dbP.BwType = dbTableInfos[0].BwType
@@ -323,51 +321,6 @@
 	//} else {
 	//	util.ResponseFormat(c,code.UpdateFail,"鏇存柊浜鸿劯澶辫触")
 	//}
-}
-
-func UpdateDbPersonsOfDbTable(id string) (message string) {
-	localConf, err2 := cache.GetServerInfo()
-	if err2 !=nil || localConf.AlarmIp == "" || localConf.ServerId == "" {
-		logger.Debug("localConfig is wrong!!!")
-		return "淇敼澶辫触"
-	}
-	url := "http://" + localConf.AlarmIp + ":" + strconv.Itoa(int(localConf.AlarmPort)) +
-		"/" + config.EsInfo.EsIndex.Dbtablepersons.IndexName + "/_update_by_query?refresh"
-	jsonDSL := `
-			{
-	"script": {
-		"lang": "painless",
-		"inline": "ctx._source.enable = 0"
-	},
-	"query": {
-		"term": {
-			"tableId": "` + id + `"
-		}
-	}
-}
-`
-	buf, err := esutil.EsReq("POST", url, []byte(jsonDSL))
-	if err != nil {
-		logger.Debug("http request info is err!")
-		message = "淇敼澶辫触"
-	}
-	var info interface{}
-	json.Unmarshal(buf, &info)
-	out, ok := info.(map[string]interface{})
-	if !ok {
-		logger.Debug("http response interface can not change map[string]interface{}")
-		message = "淇敼澶辫触"
-	}
-	middle, ok := out["updated"].(float64)
-	if !ok {
-		logger.Debug("first result change error!")
-		message = "淇敼澶辫触"
-	}
-	if middle >= 0 {
-		logger.Debug("淇敼鎴愬姛")
-		message = "淇敼鎴愬姛,鏇存柊鐘舵�佹潯鏁颁负" + strconv.Itoa(int(middle))
-	}
-	return message
 }
 
 // @Security ApiKeyAuth
@@ -520,14 +473,14 @@
 		util.ResponseFormat(c,code.ComError,"鎶ヨ璁剧疆鏈夎")
 		return
 	}
-	videopersons, e := esApi.Videopersonsinfosbyid([]string{reqBody.CaptureId}, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
-	if e ==nil && videopersons !=nil && len(videopersons) == 1{
+	aiOceans, e := esApi.AIOceaninfosbyid([]string{reqBody.CaptureId}, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
+	if e ==nil && aiOceans !=nil && len(aiOceans) == 1{
 		var personPicUrl = ""//浜鸿劯鍥剧墖
 		var feature = ""//鐗瑰緛
-		if videopersons[0].PicSmUrl !=nil && len(videopersons[0].PicSmUrl) >0 {
-			personPicUrl = videopersons[0].PicSmUrl[0]
+		if aiOceans[0].TargetInfo !=nil && len(aiOceans[0].TargetInfo) >0 {
+			personPicUrl = aiOceans[0].TargetInfo[0].PicSmUrl
 		}
-		fea, e2 := esApi.GetVideoPersonFaceFeatureById(reqBody.CaptureId, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
+		fea, e2 := esApi.GetVideoPersonFaceFeatureById(reqBody.CaptureId, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
 		if e2 == nil && fea !="" {
 			feature = fea
 		}
diff --git a/controllers/fileController.go b/controllers/fileController.go
index dc54ec3..d66b079 100644
--- a/controllers/fileController.go
+++ b/controllers/fileController.go
@@ -183,17 +183,16 @@
 
 type CompareResult struct {
 	Id string `json:"id"`
-	CompareScore float32 `json:"compareScore"`
+	CompareScore float64 `json:"compareScore"`
 	CameraId string `json:"cameraId"`
+	CameraName string `json:"cameraName"`
 	CameraAddr string `json:"cameraAddr"`
 	PicDate string `json:"picDate"`
 	Content string `json:"content"`
-	IsAlarm int `json:"isAlarm"`
+	IsAlarm bool `json:"isAlarm"`
 	PicMaxUrl string `json:"picMaxUrl"`
 	PicSmUrl []string `json:"picSmUrl"`
-	Sex string `json:"sex"`
-	AgeDescription string `json:"ageDescription"`
-	Race string `json:"race"`
+	TargetInfo []TargetInfo `json:"targetInfo"`
 	TaskId string `json:"taskId"`
 	TaskName string `json:"taskName"`
 	BaseInfo []DbPersonVo `json:"baseInfo"`
@@ -201,23 +200,35 @@
 	SdkName string `json:"sdkName"`
 	AlarmRules []AlarmRuleVo `json:"alarmRules"`
 }
+
+type TargetInfo struct {
+	TargetId       string `json:"targetId"`
+	TargetScore    float64 `json:"targetScore"`
+	Feature        string `json:"feature"`
+	PicSmUrl       string `json:"picSmUrl"`
+	TargetLocation TargetLocation `json:"targetLocation"`
+}
+
+type TargetLocation struct {
+	TopLeft     protomsg.Location `json:"topLeft"`
+	BottomRight protomsg.Location `json:"bottomRight"`
+}
+
 type DbPersonVo struct {
 	BwType string `json:"bwType"`
-	CompareScore float32 `json:"compareScore"`
-	IdCard string `json:"idCard"`
+	CompareScore float64 `json:"compareScore"`
 	MonitorLevel string `json:"monitorLevel"`
-	PersonId string `json:"personId"`
-	PersonName string `json:"personName"`
-	PersonPicUrl string `json:"personPicUrl"`
-	PhoneNum string `json:"phoneNum"`
-	Sex string `json:"sex"`
+	TargetId string `json:"targetId"`
+	TargetName string `json:"targetName"`
+	TargetPicUrl string `json:"targetPicUrl"`
+	Labels string `json:"labels"`
 	TableId string `json:"tableId"`
 	TableName string `json:"tableName"`
 	Enable int32 `json:"enable"`
 }
 
 type ScoreIndex struct {
-	CompareScore float32
+	CompareScore float64
 	Index int
 }
 
@@ -242,13 +253,13 @@
 		if v.Tableid == service.CaptureTable {
 			captureM[v.Id] = ScoreIndex{
 				Index: idx,
-				CompareScore: v.CompareScore,
+				CompareScore: float64(v.CompareScore),
 			}
 			captureIds = append(captureIds,v.Id)
 		} else {
 			dbPersonM[v.Id] = ScoreIndex{
 				Index: idx,
-				CompareScore: v.CompareScore,
+				CompareScore: float64(v.CompareScore),
 			}
 			personIds = append(personIds,v.Id)
 		}
@@ -266,14 +277,12 @@
 		var dtApi dbapi.DbTableApi
 		for _,p :=range dbpersons {
 			var dbP = DbPersonVo {
-				PersonId: p.Id,
-				IdCard: p.IdCard,
-				CompareScore: util.ParseScore(dbPersonM[p.Id].CompareScore),
+				TargetId: p.Id,
+				CompareScore: dbPersonM[p.Id].CompareScore,
 				MonitorLevel: p.MonitorLevel,
-				PersonName: p.PersonName,
-				PersonPicUrl: p.PersonPicUrl,
-				PhoneNum: p.PhoneNum,
-				Sex: p.Sex,
+				TargetName: p.PersonName,
+				TargetPicUrl: p.PersonPicUrl,
+				Labels: p.Sex+" / "+p.IdCard+" / "+p.IdCard,
 				TableId: p.TableId,
 				Enable: p.Enable,
 			}
@@ -295,21 +304,18 @@
 			return nil
 		}
 		logger.Debug("captureIds:",strings.Join(captureIds,","))
-		videopersons, _ := esApi.Videopersonsinfosbyid(captureIds, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
-		logger.Debug("comp videoPersons.len:",len(videopersons))
-		for _,vp :=range videopersons {
-			isAlarmInt, _ := strconv.Atoi(vp.IsAlarm)
+		aiTargets, _ := esApi.AIOceaninfosbyid(captureIds, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
+		logger.Debug("comp aiTargets.len:",len(aiTargets))
+		for _,vp :=range aiTargets {
 			var bi []DbPersonVo
 			for _,p :=range vp.BaseInfo {
 				bi = append(bi, DbPersonVo{
-					PersonId: p.PersonId,
-					IdCard: p.IdCard,
-					CompareScore: util.ParseScore(p.CompareScore),
+					TargetId: p.TargetId,
+					CompareScore: float64(p.CompareScore),
 					MonitorLevel: parseMonitorLevel(p.MonitorLevel),
-					PersonName: p.PersonName,
-					PersonPicUrl: p.PersonPicUrl,
-					PhoneNum: p.PhoneNum,
-					Sex: p.Sex,
+					TargetName: p.TargetName,
+					TargetPicUrl: p.TargetPicUrl,
+					Labels: p.Labels,
 					TableId: p.TableId,
 					BwType: p.BwType,
 					TableName: p.TableName,
@@ -328,18 +334,39 @@
 					})
 				}
 			}
+			var ti = make([]TargetInfo,0)
+			if vp.TargetInfo !=nil {
+				for _,vti :=range ti {
+					tl := protomsg.Location{
+						X: vti.TargetLocation.TopLeft.X,
+						Y: vti.TargetLocation.TopLeft.Y,
+					}
+					br := protomsg.Location{
+						X: vti.TargetLocation.BottomRight.X,
+						Y: vti.TargetLocation.BottomRight.Y,
+					}
+					tInfo := TargetInfo{
+						TargetId: vti.TargetId,
+						TargetScore: vti.TargetScore,
+						Feature: vti.Feature,
+						PicSmUrl: vti.PicSmUrl,
+						TargetLocation: TargetLocation{
+							TopLeft:tl,
+							BottomRight:br,
+						},
+					}
+					ti = append(ti, tInfo)
+				}
+			}
 			vpE := CompareResult{
 				Id: vp.Id,
-				CompareScore: util.ParseScore(captureM[vp.Id].CompareScore),
+				CompareScore: captureM[vp.Id].CompareScore,
 				CameraId: vp.CameraId,
 				CameraAddr: vp.CameraAddr,
 				PicDate: vp.PicDate,
 				PicMaxUrl: vp.PicMaxUrl,
-				PicSmUrl: vp.PicSmUrl,
-				IsAlarm: isAlarmInt,
-				Sex: vp.Sex,
-				AgeDescription: vp.AgeDescription,
-				Race: vp.Race,
+				TargetInfo: ti,
+				IsAlarm: vp.IsAlarm,
 				TaskName: vp.TaskName,
 				TaskId: vp.TaskId,
 				VideoUrl: vp.VideoUrl,
@@ -443,7 +470,7 @@
 				return
 			}
 		} else {
-			searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CompTargetId, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
+			searchBase64Fea, err := esApi.GetVideoPersonFaceFeatureById(searchBody.CompTargetId, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
 			if err !=nil {
 				util.ResponseFormat(c, code.ComError, "鎶撴媿鏁版嵁涓嶅瓨鍦紝璇锋鏌�")
 				return
@@ -590,7 +617,7 @@
 			arg.Collection = searchBody.Collection
 			arg.AnalyServerId = localConf.ServerId
 			alarmLevelTypes := strings.Replace(strings.Trim(fmt.Sprint(getAlarmLevel(searchBody.AlarmLevel)), "[]"), " ", "\",\"", -1)
-			captureIds := esApi.GetAllLocalVideopersonsId(arg, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), alarmLevelTypes)
+			captureIds := esApi.GetAllLocalVideopersonsId(arg, config.EsInfo.EsIndex.AiOcean.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)), alarmLevelTypes)
 			logger.Debug("searchPhoto first Result.len:",len(*co.CompareData),"twice len(captureIds):",len(captureIds))
 			if captureIds !=nil {
 				var aResult protomsg.SdkCompareResult
diff --git a/go.mod b/go.mod
index dc01e2f..857c505 100644
--- a/go.mod
+++ b/go.mod
@@ -7,8 +7,8 @@
 	basic.com/fileServer/WeedFSClient.git v0.0.0-20190919054037-0182b6c3f5cb // indirect
 	basic.com/gb28181api.git v0.0.0-20191028082253-472438a8407b // indirect
 	basic.com/pubsub/cache.git v0.0.0-20190718093725-6a413e1d7d48 // indirect
-	basic.com/pubsub/esutil.git v0.0.0-20191031110806-0712822ce390 // indirect
-	basic.com/pubsub/protomsg.git v0.0.0-20191031110456-1a84b09fbcd1 // indirect
+	basic.com/pubsub/esutil.git v0.0.0-20191119123930-df4e05af6aee // indirect
+	basic.com/pubsub/protomsg.git v0.0.0-20191120023735-365e964f300d // indirect
 	basic.com/valib/capture.git v0.0.0-20190924061718-7e98d8c98b3c // indirect
 	basic.com/valib/deliver.git v0.0.0-20190531095353-25d8c3b20051
 	basic.com/valib/goffmpeg.git v0.0.0-20191024085028-080acae08ec8 // indirect
diff --git a/go.sum b/go.sum
index a124cd1..5d0c8ed 100644
--- a/go.sum
+++ b/go.sum
@@ -6,10 +6,10 @@
 basic.com/gb28181api.git v0.0.0-20191028082253-472438a8407b/go.mod h1:iKnzuRRqUEgt17894pX3oYcOG2fLYFVcXiZbPoMK7+4=
 basic.com/pubsub/cache.git v0.0.0-20190718093725-6a413e1d7d48 h1:BBA30Rgljn6MRieC4gUncETJDyna3ObyubTo9HEQ2M0=
 basic.com/pubsub/cache.git v0.0.0-20190718093725-6a413e1d7d48/go.mod h1:gHLJZz2ee1cGL0X0ae69fs56bAxkDgEQwDhhXZJNUcY=
-basic.com/pubsub/esutil.git v0.0.0-20191031110806-0712822ce390 h1:uM/D7VJ41pg1XXpoe73QqCCnQTE08VhXQ2JAAOnN6ao=
-basic.com/pubsub/esutil.git v0.0.0-20191031110806-0712822ce390/go.mod h1:yIvppFPFGC61DOdm71ujnsxZBMFUu2yKjr5O43bMWCw=
-basic.com/pubsub/protomsg.git v0.0.0-20191031110456-1a84b09fbcd1 h1:w/hlV2znPkwQxusqH8IIeg8+O3DPkCbRhsVKi6GdckU=
-basic.com/pubsub/protomsg.git v0.0.0-20191031110456-1a84b09fbcd1/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU=
+basic.com/pubsub/esutil.git v0.0.0-20191119123930-df4e05af6aee h1:QJQ2Hvu310iz39WZEkFiJ1SUg8XXZZ2b4goncos++0s=
+basic.com/pubsub/esutil.git v0.0.0-20191119123930-df4e05af6aee/go.mod h1:yIvppFPFGC61DOdm71ujnsxZBMFUu2yKjr5O43bMWCw=
+basic.com/pubsub/protomsg.git v0.0.0-20191120023735-365e964f300d h1:p4HNkf4NYFiAmeOprQYwn6ZIVE60/P2gueelasBUgVQ=
+basic.com/pubsub/protomsg.git v0.0.0-20191120023735-365e964f300d/go.mod h1:un5NV5VWQoblVLZfx1Rt5vyLgwR0jI92d3VJhfrJhWU=
 basic.com/valib/capture.git v0.0.0-20190924061718-7e98d8c98b3c h1:aNujtcGxq0cNLSK08cCamAiUYiQ2/ZsUMNXbX2w8Clc=
 basic.com/valib/capture.git v0.0.0-20190924061718-7e98d8c98b3c/go.mod h1:y+h7VUnoSQ3jOtf2K3twXNA8fYDfyUsifSswcyKLgNw=
 basic.com/valib/deliver.git v0.0.0-20190531095353-25d8c3b20051/go.mod h1:bkYiTUGzckyNOjAgn9rB/DOjFzwoSHJlruuWQ6hu6IY=
diff --git a/models/dbtablepersons.go b/models/dbtablepersons.go
index f9fc728..4c45c5f 100644
--- a/models/dbtablepersons.go
+++ b/models/dbtablepersons.go
@@ -19,5 +19,5 @@
 
 type DbPersonsCompVo struct {
 	Dbtablepersons
-	CompareScore float32 `json:"compareScore"`
+	CompareScore float64 `json:"compareScore"`
 }

--
Gitblit v1.8.0