From faf0c4936c36695bac0c7e37a1b7f383c6e0984a Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期五, 26 七月 2019 19:37:26 +0800 Subject: [PATCH] fix bug --- controllers/fileController.go | 119 +++++++++++++++++++++++++++++++++++++++++++++-------------- 1 files changed, 91 insertions(+), 28 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index 8bb9a36..025393e 100644 --- a/controllers/fileController.go +++ b/controllers/fileController.go @@ -1,6 +1,7 @@ package controllers import ( + "basic.com/dbapi.git" "basic.com/pubsub/protomsg.git" "basic.com/fileServer/WeedFSClient.git" "basic.com/valib/deliver.git" @@ -158,10 +159,11 @@ Content string `json:"content"` IsAlarm int `json:"isAlarm"` PicMaxUrl string `json:"picMaxUrl"` - PicSmUrl []string `json:"picSmUrl"` + PicSmUrl string `json:"picSmUrl"` Sex string `json:"sex"` AgeDescription string `json:"ageDescription"` Race string `json:"race"` + TaskId string `json:"taskId"` TaskName string `json:"taskName"` BaseInfo []DbPersonVo `json:"baseInfo"` VideoUrl string `json:"videoUrl"` @@ -181,44 +183,62 @@ } var captureTable = "capturetable" // 鎶撴媿搴� -type SearchCondition struct { - PicUrl string `json:"picUrl"` - Databases []string `json:"databases"` - Threshold string `json:"threshold"` -} // @Summary 浠ュ浘鎼滃浘 // @Description 浠ュ浘鎼滃浘 // @Accept json // @Produce json // @Tags 浠ュ浘鎼滃浘 -// @Param condition body controllers.SearchCondition true "鎼滅储鍙傛暟" +// @Param condition body models.EsSearch true "鎼滅储鍙傛暟" // @Success 200 {string} json "{"code":200, msg:"", data:"", success:true}" // @Failure 500 {string} json "{"code":500, msg:"", data:"", success:false}" // @Router /data/api-v/dbperson/searchByPhoto [POST] func (controller FileController) SearchByPhoto(c *gin.Context) { - var condition SearchCondition - err := c.BindJSON(&condition) - if err !=nil || condition.PicUrl == "" { + var searchBody models.EsSearch + err := c.BindJSON(&searchBody) + if err !=nil || searchBody.PicUrl == "" || len(searchBody.DataBases) == 0 { util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } - compThreshold, err := strconv.ParseFloat(condition.Threshold,32) - if condition.PicUrl == "" || err != nil { - util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") + var sysSetApi dbapi.SysSetApi + analyServerId := "" + flag, sysconf := sysSetApi.GetServerInfo() + if flag { + analyServerId = sysconf.ServerId + } else { + util.ResponseFormat(c, code.ComError, "analyServerId涓虹┖锛岄厤缃湁璇�") return } - if face,ok := faceExtractedMap[condition.PicUrl];!ok{ - util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") + if face,ok := faceExtractedMap[searchBody.PicUrl];!ok{ + util.ResponseFormat(c, code.RequestParamError, "璇烽噸鏂颁笂浼犲浘鐗�") return } else { arg := protomsg.CompareArgs{ - TableIds:[]string{ captureTable }, - FaceFeature:face.FaceBytes, - CompareThreshold:float32(compThreshold), + FaceFeature: face.FaceBytes, + CompareThreshold: searchBody.Threshold, } - if condition.Databases !=nil { - arg.TableIds = append(arg.TableIds, condition.Databases...) + + if searchBody.DataBases !=nil { + for idx,tableId :=range searchBody.DataBases { + if tableId == "esData" { + searchBody.DataBases = append(searchBody.DataBases[:idx], searchBody.DataBases[idx+1:]...) + searchBody.DataBases = append(searchBody.DataBases,captureTable) + break + } + } + arg.TableIds = searchBody.DataBases } + arg.Source = true // 鏍囪瘑鏉ユ簮鏄痺eb + arg.AlarmLevel = searchBody.AlarmLevel + arg.Tasks = searchBody.Tasks + arg.TreeNodes = searchBody.TreeNodes + arg.Tabs = searchBody.Tabs + arg.SearchTime = searchBody.SearchTime + arg.InputValue = searchBody.InputValue + arg.Collection = searchBody.Collection + arg.AnalyServerId = analyServerId + + logger.Debug("arg.TableIds:", arg.TableIds, ",alarmLevel:",arg.AlarmLevel,",treeNodes:",arg.TreeNodes,",searchTime:",arg.SearchTime, + ",inputValue:",arg.InputValue,",tasks:",arg.Tasks,",compThreshold:",arg.CompareThreshold) b, err := proto.Marshal(&arg) if err !=nil{ util.ResponseFormat(c, code.ComError, "璇锋眰marshal澶辫触") @@ -255,10 +275,10 @@ for _,v :=range rList{ if v.Tableid == captureTable { captureM[v.Id] = &v - personIds = append(personIds,v.Id) + captureIds = append(captureIds,v.Id) } else { dbPersonM[v.Id] = &v - captureIds = append(captureIds,v.Id) + personIds = append(personIds,v.Id) } } logger.Debug("personIds:", personIds) @@ -266,17 +286,18 @@ esServerIp := config.EsInfo.Masterip esServerPort := config.EsInfo.Httpport index := config.EsInfo.EsIndex.Dbtablepersons.IndexName - dbpersons, e := esApi.Dbpersoninfosbyid(personIds, index, esServerIp, esServerPort) - if e !=nil { - logger.Debug("Dbpersoninfosbyid.err:",e) + var dbpersons []protomsg.Dbperson + if len(personIds) >0 { + dbpersons, _ = esApi.Dbpersoninfosbyid(personIds, index, esServerIp, esServerPort) } + logger.Debug("dbpersons:", dbpersons) - if e ==nil && dbpersons !=nil { + if dbpersons !=nil { for _,p :=range dbpersons { var dbP = DbPersonVo { PersonId: p.Id, IdCard: p.IdCard, - CompareScore: dbPersonM[p.Id].CompareScore, + CompareScore: util.ParseScore(dbPersonM[p.Id].CompareScore), MonitorLevel: p.MonitorLevel, PersonName: p.PersonName, PersonPicUrl: p.PersonPicUrl, @@ -295,6 +316,47 @@ resultList = append(resultList,cr) } } + var capturePersons []protomsg.Videopersons + if len(captureIds) >0 { + logger.Debug("capturePersons:", capturePersons) + videopersons, _ := esApi.Videopersonsinfosbyid(captureIds, config.EsInfo.EsIndex.VideoPersons.IndexName, config.EsInfo.Masterip, config.EsInfo.Httpport) + logger.Debug("videoPersons.len:",len(videopersons)) + for _,vp :=range videopersons { + isAlarmInt, _ := strconv.Atoi(vp.IsAlarm) + var bi []DbPersonVo + for _,p :=range vp.BaseInfo { + bi = append(bi, DbPersonVo{ + PersonId: p.PersonId, + IdCard: p.IdCard, + CompareScore: util.ParseScore(captureM[p.PersonId].CompareScore), + MonitorLevel: p.MonitorLevel, + PersonName: p.PersonName, + PersonPicUrl: p.PersonPicUrl, + PhoneNum: p.PhoneNum, + Sex: p.Sex, + TableId: p.TableId, + }) + } + vpE := CompareResult{ + Id: vp.Id, + 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, + TaskName: vp.TaskName, + TaskId: vp.TaskId, + VideoUrl: vp.VideoUrl, + BaseInfo: bi, + } + resultList = append(resultList,vpE) + } + } + logger.Debug("resultList:",resultList) } util.ResponseFormat(c,code.Success,resultList) @@ -388,6 +450,7 @@ dbperson.PersonPicUrl = field // 鍥剧墖璺粡 dbperson.TableId = tableId // dbperson.PersonName = fileNameOnly // 鍥剧墖鍚� + dbperson.Enable = 1 //榛樿鏈夋晥 // 婕旂ずbase64缂栫爜 dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮� @@ -468,7 +531,7 @@ //addResult["detail"] = details //fields := fdfsclient.UploadFileByBuffer100(bytess, extNames) // fastdfs 涓婁紶 if len(successList)>0 { - util.ResponseFormat(c, code.Success, addResult) + util.ResponseFormat(c, code.DbPersonUploadSuccess, addResult) } else { util.ResponseFormat(c, code.ServiceInsideError, err.Error()) } -- Gitblit v1.8.0