From 17bd1f6943b94381386fb3d9a38b8592cef5f70a Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期一, 01 七月 2019 18:17:56 +0800 Subject: [PATCH] --- --- ruleserver/ruleToformula.go | 19 ++++++++++++++----- 1 files changed, 14 insertions(+), 5 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index 320cbf9..dd116e6 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -215,7 +215,6 @@ linkTask(args, ruleList[i], taskId) } else { // 鐙珛浠诲姟鐨勫鐞� - log.Println("----------------------------------------64鎽勫儚鏈哄叆鍏�") RunRule(args, ruleList[i], taskId) } } @@ -225,6 +224,12 @@ } } func RunRule(args *SdkDatas, groupRule *protomsg.GroupRule, taskId string) bool { + defer func() { + if err := recover(); err != nil { + fmt.Println("姣斿瑙勫垯鏈夎", err.(string)) + } + + }() resultSplice := []*LittleRuleResult{} // 鍏堣繃瀹屾潯浠惰鍒� for j := 0; j < len(groupRule.Rules); j++ { @@ -290,8 +295,11 @@ if completeFormula != "" { log.Println("鐪嬬湅鍏紡-----------锛�", completeFormula) expression, _ := govaluate.NewEvaluableExpression(completeFormula) - result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� - if result.(bool) { + if strings.HasPrefix(completeFormula,"&&") || strings.HasPrefix(completeFormula,"||"){ + panic("瑙勫垯鏈夎锛屽緱鍒扮殑鏁板鍏紡涓嶅彲瑙f瀽") + } + result,_ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� + if !result.(bool) { // 缁欒繖甯ф暟鎹墦涓婅鍒欑粍鏍囩 //args.RuleResult = append(args.RuleResult, Result{TaskId: taskId, RuleGroupId: groupRule.GroupId}) for k, timeEle := range TimeEleList { @@ -712,11 +720,12 @@ now := time.Now() index := getIndexOfWeek(now.Weekday().String()) timeList := GetTimeById(rule.SdkArgValue, index) + log.Println("褰撳ぉ鐨勬椂闂磋鍒欙細----------",timeList) //fmt.Println("浠庢暟鎹簱涓煡鍑虹殑鏃堕棿瑙勫垯锛�", timeList) // 鍒ゆ柇鍥剧墖鏁版嵁鐨勬椂闂存槸鍚︾鍚堝綋鍓嶈鍒� 鍦ㄤ竴涓嵆涓簍rue锛屽叏涓嶅湪涓篺alse flag := "false" for _, timeSlot := range timeList { - if rule.Operator == "satisfy" { // 婊¤冻鎵�閫夌殑鏃堕棿瑙勫垯 + if rule.Operator == "satisfy" || rule.Operator == "=="{ // 婊¤冻鎵�閫夌殑鏃堕棿瑙勫垯 formula := "'" + timeSlot.Start + "'" + "<" + "'" + am.time + "'" expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡 result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� @@ -730,7 +739,7 @@ break } } - if rule.Operator == "unsatisfy" { // 涓嶆弧瓒虫墍閫夌殑鏃堕棿瑙勫垯 + if rule.Operator == "unsatisfy" || rule.Operator == "!="{ // 涓嶆弧瓒虫墍閫夌殑鏃堕棿瑙勫垯 formula := timeSlot.Start + "<" + am.time expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡 result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋� -- Gitblit v1.8.0