From 31d7fc909556fe4116b63e3e6b9344e0513070b5 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期五, 16 八月 2019 15:33:05 +0800
Subject: [PATCH] 抽出人脸算法,并挂载新算法
---
ruleserver/ruleToformula.go | 314 ++++++++++++++++++++++++++--------------------------
algorithm/face/face.go | 8
ruleserver/readyDataForRule.go | 35 +++++
3 files changed, 194 insertions(+), 163 deletions(-)
diff --git a/algorithm/face/face.go b/algorithm/face/face.go
index f1059aa..3b61f43 100644
--- a/algorithm/face/face.go
+++ b/algorithm/face/face.go
@@ -7,9 +7,9 @@
"ruleprocess/structure"
"strconv"
)
-
-func Entrance () {
-
+// 浜鸿劯绠楁硶
+func Entrance(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult {
+ return filterRule(rule,am)
}
// 杩囨护瑙勫垯鍏堢瓫閫夊嚭绗﹀悎鏉′欢鐨勭洰鏍囨暟閲�
@@ -18,7 +18,7 @@
//logger.Info("瑙勫垯鐨勭畻娉昳d鍜屽尯鍩熺殑绠楁硶id锛�", rule.SdkId, "===", am.sdkId)
if rule.PolygonId == am.AreaId { // 绠楁硶鍜屽尯鍩熼兘寰楀鐨勪笂
- if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule"{
+ if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule"{ // 浜鸿劯姣斿
//logger.Debug("褰撳墠灏忚鍒欐槸锛�",rule)
flag := "false"
// 鎶婃病鏈夌浉浼艰�呯殑浜鸿劯浠巉ilterData涓垹闄�
diff --git a/ruleserver/readyDataForRule.go b/ruleserver/readyDataForRule.go
index 3e4b712..f9bba68 100644
--- a/ruleserver/readyDataForRule.go
+++ b/ruleserver/readyDataForRule.go
@@ -5,6 +5,7 @@
"basic.com/pubsub/cache.git/esutil"
"basic.com/pubsub/protomsg.git"
"encoding/json"
+ "errors"
"fmt"
"github.com/go-yaml/yaml"
"io/ioutil"
@@ -12,6 +13,7 @@
"nanomsg.org/go-mangos"
"nanomsg.org/go-mangos/protocol/req"
"nanomsg.org/go-mangos/transport/tcp"
+ "net"
"os"
"ruleprocess/cache"
"ruleprocess/logger"
@@ -154,7 +156,8 @@
CompareThreshold:compareThreshold,
Source:false,
}
- bytes := Push("tcp://192.168.1.182:40010",comArg,sock)
+ serverIp, _ := GetLocalIP()
+ bytes := Push("tcp://"+serverIp+":40010",comArg,sock)
var scResult protomsg.SdkCompareResult
err1 := proto.Unmarshal(bytes, &scResult)
if err1 != nil {
@@ -278,7 +281,7 @@
if threshold <= obj.Score && size <= float64(obj.Rects.Width*obj.Rects.Height) && intersectionper <= PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale) {
// 杩欐瑕佸榻愯〃杈惧紡閲屾墍闇�瑕佺殑鎵�鏈夊弬鏁�
a.TargetNum++
- arg1 := structure.Arg{obj.Id,obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), obj.IsYolo, obj.Rects, obj.Feature, obj.ThftRes, []*BaseInfo{}}
+ arg1 := structure.Arg{obj.Id,obj.Score, PgsInterPercent(areaPoints, obj.Rects, widthScale, heigthScale), float64(obj.Rects.Width * obj.Rects.Height), obj.IsYolo, obj.Rects, obj.Feature, obj.ThftRes, []*structure.BaseInfo{}}
//logger.Println("鏀捐繘鍘荤殑arg锛�-------", arg1)
a.Args = append(a.Args, &arg1)
a.FilterData = append(a.FilterData, &arg1)
@@ -343,3 +346,31 @@
logger.Debug("鏁版嵁鎺ㄩ�佹垚鍔燂紒鏀跺埌鍝嶅簲,鏁版嵁闀垮害涓猴細",len(msg))
return msg
}
+
+// 鑾峰彇鏈満ip
+func GetLocalIP() (ipv4 string, err error) {
+ var (
+ addrs []net.Addr
+ addr net.Addr
+ ipNet *net.IPNet // IP鍦板潃
+ isIpNet bool
+ )
+ // 鑾峰彇鎵�鏈夌綉鍗�
+ if addrs, err = net.InterfaceAddrs(); err != nil {
+ return
+ }
+ // 鍙栫涓�涓潪lo鐨勭綉鍗P
+ for _, addr = range addrs {
+ // 杩欎釜缃戠粶鍦板潃鏄疘P鍦板潃: ipv4, ipv6
+ if ipNet, isIpNet = addr.(*net.IPNet); isIpNet && !ipNet.IP.IsLoopback() {
+ // 璺宠繃IPV6
+ if ipNet.IP.To4() != nil {
+ ipv4 = ipNet.IP.String() // 192.168.1.1
+ return
+ }
+ }
+ }
+
+ err = errors.New("ipv4 not found")
+ return
+}
\ No newline at end of file
diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go
index 8ddec65..1305b1a 100644
--- a/ruleserver/ruleToformula.go
+++ b/ruleserver/ruleToformula.go
@@ -112,7 +112,7 @@
}
}
}
-
+ return false
}
func CallSo(sdkId string,rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult{
@@ -126,7 +126,7 @@
if err1 != nil {
panic("娌℃湁鎵惧埌鍏ュ彛鍑芥暟")
}
- ruleResult := f.(func(rule *protomsg.Rule, am *structure.AreaMap))(rule,am)
+ ruleResult := f.(func(rule *protomsg.Rule, am *structure.AreaMap)structure.LittleRuleResult)(rule,am)
return ruleResult
}
@@ -156,7 +156,7 @@
if ipcId == sdkData.IpcId {
//logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", sdkName, "---","")
for _, areaMap := range sdkData.AreaMapList {
- ruleResult := filterRule(groupRule.Rules[j], areaMap)
+ ruleResult := CallSo(sdk.Id,groupRule.Rules[j],areaMap)
if ruleResult.Result != "" {
logger.Info("鏉′欢瑙勫垯缁撴灉锛�", ruleResult.Result)
// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
@@ -190,7 +190,7 @@
sdkName := sdk.SdkName
if ipcId == sdkData.IpcId {
for _, areaMap := range sdkData.AreaMapList {
- ruleResult := transferParameters(groupRule.Rules[j], areaMap)
+ ruleResult := CallSo(sdk.Id,groupRule.Rules[j],areaMap)
if ruleResult.Result != "" {
if strings.Contains(ruleResult.Result, "true") {
areaMap.IsEffective = true
@@ -340,7 +340,7 @@
} else {
// 缁撴灉涓哄亣鏃朵篃瑕佽蛋锛屾湁鏃跺�欎负鍋囩殑鐘舵�佸弽杞暟鎹篃闇�瑕佽褰曚笅鏉�
- //timeFlag := TimerAlarm(args, groupRule.GroupId, result.(bool))
+ TimerAlarm(&label, groupRule.GroupId, result.(bool))
//fmt.Println(timeFlag)
return false
}
@@ -506,134 +506,134 @@
}
// 杩囨护瑙勫垯鍏堢瓫閫夊嚭绗﹀悎鏉′欢鐨勭洰鏍囨暟閲�
-func filterRule(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult {
- if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
- // 澶勭悊鐨勬槸浜鸿劯绠楁硶 濡傛灉杩欐潯瑙勫垯閰嶇疆鐨勬槸浜鸿劯绠楁硶锛岃繃婊ゅ畬鏉′欢涔嬪悗鐩存帴寰楀嚭缁撴灉锛屽洜涓鸿偗瀹氭病鏈夋暟閲忔潯浠讹紝鑷繁鎷兼帴
- //logger.Info("瑙勫垯鐨勭畻娉昳d鍜屽尯鍩熺殑绠楁硶id锛�", rule.SdkId, "===", am.sdkId)
- if rule.PolygonId == am.AreaId { // 绠楁硶鍜屽尯鍩熼兘寰楀鐨勪笂
-
- if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule" {
- //logger.Debug("褰撳墠灏忚鍒欐槸锛�",rule)
- flag := "false"
- // 鎶婃病鏈夌浉浼艰�呯殑浜鸿劯浠巉ilterData涓垹闄�
- for index := 0; index < len(am.FilterData); {
- // 灏嗚揪涓嶅埌闃堝�肩殑鐩镐技鑰呬粠鐩镐技鑰呮暟缁勪腑鍒犻櫎
- logger.Info("鐪嬬湅鐩镐技鑰呬汉鏁帮細", len(am.FilterData[index].Liker))
- if len(am.FilterData[index].Liker) == 0 {
- // Go 璇█涓垏鐗囧垹闄ゅ厓绱犵殑鏈川鏄細浠ヨ鍒犻櫎鍏冪礌涓哄垎鐣岀偣锛屽皢鍓嶅悗涓や釜閮ㄥ垎鐨勫唴瀛橀噸鏂拌繛鎺ヨ捣鏉ャ�備笉鐢ㄦ��鐤戯紝鏁扮粍鍒犻櫎鍏冪礌灏辫繖涔堝潙鐖�
- am.FilterData = append(am.FilterData[:index], am.FilterData[index+1:]...)
- } else {
- index++
- }
- }
- if len(am.FilterData) > 0 {
- flag = "true"
- }
- logger.Info("---------浜鸿劯姣斿绗﹀悎鏉′欢鐨勬暟閲忎负锛�", len(am.FilterData))
- return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort}
- }
- if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 浜鸿劯妫�娴�
- //logger.Debug("褰撳墠灏忚鍒欐槸锛�",rule)
- if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" {
- // 濡傛灉鏄笉瑙勭煩鐨勮繛鎺ョ缁熺粺杩斿洖false 瑙勫垯涔熷彧鑳藉垽鏂汉鑴哥殑鐩镐技搴︼紝鎵�浠ヤ笉瀛樺湪鍒殑杩炴帴绗�
- if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔�
- logger.Info("-----------------------杩囪鍒欎箣鍓嶅尯鍩熷唴鐨勪汉鑴告暟閲忎负锛�", am.TargetNum)
- var args []*structure.Arg
- if rule.RuleWithPre == "&&" {
- args = am.FilterData
- //logger.Info("杩囨护鍚庣殑args鐨勯暱搴︿负锛�",len(args))
- } else {
- args = am.Args
- //logger.Info("娌¤繃婊ょ殑args鐨勯暱搴︿负锛�",len(args))
- }
- // 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁
- am.FilterData = am.FilterData[0:0]
- //logger.Info("-----------------------浜鸿劯杩囨护鐨刟rgs閲岀殑鏁伴噺锛�", len(args))
- for _, arg := range args {
- var formula string
- if rule.SdkArgAlias == "score" {
- formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
- logger.Info("褰撳墠鐩镐技搴﹀皬鍏紡锛�", formula)
- } else if rule.SdkArgAlias == "proportion" {
- formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
- logger.Info("褰撳墠鍗犳瘮灏忓叕寮忥細", formula)
- } else {
- formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
- logger.Info("褰撳墠灏哄灏忓叕寮忥細", formula)
- }
- expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
- result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
- if result.(bool) {
- am.FilterData = append(am.FilterData, arg) // 寰楀埌绗﹀悎鏉′欢鐨勮繃婊ゆ暟鎹�
- }
- }
- am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁
- logger.Info("杩囧畬鏉′欢鍚庣殑鐩爣鏁伴噺涓猴細", am.TargetNum)
- if am.TargetNum > 0 {
- logger.Info("锛侊紒锛侊紒锛侊紒锛侊紒锛佷汉鑴告娴嬫垚鍔�")
- return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort}
- } else {
- return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
- }
- } else {
- return structure.LittleRuleResult{}
- }
- } else {
- return structure.LittleRuleResult{}
- }
- } else {
- return structure.LittleRuleResult{}
- }
- } else {
- return structure.LittleRuleResult{}
- }
- } else {
- // 澶勭悊鐨勯兘鏄痽olo鏁版嵁
- if rule.PolygonId == am.AreaId { // 棣栧厛杩欐潯瑙勫垯寰楁槸杩欎釜绠楁硶鐨勮鍒欙紝鍏舵瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�
- if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔�
- var args []*structure.Arg
- if rule.RuleWithPre == "&&" {
- args = am.FilterData
- } else {
- args = am.Args
- }
- // 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁
- am.FilterData = am.FilterData[0:0]
- //logger.Debug("鐪嬬湅args锛氾細锛氾細锛�", args)
- for _, arg := range args {
- var formula string
- if rule.SdkArgAlias == "score" {
- formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
- logger.Info("褰撳墠鐩镐技搴﹀皬鍏紡锛�", formula)
- } else if rule.SdkArgAlias == "proportion" {
- formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
- logger.Info("褰撳墠鍗犳瘮灏忓叕寮忥細", formula)
- } else {
- formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
- logger.Info("褰撳墠灏哄灏忓叕寮忥細", formula)
- }
- expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
- result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
- if result.(bool) {
- am.FilterData = append(am.FilterData, arg) // 寰楀埌绗﹀悎鏉′欢鐨勮繃婊ゆ暟鎹�
- }
- }
- am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁
- if am.TargetNum > 0 {
- return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort}
- } else {
- return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
- }
-
- } else {
- return structure.LittleRuleResult{}
- }
-
- } else {
- return structure.LittleRuleResult{}
- }
- }
-}
+//func filterRule(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult {
+// if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" || rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
+// // 澶勭悊鐨勬槸浜鸿劯绠楁硶 濡傛灉杩欐潯瑙勫垯閰嶇疆鐨勬槸浜鸿劯绠楁硶锛岃繃婊ゅ畬鏉′欢涔嬪悗鐩存帴寰楀嚭缁撴灉锛屽洜涓鸿偗瀹氭病鏈夋暟閲忔潯浠讹紝鑷繁鎷兼帴
+// //logger.Info("瑙勫垯鐨勭畻娉昳d鍜屽尯鍩熺殑绠楁硶id锛�", rule.SdkId, "===", am.sdkId)
+// if rule.PolygonId == am.AreaId { // 绠楁硶鍜屽尯鍩熼兘寰楀鐨勪笂
+//
+// if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule" {
+// //logger.Debug("褰撳墠灏忚鍒欐槸锛�",rule)
+// flag := "false"
+// // 鎶婃病鏈夌浉浼艰�呯殑浜鸿劯浠巉ilterData涓垹闄�
+// for index := 0; index < len(am.FilterData); {
+// // 灏嗚揪涓嶅埌闃堝�肩殑鐩镐技鑰呬粠鐩镐技鑰呮暟缁勪腑鍒犻櫎
+// logger.Info("鐪嬬湅鐩镐技鑰呬汉鏁帮細", len(am.FilterData[index].Liker))
+// if len(am.FilterData[index].Liker) == 0 {
+// // Go 璇█涓垏鐗囧垹闄ゅ厓绱犵殑鏈川鏄細浠ヨ鍒犻櫎鍏冪礌涓哄垎鐣岀偣锛屽皢鍓嶅悗涓や釜閮ㄥ垎鐨勫唴瀛橀噸鏂拌繛鎺ヨ捣鏉ャ�備笉鐢ㄦ��鐤戯紝鏁扮粍鍒犻櫎鍏冪礌灏辫繖涔堝潙鐖�
+// am.FilterData = append(am.FilterData[:index], am.FilterData[index+1:]...)
+// } else {
+// index++
+// }
+// }
+// if len(am.FilterData) > 0 {
+// flag = "true"
+// }
+// logger.Info("---------浜鸿劯姣斿绗﹀悎鏉′欢鐨勬暟閲忎负锛�", len(am.FilterData))
+// return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + flag, rule.Sort}
+// }
+// if rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 浜鸿劯妫�娴�
+// //logger.Debug("褰撳墠灏忚鍒欐槸锛�",rule)
+// if rule.Operator == "==" || rule.Operator == ">=" || rule.Operator == "<=" || rule.Operator == "<" || rule.Operator == ">" || rule.Operator == "!=" {
+// // 濡傛灉鏄笉瑙勭煩鐨勮繛鎺ョ缁熺粺杩斿洖false 瑙勫垯涔熷彧鑳藉垽鏂汉鑴哥殑鐩镐技搴︼紝鎵�浠ヤ笉瀛樺湪鍒殑杩炴帴绗�
+// if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔�
+// logger.Info("-----------------------杩囪鍒欎箣鍓嶅尯鍩熷唴鐨勪汉鑴告暟閲忎负锛�", am.TargetNum)
+// var args []*structure.Arg
+// if rule.RuleWithPre == "&&" {
+// args = am.FilterData
+// //logger.Info("杩囨护鍚庣殑args鐨勯暱搴︿负锛�",len(args))
+// } else {
+// args = am.Args
+// //logger.Info("娌¤繃婊ょ殑args鐨勯暱搴︿负锛�",len(args))
+// }
+// // 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁
+// am.FilterData = am.FilterData[0:0]
+// //logger.Info("-----------------------浜鸿劯杩囨护鐨刟rgs閲岀殑鏁伴噺锛�", len(args))
+// for _, arg := range args {
+// var formula string
+// if rule.SdkArgAlias == "score" {
+// formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
+// logger.Info("褰撳墠鐩镐技搴﹀皬鍏紡锛�", formula)
+// } else if rule.SdkArgAlias == "proportion" {
+// formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
+// logger.Info("褰撳墠鍗犳瘮灏忓叕寮忥細", formula)
+// } else {
+// formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
+// logger.Info("褰撳墠灏哄灏忓叕寮忥細", formula)
+// }
+// expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
+// result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+// if result.(bool) {
+// am.FilterData = append(am.FilterData, arg) // 寰楀埌绗﹀悎鏉′欢鐨勮繃婊ゆ暟鎹�
+// }
+// }
+// am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁
+// logger.Info("杩囧畬鏉′欢鍚庣殑鐩爣鏁伴噺涓猴細", am.TargetNum)
+// if am.TargetNum > 0 {
+// logger.Info("锛侊紒锛侊紒锛侊紒锛侊紒锛佷汉鑴告娴嬫垚鍔�")
+// return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort}
+// } else {
+// return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
+// }
+// } else {
+// return structure.LittleRuleResult{}
+// }
+// } else {
+// return structure.LittleRuleResult{}
+// }
+// } else {
+// return structure.LittleRuleResult{}
+// }
+// } else {
+// return structure.LittleRuleResult{}
+// }
+// } else {
+// // 澶勭悊鐨勯兘鏄痽olo鏁版嵁
+// if rule.PolygonId == am.AreaId { // 棣栧厛杩欐潯瑙勫垯寰楁槸杩欎釜绠楁硶鐨勮鍒欙紝鍏舵瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�
+// if rule.SdkArgAlias == "score" || rule.SdkArgAlias == "proportion" || rule.SdkArgAlias == "size" { // 鍒ゆ柇鐨勬槸鐩镐技鍊硷紝鍗犳瘮锛屽昂瀵哥瓑杩囨护鏉′欢锛屽鏋滃啀鏈夛紝杩樺彲浠ュ啀鍔�
+// var args []*structure.Arg
+// if rule.RuleWithPre == "&&" {
+// args = am.FilterData
+// } else {
+// args = am.Args
+// }
+// // 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁
+// am.FilterData = am.FilterData[0:0]
+// //logger.Debug("鐪嬬湅args锛氾細锛氾細锛�", args)
+// for _, arg := range args {
+// var formula string
+// if rule.SdkArgAlias == "score" {
+// formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
+// logger.Info("褰撳墠鐩镐技搴﹀皬鍏紡锛�", formula)
+// } else if rule.SdkArgAlias == "proportion" {
+// formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
+// logger.Info("褰撳墠鍗犳瘮灏忓叕寮忥細", formula)
+// } else {
+// formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue // 寰楀埌瀛楃涓插叕寮�
+// logger.Info("褰撳墠灏哄灏忓叕寮忥細", formula)
+// }
+// expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
+// result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+// if result.(bool) {
+// am.FilterData = append(am.FilterData, arg) // 寰楀埌绗﹀悎鏉′欢鐨勮繃婊ゆ暟鎹�
+// }
+// }
+// am.TargetNum = len(am.FilterData) // 鎶婄鍚堟潯浠剁殑鐩爣鏁伴噺鏇存柊鍒皌argetNum瀛楁
+// if am.TargetNum > 0 {
+// return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "true", rule.Sort}
+// } else {
+// return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
+// }
+//
+// } else {
+// return structure.LittleRuleResult{}
+// }
+//
+// } else {
+// return structure.LittleRuleResult{}
+// }
+// }
+//}
// 濡傛灉鏈夋寔缁椂闂存潯浠剁淮鎶ゅ紑鍚竴涓畾鏃跺櫒
func duration(rule *protomsg.Rule, groupId string, am *structure.AreaMap, args *structure.SdkDatas, message *protomsg.SdkMessage) {
@@ -661,30 +661,30 @@
}
// 缁欐暟鎹簱鐨勮鍒欒〃杈惧紡浠e弬 args: 涓�鏉″瓙瑙勫垯锛屽尯鍩熸暟鎹�
-func transferParameters(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult {
- if rule.PolygonId == am.AreaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�
- if rule.SdkArgAlias == "objCount" { // 濡傛灉鍙傛暟鏄鍖哄煙鍐呯洰鏍囨暟閲� 鍗硑olo 浜鸿劯涓嶄細鏈夋暟閲�
- //logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule)
- //logger.Info("寰楀嚭缁撴灉闃舵", "姣旇緝鐨勮鍒欐槸锛�", rule)
- if rule.Operator == "" {
- return structure.LittleRuleResult{am.SdkName, strconv.Itoa(am.TargetNum) + "" + rule.RuleWithPre, rule.Sort} // 濡傛灉鍚庨潰涓嶈窡鎿嶄綔绗﹀氨鐩存帴杩斿洖鏁伴噺 姣斿瑕佽窡涓嬩竴涓尯鍩熸瘮杈冩暟閲忕殑灏辩洿鎺ヨ繑鍥炴湰鍖哄煙鐨勬暟閲�
- }
- //args := am.targetNum targetNum 宸叉垚鎵�鏈夌洰鏍囩殑鎬绘暟閲忥紝杩欓噷鍙畻yolo鐨�
- var num int = 0
- for _, data := range am.FilterData {
- if data.IsYolo {
- num++
- }
- }
- formula := strconv.Itoa(num) + " " + rule.Operator + " " + rule.SdkArgValue
- expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
- result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
- return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + " " + strconv.FormatBool(result.(bool)), rule.Sort}
- // 鍔犱笂鍏充簬绠楁硶鐨勫垽鏂潯浠讹紝涓嶈兘鍙湁鍏充簬瑙勫垯鐨勶紝鏈夌殑绠楁硶鏈韩灏辨槸涓�涓鍒欙紝濡備釜浣撻潤姝紝闈犲彸琛�,鎵�浠ワ紝鎷垮埌褰撳墠瀛愯鍒欑殑sdkid鏉ュ垽鏂槸鍚︽槸閭d簺鐗规畩鐨勮鍒�
- }
- }
- return structure.LittleRuleResult{}
-}
+//func transferParameters(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult {
+// if rule.PolygonId == am.AreaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�
+// if rule.SdkArgAlias == "objCount" { // 濡傛灉鍙傛暟鏄鍖哄煙鍐呯洰鏍囨暟閲� 鍗硑olo 浜鸿劯涓嶄細鏈夋暟閲�
+// //logger.Info("褰撳墠灏忚鍒欐槸锛�---------", rule)
+// //logger.Info("寰楀嚭缁撴灉闃舵", "姣旇緝鐨勮鍒欐槸锛�", rule)
+// if rule.Operator == "" {
+// return structure.LittleRuleResult{am.SdkName, strconv.Itoa(am.TargetNum) + "" + rule.RuleWithPre, rule.Sort} // 濡傛灉鍚庨潰涓嶈窡鎿嶄綔绗﹀氨鐩存帴杩斿洖鏁伴噺 姣斿瑕佽窡涓嬩竴涓尯鍩熸瘮杈冩暟閲忕殑灏辩洿鎺ヨ繑鍥炴湰鍖哄煙鐨勬暟閲�
+// }
+// //args := am.targetNum targetNum 宸叉垚鎵�鏈夌洰鏍囩殑鎬绘暟閲忥紝杩欓噷鍙畻yolo鐨�
+// var num int = 0
+// for _, data := range am.FilterData {
+// if data.IsYolo {
+// num++
+// }
+// }
+// formula := strconv.Itoa(num) + " " + rule.Operator + " " + rule.SdkArgValue
+// expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
+// result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
+// return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + " " + strconv.FormatBool(result.(bool)), rule.Sort}
+// // 鍔犱笂鍏充簬绠楁硶鐨勫垽鏂潯浠讹紝涓嶈兘鍙湁鍏充簬瑙勫垯鐨勶紝鏈夌殑绠楁硶鏈韩灏辨槸涓�涓鍒欙紝濡備釜浣撻潤姝紝闈犲彸琛�,鎵�浠ワ紝鎷垮埌褰撳墠瀛愯鍒欑殑sdkid鏉ュ垽鏂槸鍚︽槸閭d簺鐗规畩鐨勮鍒�
+// }
+// }
+// return structure.LittleRuleResult{}
+//}
func timeRuleResult(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult {
if rule.PolygonId == am.AreaId { // 棣栧厛瑙勫垯鎵�瀵瑰簲鐨勫尯鍩焛d瑕佽窡鍖哄煙鏁版嵁鐨刬d瀵圭殑涓�
if rule.SdkArgAlias == "time_rule" { // 鍒ゆ柇鏄惁绗﹀悎鏃堕棿瑙�
--
Gitblit v1.8.0