panlei
2019-12-13 34eb10fac7b0cc8ff4f081e9bf1ac8a3124fe0c5
algorithm/middleware/middleware.go
@@ -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("没查到sdk的信息---", 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++ {
@@ -200,35 +232,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("没查到sdk的信息---", 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))
   // 排序后取各自的结果和连接符拼出规则表达式得出结果