From ad2e1e137b7f897f3e623db811466d3fa8c8e2d7 Mon Sep 17 00:00:00 2001
From: panlei <2799247126@qq.com>
Date: 星期二, 19 十一月 2019 14:14:10 +0800
Subject: [PATCH] 字典缓存
---
algorithm/face/face.go | 81 ++++++++++++++++++++++------------------
1 files changed, 44 insertions(+), 37 deletions(-)
diff --git a/algorithm/face/face.go b/algorithm/face/face.go
index 53a3801..6a90334 100644
--- a/algorithm/face/face.go
+++ b/algorithm/face/face.go
@@ -2,42 +2,47 @@
import (
"basic.com/pubsub/protomsg.git"
+ "basic.com/valib/logger.git"
"github.com/knetic/govaluate"
- "ruleprocess/logger"
"ruleprocess/structure"
"strconv"
)
// 浜鸿劯绠楁硶
-func Entrance(rule *protomsg.Rule, am *structure.AreaMap) structure.LittleRuleResult {
- logger.Debug("---------璧颁簡浜鸿劯绠楁硶")
+func Entrance(rule *protomsg.Rule, am *structure.AreaMap,lable *structure.Others,args *structure.SdkDatas,message *protomsg.SdkMessage) structure.LittleRuleResult {
+ logger.Debug("---------璧颁簡浜鸿劯妫�娴嬬畻娉�",rule.Id,rule.SdkArgAlias,rule.Operator,rule.SdkArgValue,am.AreaId)
return filterRule(rule,am)
}
// 杩囨护瑙勫垯鍏堢瓫閫夊嚭绗﹀悎鏉′欢鐨勭洰鏍囨暟閲�
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 rule.SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && rule.SdkArgAlias != "time_rule" {
+ if rule.RuleWithPre == "||" {
+ return structure.LittleRuleResult{}
+ } else {
+ //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 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)
@@ -51,6 +56,7 @@
//logger.Info("杩囨护鍚庣殑args鐨勯暱搴︿负锛�",len(args))
} else {
args = am.Args
+ //涓嶆竻绌轰箣鍓嶇殑杩囨护鏁版嵁锛岀户缁
//logger.Info("娌¤繃婊ょ殑args鐨勯暱搴︿负锛�",len(args))
}
// 鍏堟竻绌鸿繃婊ゅ悗鐨勬暟鎹紝鍐嶅線閲屽鏈杩囨护鍚庣殑鏁版嵁
@@ -58,15 +64,16 @@
//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)
+ switch rule.SdkArgAlias {
+ case "score":
+ formula = strconv.FormatFloat(arg.Score, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue
+ logger.Info("鐩镐技搴﹀皬鍏紡锛�", formula)
+ case "proportion":
+ formula = strconv.FormatFloat(arg.Proportion, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue
+ logger.Info("鍗犳瘮鍏紡锛�", formula)
+ case "size":
+ formula = strconv.FormatFloat(arg.Size, 'f', -1, 64) + " " + rule.Operator + " " + rule.SdkArgValue
+ logger.Info("灏哄灏忓叕寮忥細", formula)
}
expression, _ := govaluate.NewEvaluableExpression(formula) // 寰楀埌鏁板鍏紡
result, _ := expression.Evaluate(nil) // 寰楀埌鏁板鍏紡鐨勭粨鏋�
@@ -82,16 +89,16 @@
} else {
return structure.LittleRuleResult{am.SdkName, rule.RuleWithPre + "" + "false", rule.Sort}
}
- } else {
- return structure.LittleRuleResult{}
}
- } else {
- return structure.LittleRuleResult{}
+ } else if rule.SdkArgAlias == "" { // 浠�涔堝弬鏁伴兘涓嶉厤鐨勬儏鍐�
+ 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{}
}
+ }
+ return structure.LittleRuleResult{}
}
\ No newline at end of file
--
Gitblit v1.8.0