From cc227efa2c3c0fc333bf0f3db2327df5c36f7c17 Mon Sep 17 00:00:00 2001 From: sunty <1172534965@qq.com> Date: 星期四, 07 十一月 2019 19:58:16 +0800 Subject: [PATCH] add route --- controllers/fileController.go | 107 ++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 81 insertions(+), 26 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index 8820970..2594c86 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,6 +50,7 @@ //var weedfsUri = "http://192.168.1.182:9500/submit" +// @Security ApiKeyAuth // @Summary 渚濇嵁鍥剧墖娣诲姞搴曞簱浜哄憳 // @Description 渚濇嵁鍥剧墖娣诲姞搴曞簱杩斿洖鏁版嵁浜哄憳 // @Accept mpfd @@ -109,6 +111,7 @@ } var faceExtractedMap = make(map[string]FaceExtract,0) +// @Security ApiKeyAuth // @Summary 浜鸿劯鎻愬彇 // @Description 浜鸿劯鎻愬彇 // @Produce json @@ -195,6 +198,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 +218,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 +298,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 +310,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 +344,7 @@ VideoUrl: vp.VideoUrl, BaseInfo: bi, SdkName: "浜鸿劯", + AlarmRules: alarmRules, } resultList[captureM[vp.Id].Index] = vpE } @@ -368,6 +395,7 @@ } } +// @Security ApiKeyAuth // @Summary 浠ュ浘鎼滃浘 // @Description 浠ュ浘鎼滃浘 // @Accept json @@ -525,6 +553,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 +588,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 +615,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 +666,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,6 +804,7 @@ /**涓婁紶鏂规硶**/ +// @Security ApiKeyAuth // @Summary 鎵归噺娣诲姞搴曞簱浜哄憳 // @Description 渚濇嵁鍥剧墖鎵归噺娣诲姞搴曞簱浜哄憳 // @Accept mpfd @@ -783,8 +827,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 +858,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 +876,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,6 +895,7 @@ IdCard string `json:"idCard"` } +// @Security ApiKeyAuth // @Summary 涓婁紶鍥剧墖 骞跺垏鍥� // @Description 涓婁紶鍥剧墖 骞跺垏鍥� // @Accept mpfd -- Gitblit v1.8.0