From 250f2e68becab56cc009216496dfa0d7d8d1a22f Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期日, 07 七月 2024 15:15:20 +0800
Subject: [PATCH] 添加常住人口和重点人员比对

---
 compare/compare.go |   89 +++++++++-----------------------------------
 1 files changed, 18 insertions(+), 71 deletions(-)

diff --git a/compare/compare.go b/compare/compare.go
index 59f989a..a1fa2e1 100644
--- a/compare/compare.go
+++ b/compare/compare.go
@@ -2,10 +2,9 @@
 
 import (
 	"fmt"
-	"sdkCompare/util"
 	"strconv"
 
-	"sdkCompare/cache"
+	"sdkCompare/util"
 
 	"basic.com/pubsub/protomsg.git"
 	"basic.com/valib/logger.git"
@@ -14,12 +13,12 @@
 
 const thresholdLimit = float32(30)
 
-func GetComparePersonBaseInfo(args protomsg.CompareArgs) []byte {
+func Walk(args protomsg.CompareArgs) []byte {
 	if args.FaceFeature == nil {
 		return nil
 	}
 
-	floatFeat := util.ByteSlice2float32Slice(args.FaceFeature)
+	fFeature := util.ByteSlice2float32Slice(args.FaceFeature)
 
 	//鎸囧畾鏈�浣庡垎
 	baseScore := thresholdLimit
@@ -31,79 +30,27 @@
 		baseScore = 0
 	}
 
-	var scResult protomsg.SdkCompareResult
+	var response protomsg.SdkCompareResult
 
-	var walkedArea = make(map[string]struct{}, 0)
-	// 浼樺厛姣斿浼犲叆鐨勫皬鍖篿d
-	if args.TreeNodes != nil && len(args.TreeNodes) > 0 {
-		for _, id := range args.TreeNodes {
-			if _, ok := cache.CacheMap.Area[id]; ok {
-				targets := cache.CacheMap.Area[id].Walk(DoSdkCompare, floatFeat, baseScore)
-				if len(targets) > 0 {
-					// 姣斿缁撴灉鍘婚噸, 鍚屼竴涓汉鍒拌杩囧涓皬鍖�, 缂撳瓨鏁版嵁鍐呬細鏈夊鏉¤褰�
-					for idx, t := range targets {
-						var isRepeat bool
-						for _, r := range scResult.CompareResult {
-							if t.Id == r.Id {
-								isRepeat = true
-								break
-							}
-						}
-						if !isRepeat {
-							scResult.CompareResult = append(scResult.CompareResult, targets[idx])
-						}
-					}
-				}
-
-				walkedArea[id] = struct{}{}
-			}
-		}
-
-		if len(scResult.CompareResult) > 0 {
-			goto done
-		}
+	// 鎶撴媿搴撴瘮瀵�
+	switch args.CompareTarget {
+	case "realName":
+		response = realNamePersonsCompere(args, fFeature, baseScore)
+	case "keyPerson":
+		response = keyPersonsCompere(args, fFeature, baseScore)
+	default:
+		response = capturePersonsCompere(args, fFeature, baseScore)
 	}
 
-	// 姣斿浠ュ鐨勫皬鍖�
-	if !args.IsCompareAll && len(args.TreeNodes) > 0 {
-		baseScore += 20
+	logger.Debugf("Compare Target %s result len %d", args.CompareTarget, len(response.CompareResult))
+
+	if len(response.CompareResult) > 0 {
+		logger.Debugf("Compare result %+v", response.CompareResult)
 	}
 
-	for key, val := range cache.CacheMap.Area {
-		if _, ok := walkedArea[key]; ok {
-			continue
-		}
-
-		targets := val.Walk(DoSdkCompare, floatFeat, baseScore)
-		if len(targets) > 0 {
-			if len(targets) > 0 {
-				// 姣斿缁撴灉鍘婚噸, 鍚屼竴涓汉鍒拌杩囧涓皬鍖�, 缂撳瓨鏁版嵁鍐呬細鏈夊鏉¤褰�
-				for idx, t := range targets {
-					var isRepeat bool
-					for _, r := range scResult.CompareResult {
-						if t.Id == r.Id {
-							isRepeat = true
-							break
-						}
-					}
-					if !isRepeat {
-						scResult.CompareResult = append(scResult.CompareResult, targets[idx])
-					}
-				}
-			}
-			// todo 娣诲姞灏忓尯澶栫殑鍏宠仈鍏崇郴, 涓嬫浼樺厛姣斿
-		}
-	}
-
-done:
-	logger.Debugf("姣斿缁撴灉 %d鏉�", len(scResult.CompareResult))
-	if len(scResult.CompareResult) > 0 {
-		logger.Debugf("姣斿缁撴灉%+v", scResult.CompareResult)
-	}
-
-	buf, err := proto.Marshal(&scResult)
+	buf, err := proto.Marshal(&response)
 	if err != nil {
-		logger.Error("scResult Marshal error!", err)
+		logger.Error("response Marshal error!", err)
 		return nil
 	}
 

--
Gitblit v1.8.0