From cbaf5704914c0f51a80ebe8220bdb5bad7c64d03 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期二, 06 八月 2019 17:53:22 +0800
Subject: [PATCH] ---
---
labelFilter/ruleForLabel.go | 168 +++++++++++++++++++++++++++++++++++++++++++------------
1 files changed, 130 insertions(+), 38 deletions(-)
diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go
index e4146a5..3588c9c 100644
--- a/labelFilter/ruleForLabel.go
+++ b/labelFilter/ruleForLabel.go
@@ -69,7 +69,6 @@
if err1 != nil {
logger.Error("甯﹀叆鍙傛暟鏈夎")
}
- logger.Warn("瑙勫垯鍒ゆ柇缁撴灉鏄細",)
if result.(bool) {
logger.Info("閫氳繃瑙勫垯锛岃〃杈惧紡涓猴細",result)
// 鎺ㄩ�佹湇鍔″櫒
@@ -115,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"
}
@@ -184,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