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