From 300791a58cb2034fc779b74203d7e4ca5acba4d3 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期一, 09 十二月 2019 15:45:15 +0800
Subject: [PATCH] ---
---
algorithm/middleware/middleware.go | 140 +++++++++++++++++++++++++++++++---------------
1 files changed, 93 insertions(+), 47 deletions(-)
diff --git a/algorithm/middleware/middleware.go b/algorithm/middleware/middleware.go
index 802c9e3..e21e9bb 100644
--- a/algorithm/middleware/middleware.go
+++ b/algorithm/middleware/middleware.go
@@ -2,7 +2,7 @@
import (
"basic.com/pubsub/protomsg.git"
- logger "github.com/alecthomas/log4go"
+ "basic.com/valib/logger.git"
"encoding/json"
"github.com/knetic/govaluate"
"plugin"
@@ -18,6 +18,38 @@
resultSplice := []*structure.LittleRuleResult{}
sdkNames := ""
polygonId := ""
+ // 杩欐杩囩殑鏄椂闂存瑙勫垯锛堟椂闂存绛夛級
+ for j := 0; j < len(groupRule.Rules); j++ {
+ for _, sdkData := range args.Sdkdata {
+ sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
+ if err != nil {
+ logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
+ }
+ ipcId := sdk.IpcId
+ sdkName := sdk.SdkName
+ if ipcId == sdkData.IpcId {
+ for _, areaMap := range sdkData.AreaMapList {
+ ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
+ if ruleResult.Result != "" {
+ if strings.Contains(ruleResult.Result, "false") {
+ return false,"","" // 涓嶇鍚堟椂闂磋鍒欑殑璇濈洿鎺ヨ繑鍥烇紝涓嶅啀娴垂鏃堕棿
+ }
+ if strings.Contains(ruleResult.Result, "true") {
+ areaMap.IsEffective = true
+ }
+ //logger.Info("鏃堕棿瑙勫垯缁撴灉锛�", ruleResult.Result)
+ if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
+ sdkNames = sdkName + " "
+ }
+ if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
+ polygonId += groupRule.Rules[j].PolygonId + ","
+ }
+ resultSplice = append(resultSplice, &ruleResult)
+ }
+ }
+ }
+ }
+ }
// 鍏堣繃瀹屾潯浠惰鍒�
for j := 0; j < len(groupRule.Rules); j++ {
@@ -37,11 +69,11 @@
sdkName := sdk.SdkName
//logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId)
if ipcId == sdkData.IpcId {
- logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
+ //logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
for _, areaMap := range sdkData.AreaMapList {
ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
if ruleResult.Result != "" {
- logger.Info("鏉′欢瑙勫垯缁撴灉锛�", ruleResult.Result)
+ //logger.Info("鏉′欢瑙勫垯缁撴灉锛�", ruleResult.Result)
// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
if strings.Contains(ruleResult.Result, "true") {
areaMap.IsEffective = true
@@ -77,7 +109,7 @@
for _, areaMap := range sdkData.AreaMapList {
ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
if ruleResult.Result != "" {
- logger.Info("浜鸿劯姣斿瑙勫垯缁撴灉锛�", ruleResult.Result)
+ //logger.Info("浜鸿劯姣斿瑙勫垯缁撴灉锛�", ruleResult.Result)
// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
if strings.Contains(ruleResult.Result, "true") {
areaMap.IsEffective = true
@@ -109,11 +141,11 @@
sdkName := sdk.SdkName
//logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId)
if ipcId == sdkData.IpcId {
- logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
+ //logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
for _, areaMap := range sdkData.AreaMapList {
ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
if ruleResult.Result != "" {
- logger.Info("涓綋闈欐缁撴灉锛�", ruleResult.Result)
+ //logger.Info("涓綋闈欐缁撴灉锛�", ruleResult.Result)
// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
if strings.Contains(ruleResult.Result, "true") {
areaMap.IsEffective = true
@@ -145,11 +177,47 @@
sdkName := sdk.SdkName
//logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId)
if ipcId == sdkData.IpcId {
- logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
+ //logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
for _, areaMap := range sdkData.AreaMapList {
ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
if ruleResult.Result != "" {
- logger.Info("杞︾墝缁撴灉锛�", ruleResult.Result)
+ //logger.Info("杞︾墝缁撴灉锛�", ruleResult.Result)
+ // 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
+ if strings.Contains(ruleResult.Result, "true") {
+ areaMap.IsEffective = true
+ }
+ // 濡傛灉姝ょ粨鏋滀负鐪熶笖褰撳墠杩囩殑鏄痽olo绠楁硶锛屽簲璁颁笅姝よ鍒欐墍瀵瑰簲鐨剆dkName,鍙﹀锛岃繕瑕佸幓閲� (鍚庡姞锛氭妸姝ゆ潯瑙︾鐨勫尯鍩焛d涔熻褰曚笅鏉�)
+ if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
+ sdkNames = sdkName + " "
+ }
+ if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
+ polygonId += groupRule.Rules[j].PolygonId + ","
+ }
+ resultSplice = append(resultSplice, &ruleResult)
+ }
+ }
+ }
+ }
+ }
+ }
+ // 璺ㄦ憚鍍忔満璺熻釜
+ for j := 0; j < len(groupRule.Rules); j++ {
+ if groupRule.Rules[j].SdkId == "浜轰綋璺熻釜" && groupRule.Rules[j].SdkArgAlias != "鐏甸瓊鍙傛暟"{
+ for _, sdkData := range args.Sdkdata {
+ // 鏍规嵁瑙勫垯鐨剆dkId鏌ュ嚭鍏跺搴旂殑ipcId锛岀敤ipcId鍘绘壘璇ユ瘮瀵圭殑鏁版嵁
+ sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
+ if err != nil {
+ logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
+ }
+ ipcId := sdk.IpcId
+ sdkName := sdk.SdkName
+ //logger.Info("瑙勫垯鐨刬pcId涓巗dkData鐨処pcId:", ipcId, "===", sdkData.IpcId)
+ if ipcId == sdkData.IpcId {
+ //logger.Info("褰撳墠璧扮殑瑙勫垯鏄�--锛�", groupRule.Rules[j],sdkName,groupRule.Rules[j].SdkArgAlias, "---","")
+ for _, areaMap := range sdkData.AreaMapList {
+ ruleResult := CallSo(sdk.Id, groupRule.Rules[j], areaMap,lable,args,message)
+ if ruleResult.Result != "" {
+ //logger.Info("杞︾墝缁撴灉锛�", ruleResult.Result)
// 濡傛灉缁撴灉涓虹湡锛屾妸杩欐潯瑙勫垯涓殑鍖哄煙缃负鏈夋晥
if strings.Contains(ruleResult.Result, "true") {
areaMap.IsEffective = true
@@ -186,7 +254,7 @@
if strings.Contains(ruleResult.Result, "true") {
areaMap.IsEffective = true
}
- logger.Info("鏁伴噺瑙勫垯缁撴灉锛�", ruleResult.Result)
+ //logger.Info("鏁伴噺瑙勫垯缁撴灉锛�", ruleResult.Result)
if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
sdkNames = sdkName + " "
}
@@ -200,35 +268,7 @@
}
}
}
- // 杩欐杩囩殑鏄椂闂存瑙勫垯锛堟椂闂存绛夛級
- for j := 0; j < len(groupRule.Rules); j++ {
- for _, sdkData := range args.Sdkdata {
- sdk, err := cache.GetSdkById(groupRule.Rules[j].SdkId)
- if err != nil {
- logger.Error("娌℃煡鍒皊dk鐨勪俊鎭�---", err)
- }
- ipcId := sdk.IpcId
- sdkName := sdk.SdkName
- if ipcId == sdkData.IpcId {
- for _, areaMap := range sdkData.AreaMapList {
- ruleResult := timeRuleResult(groupRule.Rules[j], areaMap)
- if ruleResult.Result != "" {
- if strings.Contains(ruleResult.Result, "true") {
- areaMap.IsEffective = true
- }
- logger.Info("鏃堕棿瑙勫垯缁撴灉锛�", ruleResult.Result)
- if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(sdkNames, sdkName) {
- sdkNames = sdkName + " "
- }
- if strings.Contains(ruleResult.Result, "true") && ipcId == "02D54B61-0F16-C604-8567-FC4BE493C523" && !strings.Contains(polygonId, groupRule.Rules[j].PolygonId) {
- polygonId += groupRule.Rules[j].PolygonId + ","
- }
- resultSplice = append(resultSplice, &ruleResult)
- }
- }
- }
- }
- }
+
// 灏嗘暟缁勬寜sort鎺掑簭
sort.Sort(ruleserver.ResultList(resultSplice))
// 鎺掑簭鍚庡彇鍚勮嚜鐨勭粨鏋滃拰杩炴帴绗︽嫾鍑鸿鍒欒〃杈惧紡寰楀嚭缁撴灉
@@ -322,21 +362,27 @@
func CallSo(sdkId string,rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others,args *structure.SdkDatas,message *protomsg.SdkMessage) structure.LittleRuleResult{
// 鏍规嵁sdkId鏌ュ嚭鍏跺搴旂殑sdk鐨剆oName锛岃皟鐢ㄧ浉搴攕o鐨凟ntrance鏂规硶
var soName = ""
- if sdkId == "812b674b-2375-4589-919a-5c1c3278a97e" {
+
+ switch sdkId {
+ case "812b674b-2375-4589-919a-5c1c3278a97e":
soName = "face.so"
- } else if sdkId == "812b674b-2375-4589-919a-5c1c3278a975"{
+ case "812b674b-2375-4589-919a-5c1c3278a975":
soName = "intrusion.so"
- } else if sdkId == "812b674b-2375-4589-919a-5c1c3278a976" || sdkId == "812b674b-2375-4589-919a-5c1c3278a973" {
+ case "812b674b-2375-4589-919a-5c1c3278a976":
soName = "personUnsual.so"
- } else if sdkId == "812b674b-2375-4589-919a-5c1c3278a972" {
+ case "812b674b-2375-4589-919a-5c1c3278a973":
+ soName = "personUnsual.so"
+ case "812b674b-2375-4589-919a-5c1c3278a972":
soName = "faceCompare.so"
- } else if sdkId == "812b674b-2375-4589-919a-5c1c3278a977" {
+ case "812b674b-2375-4589-919a-5c1c3278a977":
soName = "static.so"
- } else if sdkId == "812b674b-2375-4589-919a-5c1c3278a978" {
+ case "812b674b-2375-4589-919a-5c1c3278a978":
soName = "plate.so"
+ case "浜轰綋璺熻釜":
+ soName = "personTrack.so"
}
- //soInfo,errr := cache.GetSoInfoById(sdkId)
- //if errr != nil {
+ //soInfo,err := cache.GetSoInfoById(sdkId)
+ //if err != nil {
// panic("娌¤鍒版敞鍐岃〃")
//}
//soName := soInfo.SoName
@@ -348,7 +394,7 @@
if err1 != nil {
panic("娌℃湁鎵惧埌鍏ュ彛鍑芥暟")
}
- logger.Info("鍙戠粰so鐨勬暟鎹細",sdkId,rule.SdkArgValue,rule.Operator,rule.SdkArgAlias)
+ //logger.Info("鍙戠粰so鐨勬暟鎹細",sdkId,rule.SdkArgValue,rule.Operator,rule.SdkArgAlias)
ruleResult := f.(func(rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others, args *structure.SdkDatas,message *protomsg.SdkMessage)structure.LittleRuleResult)(rule,am,lable,args,message)
return ruleResult
}
--
Gitblit v1.8.0