From f4e8f206a6760bdc31734dfcb1c65916b5b76311 Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期四, 22 八月 2019 12:05:58 +0800
Subject: [PATCH] add cluster

---
 controllers/fileController.go |  117 +++++++++++++++++++++++++---------------------------------
 1 files changed, 51 insertions(+), 66 deletions(-)

diff --git a/controllers/fileController.go b/controllers/fileController.go
index 8ebc80c..a4c67ae 100644
--- a/controllers/fileController.go
+++ b/controllers/fileController.go
@@ -184,47 +184,45 @@
 	Enable int32 `json:"enable"`
 }
 
-type CompareSortResult []CompareResult
-
-func (s CompareSortResult) Len() int{
-	return len(s)
-}
-func (s CompareSortResult) Swap(i,j int){
-	s[i],s[j] = s[j],s[i]
-}
-func (s CompareSortResult) Less(i,j int) bool{
-	return s[i].CompareScore > s[j].CompareScore
+type ScoreIndex struct {
+	CompareScore float32
+	Index int
 }
 
 //濉厖鍚戝墠绔繑鍥炵殑鏁版嵁
-func FillDataToCompareResult(compResult *protomsg.SdkCompareResult) CompareSortResult {
-	//resultList :=make([]CompareResult,0)
-	var resultList = CompareSortResult{}
+func FillDataToCompareResult(compResult *protomsg.SdkCompareResult) []CompareResult {
 
-	dbPersonM := make(map[string]*protomsg.SdkCompareEach, 0)
-	captureM := make(map[string]*protomsg.SdkCompareEach, 0)
+	var resultList = make([]CompareResult, len(compResult.CompareResult))
+	dbPersonM := make(map[string]ScoreIndex, 0)
+	captureM := make(map[string]ScoreIndex, 0)
 	personIds := make([]string,0)
 	captureIds := make([]string,0)
-	for _,v :=range compResult.CompareResult{
+	for idx,v :=range compResult.CompareResult{
 		if v.Tableid == service.CaptureTable {
-			captureM[v.Id] = v
+			captureM[v.Id] = ScoreIndex{
+				Index: idx,
+				CompareScore: v.CompareScore,
+			}
 			captureIds = append(captureIds,v.Id)
 		} else {
-			dbPersonM[v.Id] = v
+			dbPersonM[v.Id] = ScoreIndex{
+				Index: idx,
+				CompareScore: v.CompareScore,
+			}
 			personIds = append(personIds,v.Id)
 		}
 	}
 	logger.Debug("comp len(personIds):", len(personIds))
 	logger.Debug("comp len(captureIds):", len(captureIds))
-	esServerIp := config.EsInfo.Masterip
-	esServerPort := config.EsInfo.Httpport
-	index := config.EsInfo.EsIndex.Dbtablepersons.IndexName
+
 	var dbpersons []protomsg.Dbperson
 	if len(personIds) >0 {
-		dbpersons, _ = esApi.Dbpersoninfosbyid(personIds, index, esServerIp, esServerPort)
+		var dbpApi dbapi.DbPersonApi
+		dbpersons, _ = dbpApi.Dbpersoninfosbyid(personIds)
 	}
 
 	if len(dbpersons) >0 {
+		var dtApi dbapi.DbTableApi
 		for _,p :=range dbpersons {
 			var dbP = DbPersonVo {
 				PersonId: p.Id,
@@ -238,15 +236,15 @@
 				TableId: p.TableId,
 				Enable: p.Enable,
 			}
-			dbTableInfos, _ := esApi.Dbtablefosbyid([]string{p.TableId}, config.EsInfo.EsIndex.DbTables.IndexName, esServerIp, esServerPort)
+			dbTableInfos, _ := dtApi.DbtablesById([]string{ p.TableId })
 			if dbTableInfos !=nil{
 				dbP.BwType = dbTableInfos[0].BwType
 				dbP.TableName = dbTableInfos[0].TableName
 			}
-			var cr = CompareResult{
+
+			resultList[dbPersonM[p.Id].Index] = CompareResult{
 				BaseInfo:[]DbPersonVo{ dbP },
 			}
-			resultList = append(resultList,cr)
 		}
 	}
 	if len(captureIds) >0 {
@@ -288,20 +286,9 @@
 				BaseInfo: bi,
 				SdkName: "浜鸿劯",
 			}
-			resultList = append(resultList,vpE)
+			resultList[captureM[vp.Id].Index] = vpE
 		}
 	}
-	var scorePre []float32
-	for _,f1 :=range resultList {
-		scorePre = append(scorePre, f1.CompareScore)
-	}
-	logger.Debug("comp 鎺掑簭鍓嶅垎鍊兼暟缁勶細",scorePre)
-	sort.Sort(resultList)
-	var scoreAf []float32
-	for _,f2 :=range resultList {
-		scoreAf = append(scoreAf, f2.CompareScore)
-	}
-	logger.Debug("comp 鎺掑簭鍚庡垎鍊兼暟缁勶細",scoreAf)
 	return  resultList
 }
 
@@ -381,11 +368,12 @@
 		CompareThreshold: searchBody.Threshold,
 	}
 
+	var hasCompEsPerson = false
 	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)
