From 25e009c1e80bb1b3b69b83501dcbffd117e3e7e4 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期六, 02 十一月 2019 15:50:01 +0800
Subject: [PATCH] ---
---
labelFilter/ruleForLabel.go | 63 ++++++++++++++++++++++---------
1 files changed, 44 insertions(+), 19 deletions(-)
diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go
index 980fa54..b0fe3fb 100644
--- a/labelFilter/ruleForLabel.go
+++ b/labelFilter/ruleForLabel.go
@@ -3,14 +3,20 @@
import (
"basic.com/dbapi.git"
"basic.com/pubsub/protomsg.git"
+ "basic.com/valib/logger.git"
"github.com/knetic/govaluate"
- "ruleprocess/logger"
- "ruleprocess/ruleserver"
+ "ruleprocess/structure"
"strconv"
"time"
)
-func Judge(msg ruleserver.ResultMsg) {
+func PushSomthing(msg structure.ResultMsg) {
+ defer func() {
+ if err := recover(); err != nil {
+ logger.Error("浜嬩欢鎺ㄩ�佹ā鍧楀効鐨勫紓甯告崟鑾凤細",err)
+ }
+ }()
+
// 瑁呴厤鎴愯嚜宸卞彲浠ヨ瘑鍒殑鏁版嵁
label := new(Label)
label.DataFormatToLabel(msg)
@@ -30,7 +36,11 @@
for _, ruleGroup := range allRules {
if ruleGroup.Enable { // 澶ц鍒欏紑鍏冲紑鍚姸鎬�
// 鍏堣繃鏃堕棿瑙勫垯
- timeJudge(label, ruleGroup)
+ timeFlag := timeJudge(label, ruleGroup)
+ if !timeFlag {
+ logger.Info("涓嶅湪瑙勫垯鐨勬椂闂磋寖鍥村唴锛屼笉鎺ㄩ�侊紒")
+ continue
+ }
result := ""
var Connector string
if ruleGroup.IsSatisfyAll {
@@ -41,19 +51,19 @@
for _, rule := range ruleGroup.Rules {
// 杩囨瘡涓�涓皬瑙勫垯
if rule.TopicType == "camera" {
- result = Connector + cameraJudge(label, rule)
+ result += Connector + cameraJudge(label, rule)
}
if rule.TopicType == "dbtable" {
- result = Connector + baseJudge(label, rule)
+ result += Connector + baseJudge(label, rule)
}
if rule.TopicType == "task" {
- result = Connector + taskJudge(label, rule)
+ result += Connector + taskJudge(label, rule)
}
if rule.TopicType == "person" {
- result = Connector + taskJudge(label, rule)
+ result += Connector + taskJudge(label, rule)
}
if rule.TopicType == "alarmLevel" {
- result = Connector + defenceJudge(label, rule)
+ result += Connector + defenceJudge(label, rule)
}
}
// 寰楀嚭鎬荤殑鍒ゆ柇缁撴灉
@@ -63,6 +73,7 @@
expression, err := govaluate.NewEvaluableExpression(result);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒")
+ return
}
result, err1 := expression.Evaluate(nil)
if err1 != nil {
@@ -85,16 +96,16 @@
}
// 鏄惁绗﹀悎鏃堕棿瑙勫垯
-func timeJudge(label *Label, groupRule protomsg.EventPush) string {
+func timeJudge(label *Label, groupRule protomsg.EventPush) bool {
timeNow := time.Now().Format("2006-01-02 15:04:05")
logger.Info("鏍囩杩囨护鍣ㄨ捣濮嬫椂闂翠负锛�",groupRule.TimeStart,groupRule.TimeEnd)
flag1 := isBefore(groupRule.TimeStart, timeNow)
flag2 := isBefore(timeNow, groupRule.TimeEnd)
if flag1 && flag2 {
- return "true"
+ return true
} else {
logger.Info("涓嶅湪瑙勫畾鐨勬椂闂磋寖鍥村唴锛�")
- return "false"
+ return false
}
}
@@ -103,6 +114,7 @@
expression, err := govaluate.NewEvaluableExpression("t1 < t2");
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒")
+ return false
}
parameters := make(map[string]interface{}, 8)
parameters["t1"] = time1
@@ -123,6 +135,7 @@
if rule.TopicArg == "addr" {
formula = "'" + label.CameraAddr + "'" + rule.Operator + "'" + rule.RuleValue + "'"
}
+ logger.Info("-------鎵撳嵃鎽勫儚鏈鸿鍒欏叕寮忥細",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
@@ -159,9 +172,10 @@
for _, liker := range arg.Liker {
formula := "'" + liker.TableId + "'" + rule.Operator + "'" + rule.RuleValue + "'"
expression, err := govaluate.NewEvaluableExpression(formula);
+ logger.Info("-------鎵撳嵃搴曞簱瑙勫垯鍏紡锛�",formula)
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
- //return "false"
+ return "false"
}
result, err1 := expression.Evaluate(nil)
if err1 != nil {
@@ -198,10 +212,11 @@
// 鍏朵粬杩欎釜鍊煎厛杩欎箞澶勭悊
return "true"
}
+ logger.Info("-------鎵撳嵃浜哄憳瑙勫垯鍏紡锛�",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
- //return "false"
+ return "false"
}
result, err1 := expression.Evaluate(nil)
if err1 != nil {
@@ -221,10 +236,11 @@
}
} else {
formula := strconv.Itoa(int(personGroup.AlarmLevel)) + rule.Operator + formate(rule.RuleValue)
+ logger.Info("-------鎵撳嵃浜哄憳绛夌骇瑙勫垯鍏紡锛�",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
- //return "false"
+ return "false"
}
result, err1 := expression.Evaluate(nil)
if err1 != nil {
@@ -256,11 +272,12 @@
}
} else {
for _, def := range label.DefenceLevel {
- formula := strconv.Itoa(int(def)) + rule.Operator + formate(rule.RuleValue)
+ formula := strconv.Itoa(int(def)) + rule.Operator + rule.RuleValue
+ logger.Info("-------鎵撳嵃甯冮槻绛夌骇瑙勫垯鍏紡锛�",formula)
expression, err := govaluate.NewEvaluableExpression(formula);
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
- //return "false"
+ return "false"
}
result, err1 := expression.Evaluate(nil)
if err1 != nil {
@@ -281,6 +298,7 @@
func taskJudge(label *Label, rule *protomsg.EventPushRule) string {
formula := "'"+label.TaskId +"'"+ rule.Operator +"'"+ rule.RuleValue+"'"
expression, err := govaluate.NewEvaluableExpression(formula);
+ logger.Info("-------鎵撳嵃浠诲姟瑙勫垯鍏紡锛�",formula)
if err != nil {
logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒", formula)
return "false"
@@ -299,10 +317,17 @@
}
// 璋冪敤鐩爣鏈嶅姟鍣ㄧ殑鎻掑叆鎺ュ彛
-func pushData(urls []*protomsg.PushUrl, data ruleserver.ResultMsg) {
+func pushData(urls []*protomsg.PushUrl, data structure.ResultMsg) {
for _, url := range urls {
logger.Debug("鐪嬬湅鎺ㄩ�佸湴鍧�锛�",url.Url)
- Push("tcp://192.168.1.123:40012", data)
+ for _, v := range urlChans {
+ if v.url == url.Url{
+ v.ch <- &data
+ logger.Info("chan淇℃伅锛�",v.ch)
+ }
+ }
+
+ //logger.Info("urlPool澶у皬锛� ", len(urlPool[url.Url]))
}
}
--
Gitblit v1.8.0