| | |
| | | "basic.com/dbapi.git" |
| | | "basic.com/pubsub/protomsg.git" |
| | | "basic.com/valib/logger.git" |
| | | "github.com/golang/protobuf/proto" |
| | | "github.com/knetic/govaluate" |
| | | "ruleprocess/structure" |
| | | "strconv" |
| | |
| | | logger.Error("事件推送模块儿的异常捕获:",err) |
| | | } |
| | | }() |
| | | |
| | | start := time.Now() |
| | | // 装配成自己可以识别的数据 |
| | | label := new(Label) |
| | | label.DataFormatToLabel(msg) |
| | | logger.Info("label的信息:", label.CameraName, label.DefenceLevel, label.Time) |
| | | //logger.Info("label的信息:", label.CameraName, label.DefenceLevel, label.Time) |
| | | if label.CameraName == "" { |
| | | logger.Error("无效数据,直接返回") |
| | | return |
| | |
| | | //拿到所有规则组 |
| | | var api dbapi.EventPushApi |
| | | b, allRules := api.FindAllDetails() |
| | | logger.Info("查看所有规则组:", allRules) |
| | | //logger.Info("查看所有规则组:", allRules) |
| | | if !b { |
| | | logger.Error("查询时间推送规则失败!") |
| | | } |
| | |
| | | logger.Info("通过规则,表达式为:", result) |
| | | // 推送服务器 |
| | | pushData(ruleGroup.Urls, msg) |
| | | logger.Info("时间推送所用时间:",time.Since(start)) |
| | | //os.Exit(1) |
| | | } else { |
| | | logger.Info("没通过规则,表达式为:", result) |
| | |
| | | // 是否符合时间规则 |
| | | func timeJudge(label *Label, groupRule protomsg.EventPush) bool { |
| | | timeNow := time.Now().Format("2006-01-02 15:04:05") |
| | | logger.Info("标签过滤器起始时间为:",groupRule.TimeStart,groupRule.TimeEnd) |
| | | //logger.Info("标签过滤器起始时间为:",groupRule.TimeStart,groupRule.TimeEnd) |
| | | flag1 := isBefore(groupRule.TimeStart, timeNow) |
| | | flag2 := isBefore(timeNow, groupRule.TimeEnd) |
| | | if flag1 && flag2 { |
| | |
| | | if rule.TopicArg == "addr" { |
| | | formula = "'" + label.CameraAddr + "'" + rule.Operator + "'" + rule.RuleValue + "'" |
| | | } |
| | | logger.Info("-------打印摄像机规则公式:",formula) |
| | | //logger.Info("-------打印摄像机规则公式:",formula) |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | |
| | | logger.Info("符合摄像机规则!") |
| | | return "true" |
| | | } |
| | | logger.Info("不符合摄像机规则!") |
| | | //logger.Info("不符合摄像机规则!") |
| | | return "false" |
| | | } |
| | | |
| | |
| | | for _, liker := range arg.Liker { |
| | | formula := "'" + liker.TableId + "'" + rule.Operator + "'" + rule.RuleValue + "'" |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | logger.Info("-------打印底库规则公式:",formula) |
| | | //logger.Info("-------打印底库规则公式:",formula) |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | | return "false" |
| | |
| | | // 其他这个值先这么处理 |
| | | return "true" |
| | | } |
| | | logger.Info("-------打印人员规则公式:",formula) |
| | | //logger.Info("-------打印人员规则公式:",formula) |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | |
| | | } |
| | | } else { |
| | | formula := strconv.Itoa(int(personGroup.AlarmLevel)) + rule.Operator + formate(rule.RuleValue) |
| | | logger.Info("-------打印人员等级规则公式:",formula) |
| | | //logger.Info("-------打印人员等级规则公式:",formula) |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | |
| | | } else { |
| | | for _, def := range label.DefenceLevel { |
| | | formula := strconv.Itoa(int(def)) + rule.Operator + rule.RuleValue |
| | | logger.Info("-------打印布防等级规则公式:",formula) |
| | | //logger.Info("-------打印布防等级规则公式:",formula) |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | |
| | | func taskJudge(label *Label, rule *protomsg.EventPushRule) string { |
| | | formula := "'"+label.TaskId +"'"+ rule.Operator +"'"+ rule.RuleValue+"'" |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | | logger.Info("-------打印任务规则公式:",formula) |
| | | //logger.Info("-------打印任务规则公式:",formula) |
| | | if err != nil { |
| | | logger.Error("表达式有误,请检查!", formula) |
| | | return "false" |
| | |
| | | func pushData(urls []*protomsg.PushUrl, data structure.ResultMsg) { |
| | | for _, url := range urls { |
| | | logger.Debug("看看推送地址:",url.Url) |
| | | urlPool[url.Url] <- data |
| | | bytes,err1 := proto.Marshal(data) |
| | | if err1 != nil { |
| | | logger.Info("序列化失败:",err1) |
| | | } |
| | | if _, ok := urlPool[url.Url] ; ok { |
| | | urlPool[url.Url] <- bytes |
| | | logger.Info("chan信息而: ", urlPool[url.Url]) |
| | | } |
| | | logger.Info("chan信息以: ", urlPool[url.Url]) |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | // 把报警等级转化成汉字 |