From 4624f603d79151c8d07375a27ec277a5a53e178b Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 05 八月 2019 14:44:20 +0800
Subject: [PATCH] ---

---
 labelFilter/ruleForLabel.go |  110 ++++++++++++++++++++++++++++++++-----------------------
 1 files changed, 64 insertions(+), 46 deletions(-)

diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go
index fe905b2..e4146a5 100644
--- a/labelFilter/ruleForLabel.go
+++ b/labelFilter/ruleForLabel.go
@@ -4,65 +4,81 @@
 	"basic.com/dbapi.git"
 	"basic.com/pubsub/protomsg.git"
 	"github.com/knetic/govaluate"
+	"os"
 	"ruleprocess/logger"
 	"ruleprocess/ruleserver"
 	"strconv"
 	"time"
 )
 
-func Judge(label *Label, result ruleserver.ResultMsg){
+func Judge(result ruleserver.ResultMsg){
+	// 瑁呴厤鎴愯嚜宸卞彲浠ヨ瘑鍒殑鏁版嵁
+	label := new(Label)
+	label.DataFormatToLabel(result)
+	logger.Info("label鐨勪俊鎭細",label.CameraName,label.DefenceLevel,label.Time)
+	if label.CameraName == "" {
+		logger.Error("鏃犳晥鏁版嵁锛岀洿鎺ヨ繑鍥�")
+		return
+	}
 	//鎷垮埌鎵�鏈夎鍒欑粍
 	var api dbapi.EventPushApi
 	b,allRules := api.FindAllDetails()
+	logger.Info("鏌ョ湅鎵�鏈夎鍒欑粍锛�",allRules)
 	if !b {
 		logger.Error("鏌ヨ鏃堕棿鎺ㄩ�佽鍒欏け璐ワ紒")
 	}
 	//閬嶅巻鎵�鏈夌殑瑙勫垯缁勶紝鐪嬬湅绗﹀悎鍝釜瑙勫垯缁勶紝灏辨妸鏁版嵁鎻掑叆鍒板摢涓鍒欑粍鐨勭洰鏍囨満鍣ㄤ笂
 	for _,ruleGroup := range allRules {
-		// 鍏堣繃鏃堕棿瑙勫垯
-		timeJudge(label,ruleGroup)
-		result := ""
-		var Connector string
-		if ruleGroup.IsSatisfyAll {
-			Connector = "&&"
-		} else {
-			Connector = "||"
-		}
-		for _,rule := range ruleGroup.Rules {
-			// 杩囨瘡涓�涓皬瑙勫垯
-			if rule.TopicType == "camera" {
-				result = Connector + cameraJudge(label,rule)
-			}
-			if rule.TopicType == "baseLibrary" {
-				result = Connector + baseJudge(label,rule)
-			}
-			if rule.TopicType == "task" {
-				result = Connector + taskJudge(label,rule)
-			}
-			if rule.TopicType == "person" {
-				result = Connector + taskJudge(label,rule)
-			}
-			if rule.TopicType == "defence" {
-				result = Connector + defenceJudge(label,rule)
-			}
-		}
-		// 寰楀嚭鎬荤殑鍒ゆ柇缁撴灉
-		if result != "" {
-			result = result[2:] // 鎶婂墠涓や綅瀛楃鍘绘帀
-			expression, err:= govaluate.NewEvaluableExpression(result);
-			if err != nil {
-				logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒")
-			}
-			result, err1:= expression.Evaluate(nil)
-			if err1 != nil {
-				logger.Error("甯﹀叆鍙傛暟鏈夎")
-			}
-			if result.(bool) {
-				logger.Info("閫氳繃瑙勫垯锛岃〃杈惧紡涓猴細",result)
-				// 鎺ㄩ�佹湇鍔″櫒
-				pushData(ruleGroup.IpPorts,result.(ruleserver.ResultMsg))
+		if ruleGroup.Enable {  // 澶ц鍒欏紑鍏冲紑鍚姸鎬�
+			// 鍏堣繃鏃堕棿瑙勫垯
+			timeJudge(label,ruleGroup)
+			result := ""
+			var Connector string
+			if ruleGroup.IsSatisfyAll {
+				Connector = "&&"
 			} else {
-				logger.Info("娌¢�氳繃瑙勫垯,琛ㄨ揪寮忎负锛�",result)
+				Connector = "||"
+			}
+			for _,rule := range ruleGroup.Rules {
+				// 杩囨瘡涓�涓皬瑙勫垯
+				if rule.TopicType == "camera" {
+					result = Connector + cameraJudge(label,rule)
+				}
+				if rule.TopicType == "baseLibrary" {
+					result = Connector + baseJudge(label,rule)
+				}
+				if rule.TopicType == "task" {
+					result = Connector + taskJudge(label,rule)
+				}
+				if rule.TopicType == "person" {
+					result = Connector + taskJudge(label,rule)
+				}
+				if rule.TopicType == "defence" {
+					result = Connector + defenceJudge(label,rule)
+				}
+			}
+			// 寰楀嚭鎬荤殑鍒ゆ柇缁撴灉
+			if result != "" {
+				logger.Info("鎬荤殑鍒ゆ柇缁撴灉锛�",result)
+				result = result[2:] // 鎶婂墠涓や綅瀛楃鍘绘帀
+				expression, err:= govaluate.NewEvaluableExpression(result);
+				if err != nil {
+					logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒")
+				}
+				result, err1:= expression.Evaluate(nil)
+				if err1 != nil {
+					logger.Error("甯﹀叆鍙傛暟鏈夎")
+				}
+				logger.Warn("瑙勫垯鍒ゆ柇缁撴灉鏄細",)
+				if result.(bool) {
+					logger.Info("閫氳繃瑙勫垯锛岃〃杈惧紡涓猴細",result)
+					// 鎺ㄩ�佹湇鍔″櫒
+					pushData(ruleGroup.Urls,result.(ruleserver.ResultMsg))
+					os.Exit(1)
+				} else {
+					logger.Info("娌¢�氳繃瑙勫垯,琛ㄨ揪寮忎负锛�",result)
+					os.Exit(1)
+				}
 			}
 		}
 	}
@@ -187,6 +203,8 @@
 	return "false"
 }
 // 璋冪敤鐩爣鏈嶅姟鍣ㄧ殑鎻掑叆鎺ュ彛
-func pushData (urls []*protomsg.PushIpPort, data ruleserver.ResultMsg){
-
+func pushData (urls []*protomsg.PushUrl, data ruleserver.ResultMsg){
+	for _,url := range urls {
+		Push(url.Url,data)
+	}
 }
\ No newline at end of file

--
Gitblit v1.8.0