From ccc6e7876e1b1235e96b95c80d0fc9a2a3c1562f Mon Sep 17 00:00:00 2001 From: panlei <2799247126@qq.com> Date: 星期三, 10 七月 2019 09:44:03 +0800 Subject: [PATCH] --- --- ruleserver/ruleToformula.go | 68 ++++++++++++++++++++++++--------- 1 files changed, 49 insertions(+), 19 deletions(-) diff --git a/ruleserver/ruleToformula.go b/ruleserver/ruleToformula.go index fad176a..6727423 100644 --- a/ruleserver/ruleToformula.go +++ b/ruleserver/ruleToformula.go @@ -2,7 +2,6 @@ import ( "encoding/json" - "fmt" "ruleprocess/cache" "ruleprocess/logger" "sort" @@ -11,6 +10,7 @@ "time" bigCache "basic.com/pubsub/cache.git" + "basic.com/pubsub/cache.git/esutil" "basic.com/pubsub/protomsg.git" "github.com/knetic/govaluate" ) @@ -233,40 +233,69 @@ } } func Compare(args *SdkDatas, groupRule *protomsg.GroupRule) { - compareFlag := false + compareFlag := 0 + tableIds := "" // 鐪嬬湅鏄惁鏈夊彧閰嶄汉鑴告瘮瀵圭畻娉曚絾娌℃湁閰嶅姣斿簱鐨勮鍒欙紝濡傛灉鏈夛紝鍒欐瘮瀵瑰璞′负鍏ㄩ儴搴曞簱 for j := 0; j < len(groupRule.Rules); j++ { if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" { // 閰嶄簡浜鸿劯姣斿 - if groupRule.Rules[j].SdkArgAlias == "compareBase" { // 閰嶄簡姣斿鐨勫簳搴� - compareFlag = true + if groupRule.Rules[j].SdkArgAlias == "compareBase" && groupRule.Rules[j].SdkArgValue != "" { // 閰嶄簡姣斿搴曞簱鐨勫弬鏁颁絾娌℃湁閰嶅叏閮ㄥ簳搴� + compareFlag = 2 + tableIds = groupRule.Rules[j].SdkArgValue + "," // 鏈�鍚庝細澶氫竴涓猼ableId锛屽垏鍑烘潵鐨勬暟缁勫彇len-1灏卞彲浠� + } + if groupRule.Rules[j].SdkArgAlias == "compareBase" && groupRule.Rules[j].SdkArgValue == "" { // 閰嶇殑鍙傛暟鏄瘮瀵瑰叏閮ㄥ簳搴� + compareFlag = 1 } } } - if compareFlag { - logger.Info("閰嶇疆浜嗗姣斿簳搴撳弬鏁�") - } else { + // 浣滃紛锛岀洿鎺ヨ鍏舵瘮瀵瑰叏閮ㄥ簳搴� + compareFlag = 1 + if compareFlag == 0 { logger.Info("娌℃湁閰嶇疆瀵规瘮搴曞簱鍙傛暟") + return } for j := 0; j < len(groupRule.Rules); j++ { // 鍙湁鏄汉鑴稿姣斿苟涓旈厤缃殑鍙傛暟鏄姣斿簳搴撴墠璧帮紙鑻ラ厤鐨勫姣旈槇鍊煎垯涓嶈蛋锛� - if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972" && groupRule.Rules[j].SdkArgAlias == "compareBase" { + if groupRule.Rules[j].SdkId == "812b674b-2375-4589-919a-5c1c3278a972"{ for _, sdkData := range args.Sdkdata { if sdkData.IpcId == "812b674b-2375-4589-919a-5c1c3278a97e" { // 鎼滅储鍒颁汉鑴告娴嬬殑sdkdata 鐜板湪鍏充簬浜鸿劯鐨勫彧鏈変粬涓�涓猻dk锛屽叏鎵句粬 for _, areaMap := range sdkData.AreaMapList { // 鎷垮尯鍩熶腑姣忎釜浜鸿劯鐗瑰緛鍊煎幓瀵规瘮锛屽~鍏呭叾liker if groupRule.Rules[j].PolygonId == areaMap.areaId { for _, arg := range areaMap.args { - bytes := bigCache.Getdbpersonmsg("", arg.Feature, true) - var m map[string]float32 - err1 := json.Unmarshal(bytes, &m) - if err1 != nil { - logger.Error("getBaseInfo瑙e帇閿欒", err1) + if compareFlag == 1 { + bytes := bigCache.Getdbpersonmsg("", arg.Feature, true) + var m map[string]float32 + err1 := json.Unmarshal(bytes, &m) + if err1 != nil { + logger.Error("getBaseInfo瑙e帇閿欒", err1) + } + for key, val := range m { + baseinfo,err1 := esutil.Dbpersoninfosbyid(key) + if err1 != nil { + logger.Error("鏌ヨ搴曞簱浜哄憳淇℃伅鍑洪敊",err1) + } + baseinfo.CompareScore = val + arg.Liker = append(arg.Liker, &baseinfo) + } } - for key, val := range m { - fmt.Println(key) - baseinfo := protomsg.Baseinfo{} - baseinfo.CompareScore = val - arg.Liker = append(arg.Liker, &baseinfo) + if compareFlag == 2 { + array := strings.Split(tableIds, ",") + for i := 0; i < len(array)-1; i++ { + bytes := bigCache.Getdbpersonmsg(array[i], arg.Feature, true) + var m map[string]float32 + err1 := json.Unmarshal(bytes, &m) + if err1 != nil { + logger.Error("getBaseInfo瑙e帇閿欒", err1) + } + for key, val := range m { + baseinfo, err1 := esutil.Dbpersoninfosbyid(key) + if err1 != nil { + logger.Error("鏌ヨ搴曞簱浜哄憳淇℃伅鍑洪敊",err1) + } + baseinfo.CompareScore = val + arg.Liker = append(arg.Liker, &baseinfo) + } + } } logger.Info("-------------------鎴愬姛缁檒iker璧嬪�硷細", arg.Liker) } @@ -299,7 +328,7 @@ sdkName := sdk.SdkName if ipcId == sdkData.IpcId { - logger.Info("褰撳墠璧扮殑瑙勫垯鐨勭畻娉曟槸--锛�",sdkName,"---") + logger.Info("褰撳墠璧扮殑瑙勫垯鐨勭畻娉曟槸--锛�", sdkName, "---") for _, areaMap := range sdkData.AreaMapList { ruleResult := filterRule(groupRule.Rules[j], &areaMap) if ruleResult.Result != "" { @@ -711,6 +740,7 @@ 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("--------------------缁堜簬绛夊埌浣犵殑涓嬫枃") var args []Arg if rule.RuleWithPre == "&&" { args = am.filterData -- Gitblit v1.8.0