From 74f675b955abcdadaa556c87fe3ec834c487271b Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 14 十一月 2019 15:59:02 +0800
Subject: [PATCH] fix ret
---
controllers/fileController.go | 114 ++++++++++++++++++++++++++++++++++++++++++--------------
1 files changed, 85 insertions(+), 29 deletions(-)
diff --git a/controllers/fileController.go b/controllers/fileController.go
index 8820970..dc54ec3 100644
--- a/controllers/fileController.go
+++ b/controllers/fileController.go
@@ -6,6 +6,7 @@
"basic.com/pubsub/protomsg.git"
"bytes"
"encoding/base64"
+ "encoding/json"
"errors"
"fmt"
"github.com/gin-gonic/gin"
@@ -49,9 +50,10 @@
//var weedfsUri = "http://192.168.1.182:9500/submit"
+// @Security ApiKeyAuth
// @Summary 渚濇嵁鍥剧墖娣诲姞搴曞簱浜哄憳
// @Description 渚濇嵁鍥剧墖娣诲姞搴曞簱杩斿洖鏁版嵁浜哄憳
-// @Accept mpfd
+// @Accept multipart/form-data
// @Produce json
// @Tags dbperson 搴曞簱浜哄憳
// @Param file formData file true "搴曞簱浜哄憳鍥剧墖"
@@ -109,8 +111,10 @@
}
var faceExtractedMap = make(map[string]FaceExtract,0)
+// @Security ApiKeyAuth
// @Summary 浜鸿劯鎻愬彇
// @Description 浜鸿劯鎻愬彇
+// @Accept multipart/form-data
// @Produce json
// @Tags 浠ュ浘鎼滃浘
// @Param file formData file true "浜哄憳鍥剧墖"
@@ -195,6 +199,7 @@
BaseInfo []DbPersonVo `json:"baseInfo"`
VideoUrl string `json:"videoUrl"`
SdkName string `json:"sdkName"`
+ AlarmRules []AlarmRuleVo `json:"alarmRules"`
}
type DbPersonVo struct {
BwType string `json:"bwType"`
@@ -214,6 +219,15 @@
type ScoreIndex struct {
CompareScore float32
Index int
+}
+
+type AlarmRuleVo struct {
+ GroupId string `json:"groupId"`
+ AlarmLevel string `json:"alarmLevel"`
+ RuleText string `json:"ruleText"`
+ DefenceState bool `json:"defenceState"`
+ IsLink bool `json:"isLink"`
+ LinkInfo string `json:"linkInfo"`
}
//濉厖鍚戝墠绔繑鍥炵殑鏁版嵁
@@ -285,7 +299,7 @@
logger.Debug("comp videoPersons.len:",len(videopersons))
for _,vp :=range videopersons {
isAlarmInt, _ := strconv.Atoi(vp.IsAlarm)
- bi := make([]DbPersonVo,0)
+ var bi []DbPersonVo
for _,p :=range vp.BaseInfo {
bi = append(bi, DbPersonVo{
PersonId: p.PersonId,
@@ -297,9 +311,22 @@
PhoneNum: p.PhoneNum,
Sex: p.Sex,
TableId: p.TableId,
- BwType: strconv.Itoa(int(p.BwType)),
+ BwType: p.BwType,
TableName: p.TableName,
})
+ }
+ var alarmRules []AlarmRuleVo
+ if vp.AlarmRules !=nil && len(vp.AlarmRules) >0 {
+ for _,ar :=range vp.AlarmRules {
+ alarmRules = append(alarmRules, AlarmRuleVo{
+ GroupId: ar.GroupId,
+ AlarmLevel: ar.AlarmLevel,
+ RuleText: ar.RuleText,
+ DefenceState: ar.DefenceState,
+ IsLink: ar.IsLink,
+ LinkInfo: ar.LinkInfo,
+ })
+ }
}
vpE := CompareResult{
Id: vp.Id,
@@ -318,6 +345,7 @@
VideoUrl: vp.VideoUrl,
BaseInfo: bi,
SdkName: "浜鸿劯",
+ AlarmRules: alarmRules,
}
resultList[captureM[vp.Id].Index] = vpE
}
@@ -368,6 +396,7 @@
}
}
+// @Security ApiKeyAuth
// @Summary 浠ュ浘鎼滃浘
// @Description 浠ュ浘鎼滃浘
// @Accept json
@@ -525,6 +554,10 @@
util.ResponseFormat(c,code.Success,m)
}
+type PersonId struct {
+ Id string `json:"id"`
+}
+
func GetCompareDataTwice(co *service.CompareOnce,searchBody *models.EsSearch) map[string]interface{} {
m := make(map[string]interface{},0)
@@ -556,11 +589,12 @@
arg.InputValue = searchBody.InputValue
arg.Collection = searchBody.Collection
arg.AnalyServerId = localConf.ServerId
- captureIds := esApi.GetAllLocalVideopersonsId(arg, config.EsInfo.EsIndex.VideoPersons.IndexName, localConf.AlarmIp, strconv.Itoa(int(localConf.AlarmPort)))
+ 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)
logger.Debug("searchPhoto first Result.len:",len(*co.CompareData),"twice len(captureIds):",len(captureIds))
if captureIds !=nil {
var aResult protomsg.SdkCompareResult
- aList := getTwiceSearchResult(co, &captureIds)
+ aList := getTwiceSearchResult(co, &captureIds, searchBody)
aTotal := aList.Len()
if aTotal <= to {
aResult.CompareResult = (*aList)[from:aTotal]
@@ -582,21 +616,31 @@
} else {//搴曞簱鏁版嵁鐨勪簩娆℃绱�
var dbpApi dbapi.DbPersonApi
personIds, _ := dbpApi.FindLikePersonIds(searchBody.DataBases, searchBody.InputValue)
- logger.Debug("searchPhoto first Result.len:",len(*co.CompareData),"twice len(personIds):",len(personIds))
- if personIds !=nil && len(personIds)>0 {
- var aResult protomsg.SdkCompareResult
- aList := getTwiceSearchResult(co, &personIds)
- aTotal := aList.Len()
- if aTotal <= to {
- aResult.CompareResult = (*aList)[from:aTotal]
- } else {
- aResult.CompareResult = (*aList)[from:to]
+ logger.Debug("searchPhoto first Result.len:",len(*co.CompareData),"personIds:",personIds)
+ if personIds !=nil {
+ var pIds []PersonId
+ b, _ := json.Marshal(personIds)
+ json.Unmarshal(b, &pIds)
+ if len(pIds) >0 {
+ var personIdArr []string
+ for _,pid :=range pIds{
+ personIdArr = append(personIdArr, pid.Id)
+ }
+ var aResult protomsg.SdkCompareResult
+ aList := getTwiceSearchResult(co, &personIdArr, searchBody)
+ aTotal := aList.Len()
+ if aTotal <= to {
+ aResult.CompareResult = (*aList)[from:aTotal]
+ } else {
+ aResult.CompareResult = (*aList)[from:to]
+ }
+ out := FillDataToCompareResult(&aResult)
+ m["total"] = aTotal
+ m["compareNum"] = searchBody.CompareNum
+ m["totalList"] = out
+ return m
}
- out := FillDataToCompareResult(&aResult)
- m["total"] = aTotal
- m["compareNum"] = searchBody.CompareNum
- m["totalList"] = out
- return m
+
} else {
m["total"] = 0
m["compareNum"] = searchBody.CompareNum
@@ -623,14 +667,14 @@
return m
}
-func getTwiceSearchResult(co *service.CompareOnce, scopeIds *[]string) *service.CompareList{
+func getTwiceSearchResult(co *service.CompareOnce, scopeIds *[]string, searchBody *models.EsSearch) *service.CompareList{
m := make(map[string]string)
for _,capId :=range *scopeIds {
m[capId] = capId
}
var totalData service.CompareList
for _,each :=range *co.CompareData {
- if _,ok :=m[each.Id];ok{
+ if _,ok :=m[each.Id];ok && each.CompareScore >= searchBody.Threshold {
totalData = append(totalData, each)
}
}
@@ -761,9 +805,10 @@
/**涓婁紶鏂规硶**/
+// @Security ApiKeyAuth
// @Summary 鎵归噺娣诲姞搴曞簱浜哄憳
// @Description 渚濇嵁鍥剧墖鎵归噺娣诲姞搴曞簱浜哄憳
-// @Accept mpfd
+// @Accept multipart/form-data
// @Produce json
// @Tags dbperson 搴曞簱浜哄憳
// @Param files formData file[] true "澶氫釜搴曞簱浜哄憳鍥剧墖"
@@ -783,8 +828,10 @@
}
extNames := make([]string, 0)
addResult := make(map[string]interface{}, 0)
- successList := make([]string, 0)
+ successList := make([]string,0)
failList := make([]string,0)
+ noFaceList := make([]string,0)
+ multiFaceList := make([]string,0)
tAllStart := time.Now()
var wg sync.WaitGroup
var lock sync.Mutex
@@ -812,7 +859,13 @@
field, _, err1 := uploadFileReturnAddr(file, filename, tableId)
lock.Lock()
if err1 != nil || field == "" {
- failList = append(failList, filename)
+ if err1 !=nil && err1.Error() == "NotFeatureFindError" {
+ noFaceList = append(noFaceList, filename)
+ } else if err1 !=nil && err1.Error() == "TooManyFaces" {
+ multiFaceList = append(multiFaceList, filename)
+ } else {
+ failList = append(failList, filename)
+ }
} else {
successList = append(successList, filename)
}
@@ -824,13 +877,15 @@
logger.Debug("鍒�",len(fileHeaders),"寮犱汉鑴哥敤鏃讹細", time.Since(tAllStart))
addResult["successList"] = successList
addResult["failList"] = failList
+ addResult["noFaceList"] = noFaceList
+ addResult["multiFaceList"] = multiFaceList
addResult["fields"] = extNames
- //if len(successList)>0 {
+ if len(successList)>0 {
util.ResponseFormat(c, code.DbPersonUploadSuccess, addResult)
- //} else {
- // util.ResponseFormat(c, code.DbPersonUploadFail, addResult)
- //}
+ } else {
+ util.ResponseFormat(c, code.DbPersonUploadFail, addResult)
+ }
}
type EsPersonSave struct {
@@ -841,9 +896,10 @@
IdCard string `json:"idCard"`
}
+// @Security ApiKeyAuth
// @Summary 涓婁紶鍥剧墖 骞跺垏鍥�
// @Description 涓婁紶鍥剧墖 骞跺垏鍥�
-// @Accept mpfd
+// @Accept multipart/form-data
// @Produce json
// @Tags dbperson 搴曞簱浜哄憳
// @Param file formData file true "搴曞簱浜哄憳鍥剧墖"
--
Gitblit v1.8.0