Browse Source

str rov model

丁云鹏 1 year ago
parent
commit
d27b453479

+ 21 - 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,25 @@ 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) {
+        JSONObject object = requestParam.getAbExpInfo();
+        boolean isHit = false;
+        if (object != null) {
+            List<Map<String, String>> abExps = JSONUtils.fromJson(object.getString("ab_test002"),
+                    new TypeToken<List<Map<String, String>>>() {
+                    }, Collections.emptyList());
+            for (Map<String, String> abExpMap : abExps) {
+                if (StringUtils.equals(abExpMap.get("abExpCode"), adPredictBreakExpCode)) {
+                    isHit = true;
+                    break;
+                }
+            }
+        }
+
+        if (adPredictBreakSwitch || isHit) {
             return adPredictNew(requestParam);
         } else {
             return adPredictOld(requestParam);