| | |
| | | "basic.com/valib/logger.git" |
| | | "github.com/golang/protobuf/proto" |
| | | "github.com/knetic/govaluate" |
| | | <<<<<<< HEAD |
| | | "ruleprocess/logger" |
| | | ======= |
| | | >>>>>>> master |
| | | "ruleprocess/structure" |
| | | "strconv" |
| | | "time" |
| | | ) |
| | | |
| | | <<<<<<< HEAD |
| | | func Judge(msg structure.ResultMsg) { |
| | | ======= |
| | | func PushSomthing(msg structure.ResultMsg) { |
| | | defer func() { |
| | | if err := recover(); err != nil { |
| | |
| | | } |
| | | }() |
| | | start := time.Now() |
| | | >>>>>>> master |
| | | // 装配成自己可以识别的数据 |
| | | label := new(Label) |
| | | label.DataFormatToLabel(msg) |
| | |
| | | func baseJudge(label *Label, rule *protomsg.EventPushRule) string { |
| | | if rule.RuleValue == "all" { |
| | | for _, personGroup := range label.Persons { |
| | | for _, arg := range personGroup.Args { |
| | | for _, arg := range personGroup.AlarmObj { |
| | | if len(arg.Liker) > 0 { |
| | | logger.Info("满足全部底库规则") |
| | | return "true" |
| | |
| | | return "false" |
| | | } else { |
| | | for _, personGroup := range label.Persons { |
| | | for _, arg := range personGroup.Args { |
| | | for _, arg := range personGroup.AlarmObj { |
| | | for _, liker := range arg.Liker { |
| | | formula := "'" + liker.TableId + "'" + rule.Operator + "'" + rule.RuleValue + "'" |
| | | expression, err := govaluate.NewEvaluableExpression(formula); |
| | |
| | | //是否符合人员规则 |
| | | func personJudge(label *Label, rule *protomsg.EventPushRule) string { |
| | | for _, personGroup := range label.Persons { |
| | | for _, person := range personGroup.Args { |
| | | for _, person := range personGroup.AlarmObj { |
| | | formula := "" |
| | | if rule.TopicArg == "sex" { |
| | | formula = strconv.Itoa(int(person.ThftRes.Gender)) + rule.Operator + rule.RuleValue |
| | |
| | | } |
| | | if rule.TopicArg == "monitorLevel" { |
| | | if rule.RuleValue == "all" { |
| | | if len(personGroup.Args) > 0 { |
| | | if len(personGroup.AlarmObj) > 0 { |
| | | logger.Info("符合人员等级为全部的规则") |
| | | return "true" |
| | | } |
| | |
| | | func defenceJudge(label *Label, rule *protomsg.EventPushRule) string { |
| | | if rule.RuleValue == "all" { // 布防等级为全部时只有有布防等级即为通过 |
| | | if len(label.DefenceLevel) > 0 { |
| | | logger.Info("符合布防等级规则,布防等级为全部") |
| | | //logger.Info("符合布防等级规则,布防等级为全部") |
| | | return "true" |
| | | } else { |
| | | logger.Info("不符合布防等级规则") |
| | | //logger.Info("不符合布防等级规则") |
| | | return "false" |
| | | } |
| | | } else { |
| | |
| | | //return "false" |
| | | } |
| | | if result.(bool) { |
| | | logger.Info("符合布防等级规则!") |
| | | //logger.Info("符合布防等级规则!") |
| | | return "true" |
| | | } |
| | | } |
| | | logger.Info("不符合布防等级规则") |
| | | //logger.Info("不符合布防等级规则") |
| | | return "false" |
| | | } |
| | | } |
| | |
| | | return "false" |
| | | } |
| | | if result.(bool) { |
| | | logger.Info("符合任务规则!") |
| | | //logger.Info("符合任务规则!") |
| | | return "true" |
| | | } |
| | | logger.Info("不符合任务规则") |
| | | //logger.Info("不符合任务规则") |
| | | return "false" |
| | | } |
| | | |
| | | // 调用目标服务器的插入接口 |
| | | func pushData(urls []*protomsg.PushUrl, data structure.ResultMsg) { |
| | | for _, url := range urls { |
| | | logger.Debug("看看推送地址:",url.Url) |
| | | //logger.Debug("推送地址:",url.Url) |
| | | 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]) |
| | | |
| | | } |
| | | |