Browse Source

fix bug 配置数据读取

gufengshou1 1 year ago
parent
commit
a915be1bde

+ 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<>();

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

@@ -47,19 +47,32 @@ public class PredictModelServiceImpl implements PredictModelService {
     @Autowired
     RoiModelConfig roiModelConfig;
 
+
+
     public  Map<String,Object> adPredict(ThresholdPredictModelRequestParam requestParam){
 
         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());
+        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;