Explorar o código

Merge branch 'feature_gufengshou_20240107_predict_abInfo'

# Conflicts:
#	ad-engine-server/src/main/resources/application-prod.yml
#	ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/impl/PredictModelServiceImpl.java
gufengshou1 hai 1 ano
pai
achega
6ea2e38650

+ 1 - 1
ad-engine-server/src/main/resources/application-dev.yml

@@ -171,4 +171,4 @@ ad:
   abtest:
     time:
       plan:
-        code:555
+        code: 555

+ 1 - 1
ad-engine-server/src/main/resources/application-pre.yml

@@ -158,4 +158,4 @@ ad:
   abtest:
     time:
       plan:
-        code:555
+        code: 555

+ 2 - 2
ad-engine-server/src/main/resources/application-prod.yml

@@ -159,8 +159,8 @@ ad:
   abtest:
     time:
       plan:
-        code:555
+        code: 555
   predict:
     break:
       exp:
-        code:0
+        code: 0

+ 1 - 1
ad-engine-server/src/main/resources/application-test.yml

@@ -153,4 +153,4 @@ ad:
   abtest:
     time:
       plan:
-        code:555
+        code: 555

+ 16 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/container/AbTestConfigContainer.java

@@ -59,13 +59,16 @@ public class AbTestConfigContainer {
                 }
             }
         }
-
     }
 
     public Boolean containsCode(String code){
         return adTimePlanMap.keySet().contains(code);
     }
 
+    public Boolean containsCode(Map<String,List<JSONObject>> configMap,String code){
+        return configMap.keySet().contains(code);
+    }
+
     public Boolean inWithoutAdTime(String code,Integer hourOfDay){
         Boolean flag=false;
         for(JSONObject object:adTimePlanMap.getOrDefault(code,new ArrayList<>())){
@@ -89,6 +92,18 @@ public class AbTestConfigContainer {
     }
 
 
+    public Boolean inWithoutAdTime(Map<String,List<JSONObject>> abConfigMap,String code,Integer hourOfDay){
+
+        Boolean flag=false;
+        for(JSONObject object:abConfigMap.getOrDefault(code,new ArrayList<>())){
+            if(object.getInteger("x")<=hourOfDay&&hourOfDay<object.getInteger("y")){
+                return true;
+            }
+        }
+        //
+        return false;
+    }
+
 
     public static void main(String[] args){
         Map<String, Tuple<Integer>> map =new HashMap<>();

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

@@ -2,20 +2,18 @@ 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;
 import com.tzld.piaoquan.ad.engine.service.predict.constant.RuleRedisKeyConst;
+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.container.AbTestConfigContainer;
 import com.tzld.piaoquan.ad.engine.service.predict.container.ThresholdModelContainer;
 import com.tzld.piaoquan.ad.engine.service.predict.container.TopOneVideoContainer;
 import com.tzld.piaoquan.ad.engine.service.predict.param.RoiThresholdPredictModelParam;
+import com.tzld.piaoquan.ad.engine.service.predict.param.RuleParamHelper;
 import com.tzld.piaoquan.ad.engine.service.predict.param.ThresholdPredictModelParam;
 import com.tzld.piaoquan.ad.engine.service.predict.param.request.RoiPredictModelRequestParam;
 import com.tzld.piaoquan.ad.engine.service.predict.param.request.ThresholdPredictModelRequestParam;
@@ -86,17 +84,28 @@ public class PredictModelServiceImpl implements PredictModelService {
     }
 
     public Map<String, Object> adPredictNew(ThresholdPredictModelRequestParam requestParam) {
-        JSONObject object = requestParam.getAbExpInfo();
+        JSONObject object=requestParam.getAbExpInfo();
+        //临时解决方案
+        List<Map<String,Object>> mapList=(List)requestParam.getAbExpInfo().get("ab_test002");
+        Map<String,List<JSONObject>> configMap=new HashMap<>();
+        for(Map<String,Object> map:mapList){
+            if("555".equals(map.getOrDefault("abExpCode",""))){
+                configMap=JSONObject.parseObject(map.get("configValue").toString(),Map.class);
+                break;
+            }
+        }
         //先判断是否开启实验 和是否不出广告时间 而后判断默认0-8
-        Map<String, Object> result = new HashMap<>();
-        int hourOfDay = DateUtils.getCurrentHour();
-        Boolean condition1 = abTestConfigContainer.inAdTimeTest(requestParam.getAbExpInfo());
-        Boolean condition2 = abTestConfigContainer.containsCode(requestParam.getAbTestCode());
-        if (condition1
+        Map<String,Object> result=new HashMap<>();
+        int hourOfDay= DateUtils.getCurrentHour();
+        Boolean condition1=abTestConfigContainer.inAdTimeTest(requestParam.getAbExpInfo());
+        Boolean condition2=abTestConfigContainer.containsCode(configMap,requestParam.getAbTestCode());
+
+
+        if(condition1
                 &&
                 condition2
                 &&
-                abTestConfigContainer.inWithoutAdTime(requestParam.getAbTestCode(), hourOfDay)) {
+                abTestConfigContainer.inWithoutAdTime(configMap,requestParam.getAbTestCode(),hourOfDay)){
             result.put("ad_predict", 1);
             result.put("no_ad_strategy", "no_ad_time_with_time_plan");
             return result;
@@ -186,17 +195,28 @@ public class PredictModelServiceImpl implements PredictModelService {
 
     public Map<String, Object> adPredictOld(ThresholdPredictModelRequestParam requestParam) {
 
-        JSONObject object = requestParam.getAbExpInfo();
+        JSONObject object=requestParam.getAbExpInfo();
+        //临时解决方案
+        List<Map<String,Object>> mapList=(List)requestParam.getAbExpInfo().get("ab_test002");
+        Map<String,List<JSONObject>> configMap=new HashMap<>();
+        for(Map<String,Object> map:mapList){
+            if("555".equals(map.getOrDefault("abExpCode",""))){
+                configMap=JSONObject.parseObject(map.get("configValue").toString(),Map.class);
+                break;
+            }
+        }
         //先判断是否开启实验 和是否不出广告时间 而后判断默认0-8
-        Map<String, Object> result = new HashMap<>();
-        int hourOfDay = DateUtils.getCurrentHour();
-        Boolean condition1 = abTestConfigContainer.inAdTimeTest(requestParam.getAbExpInfo());
-        Boolean condition2 = abTestConfigContainer.containsCode(requestParam.getAbTestCode());
-        if (condition1
+        Map<String,Object> result=new HashMap<>();
+        int hourOfDay= DateUtils.getCurrentHour();
+        Boolean condition1=abTestConfigContainer.inAdTimeTest(requestParam.getAbExpInfo());
+        Boolean condition2=abTestConfigContainer.containsCode(configMap,requestParam.getAbTestCode());
+
+
+        if(condition1
                 &&
                 condition2
                 &&
-                abTestConfigContainer.inWithoutAdTime(requestParam.getAbTestCode(), hourOfDay)) {
+                abTestConfigContainer.inWithoutAdTime(configMap,requestParam.getAbTestCode(),hourOfDay)){
             result.put("ad_predict", 1);
             result.put("no_ad_strategy", "no_ad_time_with_time_plan");
             return result;