From f88a44f58396fb36a979cfe5640a36d6ac2d7289 Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期四, 25 七月 2019 14:50:56 +0800 Subject: [PATCH] add discovery --- controllers/fileController.go | 99 +++++++++++++++++++++++++++++++------------------ 1 files changed, 62 insertions(+), 37 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index 8f97e3e..fd631e1 100644 --- a/controllers/fileController.go +++ b/controllers/fileController.go @@ -105,7 +105,13 @@ } var faceExtractedMap = make(map[string]FaceExtract,0) -// @Description 浜鸿劯鎻愬彇 +// @Summary 浜鸿劯鎻愬彇 +// @Description 浜鸿劯鎻愬彇 +// @Produce json +// @Tags 浠ュ浘鎼滃浘 +// @Param file formData file 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/faceExtract [POST] func (controller FileController) FaceExtract(c *gin.Context) { file, _, err := c.Request.FormFile("file") //image杩欎釜鏄痷plaodify鍙傛暟瀹氫箟涓殑 'fileObjName':'image' @@ -114,11 +120,12 @@ return } var weedfsUri = "http://"+config.WeedFs.Ip+":"+strconv.Itoa(config.WeedFs.UploadPort)+"/submit" - + resultMap :=make(map[string]interface{},0) //灏嗕笂浼犵殑鍥剧墖浜や汉鑴告娴嬪拰浜鸿劯鎻愬彇锛岃幏寰楃壒寰� fileBytes, _ := ioutil.ReadAll(file) faceArr, err, pI := service.GetFaceFeaFromSdk(fileBytes, time.Second*60) if err ==nil && len(faceArr) >0 { + //1.鎻愬彇姣忎竴寮犱汉鑴稿皬鍥� urlArr := make([]string,0) for _,r := range faceArr { rcFace := r.Pos.RcFace @@ -132,21 +139,32 @@ urlArr = append(urlArr, weedFilePath) } } - if len(urlArr) == 0{ - util.ResponseFormat(c,code.ComError,"鏈彁鍙栧埌浜鸿劯") - } else { - util.ResponseFormat(c,code.Success,urlArr) - } + //2.澶у浘鐢绘,鏍囪瘑浜鸿劯浣嶇疆 + originFilePath, _ := WeedFSClient.UploadFile(weedfsUri, "FaceUrl", fileBytes) + resultMap["uploadImage"] = originFilePath + resultMap["smImage"] = urlArr + util.ResponseFormat(c,code.Success, resultMap) } else { util.ResponseFormat(c,code.ComError,"鏈彁鍙栧埌浜鸿劯") } } -// @Description 浠ュ浘鎼滃浘 +// @Summary 浠ュ浘鎼滃浘 +// @Description 浠ュ浘鎼滃浘 +// @Produce json +// @Tags 浠ュ浘鎼滃浘 +// @Param url formData string true "url" +// @Param tableId formData string true "搴曞簱id" +// @Param compThreshold formData string 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) { photoUrl := c.Request.FormValue("url") - if photoUrl == "" { + tableId := c.Request.FormValue("tableId")//搴曞簱id + compThresholdStr := c.Request.FormValue("compThreshold")//姣斿闃堝�� + compThreshold, err := strconv.ParseFloat(compThresholdStr,32) + if photoUrl == "" || err != nil { util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } @@ -154,43 +172,50 @@ util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } else { - reqUrl := "tcp://192.168.1.66:40010" - reqClient := deliver.NewClient(deliver.ReqRep, reqUrl) arg := protomsg.CompareArgs{ FaceFeature:face.FaceBytes, - CompareThreshold:0.2, + CompareThreshold:float32(compThreshold), + } + if tableId !=""{ + arg.TableIds = []string{ tableId } } b, err := proto.Marshal(&arg) if err !=nil{ util.ResponseFormat(c, code.ComError, "璇锋眰marshal澶辫触") return } - err = reqClient.Send(b) - if err !=nil{ - util.ResponseFormat(c, code.ComError, "姣斿鏈嶅姟璇锋眰澶辫触") - return + compServerList := config.CompServerInfo.Url + fmt.Println("compServerList:", compServerList) + resultList :=make([]protomsg.Dbperson,0) + for _,str :=range compServerList{ + reqUrl := "tcp://"+str + reqClient := deliver.NewClient(deliver.ReqRep, reqUrl) + err = reqClient.Send(b) + if err !=nil{ + continue + } + resultB, err := reqClient.Recv() + if err !=nil{ + continue + } + m :=make(map[string]float32,0) + err = json.Unmarshal(resultB, &m) + if err !=nil{ + continue + } + personIds := make([]string,len(m)) + for k,_ :=range m{ + personIds = append(personIds,k) + } + esServerIp := config.EsInfo.Masterip + esServerPort := config.EsInfo.Httpport + index := config.EsInfo.EsIndex.Dbtablepersons.IndexName + dbpeople, e := esApi.Dbpersoninfosbyid(personIds, index, esServerIp, esServerPort) + if e ==nil{ + resultList = append(resultList,dbpeople...) + } } - resultB, err := reqClient.Recv() - if err !=nil{ - util.ResponseFormat(c, code.ComError, "姣斿鏈嶅姟鍝嶅簲澶辫触") - return - } - m :=make(map[string]float32,0) - err = json.Unmarshal(resultB, &m) - if err !=nil{ - util.ResponseFormat(c, code.ComError, "result Unmarshal err") - return - } - personIds := make([]string,len(m)) - for k,_ :=range m{ - personIds = append(personIds,k) - } - dbpeople, e := esApi.Dbpersoninfosbyid(personIds, "dbtablepersons", "192.168.1.182", "9200") - if e !=nil{ - util.ResponseFormat(c, code.ComError, "result es query err") - } else { - util.ResponseFormat(c,code.Success,dbpeople) - } + util.ResponseFormat(c,code.Success,resultList) } } -- Gitblit v1.8.0