From 9f7cca3789a13dd0847f5f0444d2bbc06636a431 Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期二, 06 八月 2019 14:01:09 +0800 Subject: [PATCH] 查找底库人员 --- labelFilter/ruleForLabel.go | 125 ++++++++++++++++++++++++++++++++++------- 1 files changed, 102 insertions(+), 23 deletions(-) diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go index 2b31dcf..3588c9c 100644 --- a/labelFilter/ruleForLabel.go +++ b/labelFilter/ruleForLabel.go @@ -123,7 +123,7 @@ } expression, err:= govaluate.NewEvaluableExpression(formula); if err != nil { - logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒") + logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒",formula) return "false" } result, err1:= expression.Evaluate(nil) @@ -140,42 +140,100 @@ // 鏄惁绗﹀悎搴曞簱瑙勫垯 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" } @@ -186,21 +244,42 @@ // 鏄惁绗﹀悎甯冮槻绛夌骇瑙勫垯 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{ formula := label.TaskId + rule.Operator + rule.RuleValue expression, err:= govaluate.NewEvaluableExpression(formula); if err != nil { - logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒") + logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒",formula) return "false" } result, err1:= expression.Evaluate(nil) -- Gitblit v1.8.0