Преглед изворни кода

Merge branch 'feature_break' of algorithm/ad-engine into master

dingyunpeng пре 1 година
родитељ
комит
3509b3d983

+ 30 - 5
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/impl/PredictModelServiceImpl.java

@@ -2,9 +2,12 @@ package com.tzld.piaoquan.ad.engine.service.predict.impl;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import com.aliyun.opensearch.sdk.dependencies.org.apache.commons.lang.StringUtils;
+import com.google.common.reflect.TypeToken;
 import com.tzld.piaoquan.ad.engine.commons.enums.AppTypeEnum;
 import com.tzld.piaoquan.ad.engine.commons.redis.AlgorithmRedisHelper;
 import com.tzld.piaoquan.ad.engine.commons.util.DateUtils;
+import com.tzld.piaoquan.ad.engine.commons.util.JSONUtils;
 import com.tzld.piaoquan.ad.engine.service.predict.PredictModelService;
 import com.tzld.piaoquan.ad.engine.service.predict.config.AbConfig;
 import com.tzld.piaoquan.ad.engine.service.predict.config.RoiModelConfig;
@@ -23,10 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
 @Service
 public class PredictModelServiceImpl implements PredictModelService {
@@ -51,9 +51,34 @@ public class PredictModelServiceImpl implements PredictModelService {
 
     @Value("${ad.predict.break.switch:false}")
     private boolean adPredictBreakSwitch;
+    @Value("${ad.predict.break.exp.code}")
+    private String adPredictBreakExpCode;
 
     public Map<String, Object> adPredict(ThresholdPredictModelRequestParam requestParam) {
-        if (adPredictBreakSwitch) {
+
+        boolean isHit = false;
+
+        try {
+            JSONObject object = requestParam.getAbExpInfo();
+            if (object != null) {
+                JSONArray array = object.getJSONArray("ab_test002");
+                if (array != null) {
+                    List<Map<String, String>> abExps = JSONUtils.fromJson(array.toJSONString(),
+                            new TypeToken<List<Map<String, String>>>() {
+                            }, Collections.emptyList());
+                    for (Map<String, String> abExpMap : abExps) {
+                        if (StringUtils.equals(abExpMap.get("abExpCode"), adPredictBreakExpCode)) {
+                            isHit = true;
+                            break;
+                        }
+                    }
+                }
+            }
+        } catch (Exception e) {
+            log.error("adPredict hit error", e);
+        }
+
+        if (adPredictBreakSwitch || isHit) {
             return adPredictNew(requestParam);
         } else {
             return adPredictOld(requestParam);