From 44d5e620bf62e4b1c70f16af980738d5c4c7d517 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 16 十二月 2019 18:33:19 +0800
Subject: [PATCH] ---

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

diff --git a/algorithm/middleware/middleware.go b/algorithm/middleware/middleware.go
index fd4c8f2..e3c951a 100644
--- a/algorithm/middleware/middleware.go
+++ b/algorithm/middleware/middleware.go
@@ -73,8 +73,9 @@
 					//logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
 					for _, areaMap := range sdkData.AreaMapList {
 						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
-						if groupRule.Rules[j].RuleWithPre == "鈯�" {
-							assembleDta(args,groupRule.Rules[j-1],groupRule.Rules[j])
+						logger.Info("鍓嶇疆杩炴帴绗︼細",groupRule.Rules[j])
+						if groupRule.Rules[j].RuleWithPre == "鈯�" && len(ruleResult.Target) > 0 {
+							assembleDta(resultSplice[len(resultSplice)-1].Target,ruleResult.Target)
 							// 鎶婂綋鍓嶅皬瑙勫垯缁撴灉缃┖
 							ruleResult = structure.LittleRuleResult{}
 						}
@@ -99,41 +100,41 @@
 		}
 	}
 	// 浜鸿劯
-	//for j := 0; j < len(groupRule.Rules); j++ {
-	//	if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias != "time_rule"{
-	//		for _, sdkData := range args.Sdkdata {
-	//			// 鏍规嵁瑙勫垯鐨剆dkId鏌ュ嚭鍏跺搴旂殑ipcId锛岀敤ipcId鍘绘壘璇ユ瘮瀵圭殑鏁版嵁
-	//			sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
-	//			if err != nil {
-	//				logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
-	//			}
-	//			ipcId := sdk.IpcId
-	//			sdkName := sdk.SdkName
-	//			//logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId)
-	//			if ipcId == sdkData.IpcId {
-	//				//logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", sdkName, "---","")
-	//				for _, areaMap := range sdkData.AreaMapList {
-	//					ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
-	//					if ruleResult.Result != "" {
-	//						//logger.Info("浜鸿劯姣斿瑙勫垯缁撴灉锛�", ruleResult.Result)
-	//						// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
-	//						if strings.Contains(ruleResult.Result, "true") {
-	//							areaMap.IsEffective = true
-	//						}
-	//						// 濡傛灉姝ょ粨鏋滀负鐪熶笖褰撳墠杩囩殑鏄痽olo绠楁硶锛屽簲璁颁笅姝よ鍒欐墍瀵瑰簲鐨剆dkName,鍙﹀锛岃繕瑕佸幓閲� (鍚庡姞锛氭妸姝ゆ潯瑙︾鐨勫尯鍩焛d涔熻褰曚笅鏉�)
-	//						if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
-	//							sdkNames = sdkName + " "
-	//						}
-	//						if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
-	//							polygonId += groupRule.Rules[j].PolygonId + ","
-	//						}
-	//						resultSplice = append(resultSplice, &ruleResult)
-	//					}
-	//				}
-	//			}
-	//		}
-	//	}
-	//}
+	for j := 0; j < len(groupRule.Rules); j++ {
+		if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias != "time_rule"{
+			for _, sdkData := range args.Sdkdata {
+				// 鏍规嵁瑙勫垯鐨剆dkId鏌ュ嚭鍏跺搴旂殑ipcId锛岀敤ipcId鍘绘壘璇ユ瘮瀵圭殑鏁版嵁
+				sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
+				if err != nil {
+					logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
+				}
+				ipcId := sdk.IpcId
+				sdkName := sdk.SdkName
+				//logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId)
+				if ipcId == sdkData.IpcId {
+					//logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", sdkName, "---","")
+					for _, areaMap := range sdkData.AreaMapList {
+						ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
+						if ruleResult.Result != "" {
+							//logger.Info("浜鸿劯姣斿瑙勫垯缁撴灉锛�", ruleResult.Result)
+							// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
+							if strings.Contains(ruleResult.Result, "true") {
+								areaMap.IsEffective = true
+							}
+							// 濡傛灉姝ょ粨鏋滀负鐪熶笖褰撳墠杩囩殑鏄痽olo绠楁硶锛屽簲璁颁笅姝よ鍒欐墍瀵瑰簲鐨剆dkName,鍙﹀锛岃繕瑕佸幓閲� (鍚庡姞锛氭妸姝ゆ潯瑙︾鐨勫尯鍩焛d涔熻褰曚笅鏉�)
+							if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
+								sdkNames = sdkName + " "
+							}
+							if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
+								polygonId += groupRule.Rules[j].PolygonId + ","
+							}
+							resultSplice = append(resultSplice, &ruleResult)
+						}
+					}
+				}
+			}
+		}
+	}
 	// 涓綋闈欐
 	for j := 0; j < len(groupRule.Rules); j++ {
 		if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a977" && groupRule.Rules[j].SdkArgAlias == "duration"{
@@ -329,7 +330,7 @@
 						break
 					}
 				}
