From 59e648d84df45c97c4591dd8c651fca0f20f86c1 Mon Sep 17 00:00:00 2001 From: liuxiaolong <736321739@qq.com> Date: 星期六, 27 七月 2019 13:31:39 +0800 Subject: [PATCH] compareResult sort --- controllers/fileController.go | 113 +++++++++++++++++++++++++++++++++++++++----------------- 1 files changed, 79 insertions(+), 34 deletions(-) diff --git a/controllers/fileController.go b/controllers/fileController.go index fe3f7d5..080660d 100644 --- a/controllers/fileController.go +++ b/controllers/fileController.go @@ -1,15 +1,14 @@ package controllers import ( - "basic.com/pubsub/protomsg.git" + "basic.com/dbapi.git" "basic.com/fileServer/WeedFSClient.git" - "basic.com/valib/deliver.git" + "basic.com/pubsub/protomsg.git" "bytes" "encoding/base64" "errors" "fmt" "github.com/gin-gonic/gin" - "github.com/gogo/protobuf/proto" "github.com/satori/go.uuid" "image" "image/jpeg" @@ -24,6 +23,7 @@ "webserver/extend/code" "webserver/extend/config" "webserver/extend/esutil" + "webserver/extend/logger" "webserver/extend/util" "webserver/models" "webserver/service" @@ -103,7 +103,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' @@ -112,11 +118,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 @@ -130,50 +137,87 @@ 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 浠ュ浘鎼滃浘 +// @Accept json +// @Produce json +// @Tags 浠ュ浘鎼滃浘 +// @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) { - photoUrl := c.Request.FormValue("url") - if photoUrl == "" { + var searchBody models.EsSearch + err := c.BindJSON(&searchBody) + if err !=nil || searchBody.PicUrl == "" || len(searchBody.DataBases) == 0 { util.ResponseFormat(c, code.RequestParamError, "鍙傛暟鏈夎") return } - if face,ok := faceExtractedMap[photoUrl];!ok{ - 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[searchBody.PicUrl];!ok{ + 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, + FaceFeature: face.FaceBytes, + CompareThreshold: searchBody.Threshold, } - b, err := proto.Marshal(&arg) - if err !=nil{ - util.ResponseFormat(c, code.ComError, "璇锋眰marshal澶辫触") - return + + 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,service.CaptureTable) + break + } + } + arg.TableIds = searchBody.DataBases } - err = reqClient.Send(b) - if err !=nil{ - util.ResponseFormat(c, code.ComError, "姣斿鏈嶅姟璇锋眰澶辫触") - return + 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) + compareService := service.NewFaceCompareService(arg) + compareOnce := compareService.Compare() + logger.Debug("compareResult:",*compareOnce) + dataList := compareOnce.CompareData + service.SortByScore(dataList) + totalList := len(dataList) + m := make(map[string]interface{},3) + m["compareNum"] = compareOnce.CompareNum + m["total"] = totalList + if totalList <= searchBody.Size { + m["totalList"] = dataList + } else { + m["totalList"] = dataList[0:searchBody.Size] } - msg, err := reqClient.Recv() - if err !=nil{ - util.ResponseFormat(c, code.ComError, "姣斿鏈嶅姟鍝嶅簲澶辫触") - return - } - fmt.Println("compareReuslt:",msg) + util.ResponseFormat(c,code.Success,m) } } @@ -264,6 +308,7 @@ dbperson.PersonPicUrl = field // 鍥剧墖璺粡 dbperson.TableId = tableId // dbperson.PersonName = fileNameOnly // 鍥剧墖鍚� + dbperson.Enable = 1 //榛樿鏈夋晥 // 婕旂ずbase64缂栫爜 dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮� @@ -344,7 +389,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