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 |  115 +++++++++++++++++++++++++++++----------------------------
 1 files changed, 59 insertions(+), 56 deletions(-)

diff --git a/controllers/fileController.go b/controllers/fileController.go
index fd631e1..080660d 100644
--- a/controllers/fileController.go
+++ b/controllers/fileController.go
@@ -1,16 +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"
-	"encoding/json"
 	"errors"
 	"fmt"
 	"github.com/gin-gonic/gin"
-	"github.com/gogo/protobuf/proto"
 	"github.com/satori/go.uuid"
 	"image"
 	"image/jpeg"
@@ -25,10 +23,10 @@
 	"webserver/extend/code"
 	"webserver/extend/config"
 	"webserver/extend/esutil"
+	"webserver/extend/logger"
 	"webserver/extend/util"
 	"webserver/models"
 	"webserver/service"
-	esApi "basic.com/pubsub/esutil.git"
 )
 
 type FileController struct {
@@ -151,71 +149,75 @@
 
 // @Summary 浠ュ浘鎼滃浘
 // @Description  浠ュ浘鎼滃浘
+// @Accept json
 // @Produce json
 // @Tags 浠ュ浘鎼滃浘
-// @Param url formData string true "url"
-// @Param tableId formData string true "搴曞簱id"
-// @Param compThreshold formData string 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) {
-	photoUrl := c.Request.FormValue("url")
-	tableId := c.Request.FormValue("tableId")//搴曞簱id
-	compThresholdStr := c.Request.FormValue("compThreshold")//姣斿闃堝��
-	compThreshold, err := strconv.ParseFloat(compThresholdStr,32)
-	if photoUrl == "" || err != nil {
+	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 {
 		arg := protomsg.CompareArgs{
-			FaceFeature:face.FaceBytes,
-			CompareThreshold:float32(compThreshold),
+			FaceFeature: face.FaceBytes,
+			CompareThreshold: searchBody.Threshold,
 		}
-		if tableId !=""{
-			arg.TableIds = []string{ tableId }
+
+		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
 		}
-		b, err := proto.Marshal(&arg)
-		if err !=nil{
-			util.ResponseFormat(c, code.ComError, "璇锋眰marshal澶辫触")
-			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]
 		}
-		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...)
-			}
-		}
-		util.ResponseFormat(c,code.Success,resultList)
+		util.ResponseFormat(c,code.Success,m)
 	}
 }
 
@@ -306,6 +308,7 @@
 	dbperson.PersonPicUrl = field //  鍥剧墖璺粡
 	dbperson.TableId = tableId           //
 	dbperson.PersonName = fileNameOnly       // 鍥剧墖鍚�
+	dbperson.Enable = 1 //榛樿鏈夋晥
 	// 婕旂ずbase64缂栫爜
 
 	dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮�
@@ -386,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