-				return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort}
+				return structure.LittleRuleResult{SdkName:am.SdkName, Result:rule.RuleWithPre + "" + flag, Sort:rule.Sort}
 			}
 
 			if rule.Operator == "unsatisfy" || rule.Operator == "!=" { // 涓嶆弧瓒虫墍閫夌殑鏃堕棿瑙勫垯
@@ -349,7 +350,7 @@
 						break
 					}
 				}
-				return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort}
+				return structure.LittleRuleResult{SdkName:am.SdkName, Result:rule.RuleWithPre + "" + flag, Sort:rule.Sort}
 			}
 
 		}
@@ -471,36 +472,20 @@
 //	}
 //}
 // 濡傛灉瑙勫垯缁勪腑鏈夊寘鍚鍙凤紝鎶婅鍒欑粍涔嬪悗鐨勮鍒欏搴旂殑绠楁硶鍜屽尯鍩熸彁鍙栫殑鏁版嵁瑁呴厤鍒板墠闈㈠幓
-func assembleDta(args *structure.SdkDatas,rule1,rule2 *protomsg.Rule) {
-		// 鎷垮埌鍚庨潰鐨勯偅涓尯鍩熺殑鏁版嵁
-		logger.Info("瑙﹀彂浜嗗寘鍚簨浠讹紝鎶婂悗鑰呯殑鏁版嵁缁欏埌鍓嶈��")
-		area := structure.AreaMap{}
-		for _, sdkData := range args.Sdkdata {
-			for _, areaMap := range sdkData.AreaMapList {
-				if areaMap.SdkId == rule2.SdkId && areaMap.AreaId == rule2.PolygonId {
-					area = *areaMap
-					goto second
-				}
-			}
+func assembleDta(targets1,targets2 []*structure.Arg) {
+	if len(targets1) > 0 {
+		logger.Info("鏈変汉浣擄細",len(targets1))
+		for _,target := range targets1 {
+			mergeArg(target,targets2)
+			targets2 = nil
+			return // 瑁呴厤涓�娆″氨鍙互
 		}
-second:	for _, sdkData := range args.Sdkdata {
-			for _, areaMap := range sdkData.AreaMapList {
-				if areaMap.SdkId == rule1.SdkId && areaMap.AreaId == rule1.PolygonId {
-					// 鎷垮埌鍖呭惈绗︿箣鍓嶇殑鏁版嵁锛岄亶鍘嗚閰�
-					for _,arg := range areaMap.FilterData {
-						mergeArg(arg,area)
-						logger.Info("鍚堝苟鍚庣殑arg鏄細",*arg)
-					}
-					// 娓呯┖浜鸿劯锛屼汉鑴镐笉鍐嶅崟鐙彃鍏ヤ簡
-					area.FilterData = nil
-					return // 瑁呴厤涓�娆″氨鍙互
-				}
-			}
-		}
+	}
 }
 
-func mergeArg(arg *structure.Arg,areaMap structure.AreaMap) {
-	for _,arg1 := range areaMap.FilterData {
+func mergeArg(arg *structure.Arg,targets2 []*structure.Arg) {
+	for _,arg1 := range targets2 {
+		logger.Info("浜鸿劯锛�",arg1.Location,arg1.Score)
 		precent := ruleserver.PgsInterPercent(Rect2Point(arg.Location),arg1.Location,1,1)
 		if precent > 99 {
 			arg.AttachArg = arg1.SourceArg

--
Gitblit v1.8.0