From d96f024e19c72065f248df0508911f487b72505b Mon Sep 17 00:00:00 2001
From: liuxiaolong <736321739@qq.com>
Date: 星期三, 21 八月 2019 16:16:28 +0800
Subject: [PATCH] compare proc devide 2,es and db

---
 controllers/fileController.go |   31 ++++++++++++---
 config/dev.yaml               |    6 ++-
 service/FaceCompareService.go |   53 +++++++++++++++++++-------
 extend/config/config.go       |   13 +++++-
 4 files changed, 76 insertions(+), 27 deletions(-)

diff --git a/config/dev.yaml b/config/dev.yaml
index 7fc7bd1..0a5ece6 100644
--- a/config/dev.yaml
+++ b/config/dev.yaml
@@ -6,9 +6,11 @@
     imageUrl: http://192.168.1.203:6080
     publicDomain: http://bsic.asuscomm.com
     networkAdapter: enp8s0
-compare:
+dbpersoncompare:
+    url: 127.0.0.1:40010
+espersoncompare:
     url:
-     - 127.0.0.1:40010
+     - 127.0.0.1:40011
 weedfs:
     ip: 192.168.1.203
     uploadport: 6333
diff --git a/controllers/fileController.go b/controllers/fileController.go
index adb0f1d..c9ec1c0 100644
--- a/controllers/fileController.go
+++ b/controllers/fileController.go
@@ -368,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
 			}
 		}
@@ -395,22 +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{
 		sort.Sort(totalData)
 		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
@@ -418,7 +435,7 @@
 
 	} else {
 		m["total"] = 0
-		m["compareNum"] = searchBody.CompareNum
+		m["compareNum"] = compareService.CompareNum
 		m["totalList"] = []CompareResult{}
 	}
 	util.ResponseFormat(c,code.Success,m)
diff --git a/extend/config/config.go b/extend/config/config.go
index a4edba7..20e52bc 100644
--- a/extend/config/config.go
+++ b/extend/config/config.go
@@ -64,11 +64,17 @@
 
 var DBconf = &database{}
 
-type CompareServer struct {
+type dbpersoncompare struct {
+	Url string `mapstructure:"url"`
+}
+
+type espersoncompare struct {
 	Url []string `mapstructure:"url"`
 }
 
-var CompServerInfo = &CompareServer{}
+var DbPersonCompInfo = &dbpersoncompare{}
+
+var EsCompServerInfo = &espersoncompare{}
 
 
 // Init is an exported method that takes the environment starts the viper
@@ -88,5 +94,6 @@
 	viper.UnmarshalKey("redis", RedisConf)
 	viper.UnmarshalKey("database", DBconf)
 	viper.UnmarshalKey("weedfs", WeedFs)
-	viper.UnmarshalKey("compare", CompServerInfo)
+	viper.UnmarshalKey("dbpersoncompare",DbPersonCompInfo)
+	viper.UnmarshalKey("espersoncompare", EsCompServerInfo)
 }
diff --git a/service/FaceCompareService.go b/service/FaceCompareService.go
index bc94ee3..04d5040 100644
--- a/service/FaceCompareService.go
+++ b/service/FaceCompareService.go
@@ -63,21 +63,22 @@
 
 var CaptureTable = "capturetable" // 鎶撴媿搴�
 
-func (sv *FaceCompareService) Compare() *CompareOnce{
+func (sv *FaceCompareService) CompareVideoPersons() *CompareList{
+	sv.CompareArgs.TableIds = []string { CaptureTable }
 	b, err := proto.Marshal(&sv.CompareArgs)
-	compServerList := config.CompServerInfo.Url
-	logger.Debug("compServerList:", compServerList)
-	//1.鍚戝悇涓猚ompare杩涚▼鍙戣捣璇锋眰鎷垮埌姣斿缁撴灉
+	esCompServerList := config.EsCompServerInfo.Url
+	logger.Debug("compServerList:", esCompServerList)
+	//1.鍚戝悇涓狤s compare杩涚▼鍙戣捣璇锋眰鎷垮埌姣斿缁撴灉
 	var resultList CompareList
-	//resultList :=make([]*protomsg.SdkCompareEach,0)
-	for _,str :=range compServerList{
+
+	for _,str :=range esCompServerList{
 		reqUrl := "tcp://"+str
 		resultB := doCompareRequest(reqUrl,b)
 		if resultB == nil || len(*resultB) ==0 {
 			continue
 		}
 		var sdkCompResult protomsg.SdkCompareResult
-		//rList :=make([]protomsg.Esinfo,0)
+
 		err = proto.Unmarshal(*resultB, &sdkCompResult)
 		if err !=nil {
 			logger.Debug("comp sdkCompareResult unmarshal err:", err)
@@ -87,19 +88,41 @@
 		logger.Debug("comp len(rList):", len(sdkCompResult.CompareResult))
 		if len(sdkCompResult.CompareResult) >0 {
 			resultList = append(resultList, sdkCompResult.CompareResult...)
-			//resultList = append(resultList, FillDataToCompareResult(&sdkCompResult)...)
 		}
 	}
 	logger.Debug("comp totalList.len:", len(resultList))
 
-	//2.缂撳瓨姣斿缁撴灉
-	co := &CompareOnce{
-		CompareNum: sv.CompareNum,
-		CompareData: &resultList,
-	}
-	SetCompResultByNum(co)
+	return &resultList
+}
 
-	return co
+//姣斿搴曞簱
+func (sv *FaceCompareService) CompareDbPersons() *CompareList{
+	b, err := proto.Marshal(&sv.CompareArgs)
+	dbPersonCompServerUrl := config.DbPersonCompInfo.Url
+	logger.Debug("comp Server url:", dbPersonCompServerUrl)
+
+	var resultList CompareList
+
+	reqUrl := "tcp://"+dbPersonCompServerUrl
+	resultB := doCompareRequest(reqUrl,b)
+	if resultB == nil || len(*resultB) ==0 {
+		return nil
+	}
+	var sdkCompResult protomsg.SdkCompareResult
+	err = proto.Unmarshal(*resultB, &sdkCompResult)
+	if err !=nil {
+		logger.Debug("comp sdkCompareResult unmarshal err:", err)
+		return nil
+	}
+
+	logger.Debug("comp len(rList):", len(sdkCompResult.CompareResult))
+	if len(sdkCompResult.CompareResult) >0 {
+		resultList = append(resultList, sdkCompResult.CompareResult...)
+	}
+
+	logger.Debug("comp totalList.len:", len(resultList))
+
+	return &resultList
 }
 
 func doCompareRequest(url string,args []byte) *[]byte{

--
Gitblit v1.8.0