+				hasCompEsPerson = true
 				break
 			}
 		}
@@ -408,33 +396,38 @@
 	timeStart := time.Now()
 
 	compareService := service.NewFaceCompareService(arg)
-	compareOnce := compareService.Compare()
-	totalData := compareOnce.CompareData
+	var totalData service.CompareList
+	if len(arg.TableIds) >0 {//鏈夋瘮瀵瑰簳搴�
+		dbPersonTargets := compareService.CompareDbPersons()
+		if dbPersonTargets !=nil {
+			totalData = append(totalData,*dbPersonTargets...)
+		}
+	}
+	if hasCompEsPerson {//鏈夋瘮瀵笶s鎶撴媿
+		esPersons := compareService.CompareVideoPersons()
+		if esPersons !=nil {
+			totalData = append(totalData, *esPersons...)
+		}
+	}
 
 	logger.Debug("comp 姣斿缁撴潫锛岀敤鏃讹細",time.Since(timeStart))
+	service.SetCompResultByNum(&service.CompareOnce{
+		CompareNum: compareService.CompareNum,
+		CompareData: &totalData,
+	})
+
 	m := make(map[string]interface{},3)
 	if totalData != nil && totalData.Len() > 0{
-		//鎸夊垎鍊兼帓搴�
-		//var scorePre []float32
-		//for _,f1 :=range *totalData {
-		//	scorePre = append(scorePre, f1.CompareScore)
-		//}
-		//logger.Debug("comp 鎺掑簭鍓嶅垎鍊兼暟缁勶細",scorePre)
 		sort.Sort(totalData)
-		//var scoreAf []float32
-		//for _,f2 :=range *totalData {
-		//	scoreAf = append(scoreAf, f2.CompareScore)
-		//}
-		//logger.Debug("comp 鎺掑簭鍚庡垎鍊兼暟缁勶細",scoreAf)
 		total := totalData.Len()
 
-		m["compareNum"] = compareOnce.CompareNum
+		m["compareNum"] = compareService.CompareNum
 		m["total"] = total
 		var sCompResult protomsg.SdkCompareResult
 		if total <= searchBody.Size {
-			sCompResult.CompareResult = *totalData
+			sCompResult.CompareResult = totalData
 		} else {
-			sCompResult.CompareResult = (*totalData)[0:searchBody.Size]
+			sCompResult.CompareResult = totalData[0:searchBody.Size]
 		}
 		resultList := FillDataToCompareResult(&sCompResult)
 		m["totalList"] = resultList
@@ -442,7 +435,7 @@
 
 	} else {
 		m["total"] = 0
-		m["compareNum"] = searchBody.CompareNum
+		m["compareNum"] = compareService.CompareNum
 		m["totalList"] = []CompareResult{}
 	}
 	util.ResponseFormat(c,code.Success,m)
@@ -572,7 +565,6 @@
 
 func uploadFileReturnAddr(file multipart.File, filename string, tableId string) (string, map[string]interface{}, error) {
 	defer file.Close()
-	field := ""
 	// weedfs 涓婁紶
 	fileBytes, err := ioutil.ReadAll(file)
 	if err !=nil {
@@ -604,29 +596,22 @@
 	cutFaceImgData := util.SubImg(*pI, int(rcFace.Left), int(rcFace.Top), int(rcFace.Right), int(rcFace.Bottom))
 	logger.Debug("SubImg鐢ㄦ椂锛�", time.Since(t1))
 	t1 = time.Now()
-	fileInfo, e := esutil.PostFormData(weedfsUri, filename, "file", cutFaceImgData)
+	weedFilePath, e := WeedFSClient.UploadFile(weedfsUri, filename, cutFaceImgData)
 	logger.Debug("涓婁紶鍒皐eedfs鐢ㄦ椂:", time.Since(t1))
 	t1 = time.Now()
 	if e != nil {
 		fmt.Println(e.Error())
 		return "", nil, e
-	} else {
-		field = fileInfo[picUrlField].(string) // 鏂囦欢璺緞
 	}
-	if strings.Contains(field,"/"){
-		idx := strings.Index(field, "/")
-		field = field[idx+1:]
-	}
+
 	ext := path.Ext(filename)
 	fileNameOnly := strings.TrimSuffix(filename, ext)
 
 	dbperson := new(models.Dbtablepersons)
-	dbperson.PersonPicUrl = field //  鍥剧墖璺粡
+	dbperson.PersonPicUrl = weedFilePath //  鍥剧墖璺粡
 	dbperson.TableId = tableId           //
 	dbperson.PersonName = fileNameOnly       // 鍥剧墖鍚�
 	dbperson.Enable = 1 //榛樿鏈夋晥
-	// 婕旂ずbase64缂栫爜
-
 	dbperson.FaceFeature = faceBase64 // 鐗瑰緛鍊糱ase64 鐮�
 
 	result := addDbPerson(dbperson)

--
Gitblit v1.8.0