From e6982607fbbeaa96d3d14409df780266646b793d Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期五, 01 十一月 2019 18:22:44 +0800 Subject: [PATCH] 换一个chan --- labelFilter/ruleForLabel.go | 70 +++++++++++++++++++++++------------ 1 files changed, 46 insertions(+), 24 deletions(-) diff --git a/labelFilter/ruleForLabel.go b/labelFilter/ruleForLabel.go index edbb3fb..3cce737 100644 --- a/labelFilter/ruleForLabel.go +++ b/labelFilter/ruleForLabel.go @@ -3,18 +3,23 @@ import ( "basic.com/dbapi.git" "basic.com/pubsub/protomsg.git" + "basic.com/valib/logger.git" "github.com/knetic/govaluate" - "os" - "ruleprocess/logger" - "ruleprocess/ruleserver" + "ruleprocess/structure" "strconv" "time" ) -func Judge(result ruleserver.ResultMsg) { +func PushSomthing(msg structure.ResultMsg) { + defer func() { + if err := recover(); err != nil { + logger.Error("浜嬩欢鎺ㄩ�佹ā鍧楀効鐨勫紓甯告崟鑾凤細",err) + } + }() + // 瑁呴厤鎴愯嚜宸卞彲浠ヨ瘑鍒殑鏁版嵁 label := new(Label) - label.DataFormatToLabel(result) + label.DataFormatToLabel(msg) logger.Info("label鐨勪俊鎭細", label.CameraName, label.DefenceLevel, label.Time) if label.CameraName == "" { logger.Error("鏃犳晥鏁版嵁锛岀洿鎺ヨ繑鍥�") @@ -31,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 { @@ -42,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) } } // 寰楀嚭鎬荤殑鍒ゆ柇缁撴灉 @@ -64,6 +73,7 @@ expression, err := govaluate.NewEvaluableExpression(result); if err != nil { logger.Error("琛ㄨ揪寮忔湁璇紝璇锋鏌ワ紒") + return } result, err1 := expression.Evaluate(nil) if err1 != nil { @@ -72,11 +82,11 @@ if result.(bool) { logger.Info("閫氳繃瑙勫垯锛岃〃杈惧紡涓猴細", result) // 鎺ㄩ�佹湇鍔″櫒 - pushData(ruleGroup.Urls, result.(ruleserver.ResultMsg)) - os.Exit(1) + pushData(ruleGroup.Urls, msg) + //os.Exit(1) } else { logger.Info("娌¢�氳繃瑙勫垯,琛ㄨ揪寮忎负锛�", result) - os.Exit(1) + //os.Exit(1) } } } @@ -86,15 +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) @@ -137,6 +150,7 @@ logger.Info("绗﹀悎鎽勫儚鏈鸿鍒�!") return "true" } + logger.Info("涓嶇鍚堟憚鍍忔満瑙勫垯!") return "false" } @@ -158,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 { @@ -174,6 +189,7 @@ } } } + logger.Info("涓嶇鍚堝簳搴撹鍒�!") return "false" } } @@ -196,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 { @@ -219,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 { @@ -254,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 { @@ -279,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" @@ -297,9 +317,11 @@ } // 璋冪敤鐩爣鏈嶅姟鍣ㄧ殑鎻掑叆鎺ュ彛 -func pushData(urls []*protomsg.PushUrl, data ruleserver.ResultMsg) { +func pushData(urls []*protomsg.PushUrl, data structure.ResultMsg) { for _, url := range urls { - Push(url.Url, data) + logger.Debug("鐪嬬湅鎺ㄩ�佸湴鍧�锛�",url.Url) + pool <- &data + //logger.Info("urlPool澶у皬锛� ", len(urlPool[url.Url])) } } -- Gitblit v1.8.0