From e132fa8aa92c23ae299c480366dd0a9be99a01e3 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期二, 06 八月 2019 10:48:24 +0800
Subject: [PATCH] 日志设置变动

---
 labelFilter/ruleForLabel.go |  173 +++++++++++++++++++++++++++++++++++++++++++++------------
 1 files changed, 135 insertions(+), 38 deletions(-)

diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go
index 1f25cb7..3588c9c 100644
--- a/labelFilter/ruleForLabel.go
+++ b/labelFilter/ruleForLabel.go
@@ -15,6 +15,11 @@
 	// 瑁呴厤鎴愯嚜宸卞彲浠ヨ瘑鍒殑鏁版嵁
 	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()
@@ -64,7 +69,6 @@
 				if err1 != nil {
 					logger.Error("甯﹀叆鍙傛暟鏈夎")
 				}
-				logger.Warn("瑙勫垯鍒ゆ柇缁撴灉鏄細",)
 				if result.(bool) {
 					logger.Info("閫氳繃瑙勫垯锛岃〃杈惧紡涓猴細",result)
 					// 鎺ㄩ�佹湇鍔″櫒
@@ -110,65 +114,126 @@
 
 // 鏄惁绗﹀悎鎽勫儚鏈鸿鍒�
 func cameraJudge(label *Label,rule *protomsg.EventPushRule) string{
+	formula := ""
 	if rule.TopicArg == "cameraName" {
-		if label.CameraName == rule.RuleValue {
-			logger.Info("绗﹀悎鎽勫儚鏈哄悕绉拌鍒�")
-			return "true"
-		} else {
-			logger.Info("涓嶇鍚堟憚鍍忔満鍚嶇О瑙勫垯")
-			return "false"
-		}
+		formula = label.CameraName + rule.Operator + rule.RuleValue
 	}
 	if rule.TopicArg == "cameraLocation" {
-		if label.CameraAddr == rule.RuleValue {
-			logger.Info("绗﹀悎鎽勫儚鏈轰綅缃鍒�")
-			return "true"
-		} else {
-			logger.Info("涓嶇鍚堟憚鍍忔満浣嶇疆瑙勫垯")
-			return "false"
-		}
+		formula = label.CameraAddr + rule.Operator + rule.RuleValue
 	}
-	return ""
+	expression, err:= govaluate.NewEvaluableExpression(formula);
+	if err != nil {
+		logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒",formula)
+		return "false"
+	}
+	result, err1:= expression.Evaluate(nil)
+	if err1 != nil {
+		logger.Error("甯﹀叆鍙傛暟鏈夎")
+		return "false"
+	}
+	if result.(bool) {
+		logger.Info("绗﹀悎鎽勫儚鏈鸿鍒�!")
+		return "true"
+	}
+	return "false"
 }
 
 // 鏄惁绗﹀悎搴曞簱瑙勫垯
 func baseJudge(label *Label,rule *protomsg.EventPushRule) string{
-	flag := "false"
-	for _,personGroup := range label.Persons  {
-		for _,arg := range personGroup.Args {
-			for _,liker := range arg.Liker{
-				if liker.TableId == rule.RuleValue {
-					logger.Info("绗﹀悎搴曞簱瑙勫垯锛�")
-					flag = "true"
+	if rule.RuleValue == "all" {
+		for _,personGroup := range label.Persons {
+			for _, arg := range personGroup.Args {
+				if len(arg.Liker) > 0 {
+					logger.Info("婊¤冻鍏ㄩ儴搴曞簱瑙勫垯")
+					return "true"
 				}
 			}
 		}
+		return "false"
+	} else {
+		for _,personGroup := range label.Persons  {
+			for _,arg := range personGroup.Args {
+				for _,liker := range arg.Liker{
+					formula := liker.TableId + rule.Operator + rule.RuleValue
+					expression, err:= govaluate.NewEvaluableExpression(formula);
+					if err != nil {
+						logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒",formula)
+						//return "false"
+					}
+					result, err1:= expression.Evaluate(nil)
+					if err1 != nil {
+						logger.Error("甯﹀叆鍙傛暟鏈夎")
+						//return "false"
+					}
+					if result.(bool) {
+						logger.Info("绗﹀悎搴曞簱瑙勫垯!")
+						return "true"
+					}
+				}
+			}
+		}
+		return "false"
 	}
-	return flag
 }
 
 //鏄惁绗﹀悎浜哄憳瑙勫垯
 func personJudge(label *Label,rule *protomsg.EventPushRule) string{
 	for _,personGroup := range label.Persons  {
 		for _,person := range personGroup.Args {
-			if rule.TopicArg == "sex" && strconv.Itoa(int(person.ThftRes.Gender)) == rule.RuleValue{
-				logger.Info("绗﹀悎浜哄憳鎬у埆瑙勫垯锛�")
-				return  "true"
+			formula := ""
+			if rule.TopicArg == "sex"{
+				formula = strconv.Itoa(int(person.ThftRes.Gender)) + rule.Operator + rule.RuleValue
 			}
-			if rule.TopicArg == "race" && strconv.Itoa(int(person.ThftRes.Race)) == rule.RuleValue {
-				logger.Info("绗﹀悎浜哄憳绉嶆棌瑙勫垯锛�")
+			if rule.TopicArg == "race"{
+				formula = strconv.Itoa(int(person.ThftRes.Race)) + rule.Operator + rule.RuleValue
 				return "true"
 			}
-			if rule.TopicArg == "age" && strconv.Itoa(int(person.ThftRes.Age)) == rule.RuleValue {
-				logger.Info("绗﹀悎浜哄憳骞撮緞瑙勫垯锛�")
+			if rule.TopicArg == "age"{
+				formula = strconv.Itoa(int(person.ThftRes.Age)) + rule.Operator + rule.RuleValue
 				return "true"
 			}
 			if rule.TopicArg == "others" {
 				// 鍏朵粬杩欎釜鍊煎厛杩欎箞澶勭悊
 				return "true"
 			}
+			expression, err:= govaluate.NewEvaluableExpression(formula);
+			if err != nil {
+				logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒",formula)
+				//return "false"
+			}
+			result, err1:= expression.Evaluate(nil)
+			if err1 != nil {
+				logger.Error("甯﹀叆鍙傛暟鏈夎")
+				//return "false"
+			}
+			if result.(bool) {
+				logger.Info("绗﹀悎浜哄憳瑙勫垯锛�",formula)
+				return "true"
+			}
 		}
-		if strconv.Itoa(int(personGroup.AlarmLevel)) == rule.RuleValue {
+		if rule.TopicArg == "monitorLevel" {
+			if rule.RuleValue == "all" {
+				if len(personGroup.Args) > 0 {
+					logger.Info("绗﹀悎浜哄憳绛夌骇涓哄叏閮ㄧ殑瑙勫垯")
+					return "true"
+				}
+			} else {
+				formula := strconv.Itoa(int(personGroup.AlarmLevel)) + rule.Operator + rule.RuleValue
+				expression, err:= govaluate.NewEvaluableExpression(formula);
+				if err != nil {
+					logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒",formula)
+					//return "false"
+				}
+				result, err1:= expression.Evaluate(nil)
+				if err1 != nil {
+					logger.Error("甯﹀叆鍙傛暟鏈夎")
+					//return "false"
+				}
+				if result.(bool) {
+					logger.Info("绗﹀悎浜哄憳绛夌骇瑙勫垯!")
+					return "true"
+				}
+			}
 			logger.Info("绗﹀悎浜哄憳鎶ヨ绛夌骇瑙勫垯锛�")
 			return "true"
 		}
@@ -179,18 +244,50 @@
 
 // 鏄惁绗﹀悎甯冮槻绛夌骇瑙勫垯
 func defenceJudge(label *Label,rule *protomsg.EventPushRule) string{
-	for _,def := range label.DefenceLevel {
-		if strconv.Itoa(int(def)) == rule.RuleValue {
-			logger.Info("绗﹀悎甯冮槻绛夌骇瑙勫垯锛�")
+	if rule.RuleValue == "all" { // 甯冮槻绛夌骇涓哄叏閮ㄦ椂鍙湁鏈夊竷闃茬瓑绾у嵆涓洪�氳繃
+		if len(label.DefenceLevel) > 0 {
+			logger.Info("绗﹀悎甯冮槻绛夌骇瑙勫垯锛屽竷闃茬瓑绾т负鍏ㄩ儴")
 			return "true"
+		} else {
+			logger.Info("涓嶇鍚堝竷闃茬瓑绾ц鍒�")
+			return "false"
 		}
+	} else {
+		for _,def := range label.DefenceLevel {
+			formula := strconv.Itoa(int(def)) + rule.Operator + rule.RuleValue
+			expression, err:= govaluate.NewEvaluableExpression(formula);
+			if err != nil {
+				logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒",formula)
+				//return "false"
+			}
+			result, err1:= expression.Evaluate(nil)
+			if err1 != nil {
+				logger.Error("甯﹀叆鍙傛暟鏈夎")
+				//return "false"
+			}
+			if result.(bool) {
+				logger.Info("绗﹀悎甯冮槻绛夌骇瑙勫垯!")
+				return "true"
+			}
+		}
+		logger.Info("涓嶇鍚堝竷闃茬瓑绾ц鍒�")
+		return "false"
 	}
-	logger.Info("涓嶇鍚堝竷闃茬瓑绾ц鍒�")
-	return "false"
 }
 // 鏄惁绗﹀悎浠诲姟瑙勫垯
 func taskJudge(label *Label,rule *protomsg.EventPushRule) string{
-	if label.TaskId == rule.RuleValue {
+	formula := label.TaskId + rule.Operator + rule.RuleValue
+	expression, err:= govaluate.NewEvaluableExpression(formula);
+	if err != nil {
+		logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒",formula)
+		return "false"
+	}
+	result, err1:= expression.Evaluate(nil)
+	if err1 != nil {
+		logger.Error("甯﹀叆鍙傛暟鏈夎")
+		return "false"
+	}
+	if result.(bool) {
 		logger.Info("绗﹀悎浠诲姟瑙勫垯!")
 		return "true"
 	}

--
Gitblit v1.8.0