From 2d78b3ae67a7faa0425849f79885ea0154ceb9e2 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 01 七月 2019 18:03:36 +0800
Subject: [PATCH] 处理一下规则的不规范问题
---
ruleserver/ruleToformula.go | 23 ++++++++++++++++++-----
1 files changed, 18 insertions(+), 5 deletions(-)
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 3b584ec..aebb63a 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,14 @@
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, err := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+ if err != nil {
+ panic("寰楀埌鐨勬暟瀛﹀叕寮忎笉鍙В鏋�")
+ }
+ if !result.(bool) {
// 缁欒繖甯ф暟鎹墦涓婅鍒欑粍鏍囩
//args.RuleResult = append(args.RuleResult, Result{TaskId: taskId, RuleGroupId: groupRule.GroupId})
for k, timeEle := range TimeEleList {
@@ -367,7 +378,7 @@
// 杩欐瑕佸榻愯〃杈惧紡閲屾墍闇�瑕佺殑鎵�鏈夊弬鏁�
a.targetNum++
arg1 := Arg{obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), obj.IsYolo, obj.Rects, obj.SdkName, obj.ThftRes, obj.Liker}
- log.Println("鏀捐繘鍘荤殑arg锛�-------", arg1)
+ //log.Println("鏀捐繘鍘荤殑arg锛�-------", arg1)
a.args = append(a.args, arg1)
a.filterData = append(a.filterData, arg1)
}
@@ -587,6 +598,7 @@
// 澶勭悊鐨勯兘鏄痽olo鏁版嵁
if rule.SdkId == am.sdkId && rule.PolygonId == am.areaId { // 棣栧厛杩欐潯瑙勫垯寰楁槸杩欎釜绠楁硶鐨勮鍒欙紝鍏舵瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�
if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔�
+ log.Println("----------褰撳墠鏉′欢瑙勫垯锛�---------",rule)
var args []Arg
if rule.RuleWithPre == "&&" {
args = am.filterData
@@ -704,7 +716,8 @@
}
func timeRuleResult(rule *protomsg.Rule, am *AreaMap) LittleRuleResult {
if rule.PolygonId == am.areaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�
- if rule.SdkArgAlias == "time" { // 鍒ゆ柇鏄惁绗﹀悎鏃堕棿瑙勫垯
+ if rule.SdkArgAlias == "time_rule" { // 鍒ゆ柇鏄惁绗﹀悎鏃堕棿瑙勫垯
+ log.Println("----------褰撳墠鏃堕棿瑙勫垯锛�---------",rule)
// 鏍规嵁鏀惧�煎瓧娈甸噷瀛樼殑鏃堕棿瑙勫垯鐨刬d鍘诲彟涓�涓〃閲屾煡闇�瑕佹瘮瀵圭殑鏃堕棿娈碉紙姣斿褰撳墠鏃堕棿鏄懆涓夛紝搴旀牴鎹尯鍩焛d鏌ュ嚭鍏跺懆涓夌殑鍑犱釜甯冮槻鏃堕棿娈碉紝鏁扮粍锛�
//fmt.Println("鏃堕棿瑙勫垯鐨勬祴璇�")
now := time.Now()
--
Gitblit v1.8.0