gufengshou1 há 1 ano atrás
pai
commit
6fec19aff7

+ 0 - 1
ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/controller/ControllerAspect.java

@@ -34,7 +34,6 @@ public class ControllerAspect {
         } else {
             log.info("response result=[{}] cost=[{}]", JSONUtils.toJson(result), stopwatch.stop().elapsed(TimeUnit.MILLISECONDS));
         }
-
         TraceUtils.removeMDC();
         return result;
     }

+ 2 - 10
ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/controller/PredictController.java

@@ -28,16 +28,8 @@ public class PredictController {
 
 
     @RequestMapping("/test")
-    public void adPredictByAbTestModel(){
-
-        System.out.println("___________________________");
-        System.out.println("___________________________");
-        System.out.println("___________________________");
-        System.out.println("___________________________");
-        System.out.println("___________________________");
-        System.out.println("___________________________");
-        System.out.println("___________________________");
-        System.out.println("___________________________");
+    public String adPredictByAbTestModel(){
+        return "success"+System.currentTimeMillis();
     }
     @RequestMapping("/roi/model")
     public Map<String,Object> adPredictByRoiModel(RoiPredictModelRequestParam param){

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

@@ -86,6 +86,7 @@ public class PredictModelServiceImpl implements PredictModelService {
         result= ThresholdModelContainer.
                 getThresholdPredictModel(thresholdMixFunc.toString())
                 .predict(modelParam);
+
         return result;
     }
 

+ 8 - 8
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/model/threshold/BasicThresholdPredictModel.java

@@ -81,13 +81,13 @@ public class BasicThresholdPredictModel extends ThresholdPredictModel{
 
         Double midVideoPredictRes=ThresholdPredictCalculator.basicCalculate(calculateParam);
         int adPredict=midVideoPredictRes > threshold?2:1;
-        Map<String, Object> resul=new HashMap<>();
-        resul.put("mid_group", midGroup);
-        resul.put("group_share_rate", groupShareRate);
-        resul.put("video_share_rate", videoShareRate);
-        resul.put("mid_video_predict_res", midVideoPredictRes);
-        resul.put("threshold", threshold);
-        resul.put("ad_predict", adPredict);
-        return new HashMap<>();
+        Map<String, Object> result=new HashMap<>();
+        result.put("mid_group", midGroup);
+        result.put("group_share_rate", groupShareRate);
+        result.put("video_share_rate", videoShareRate);
+        result.put("mid_video_predict_res", midVideoPredictRes);
+        result.put("threshold", threshold);
+        result.put("ad_predict", adPredict);
+        return result;
     }
 }

+ 18 - 7
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/predict/param/RuleParamHelper.java

@@ -19,6 +19,7 @@ public class RuleParamHelper {
     SimpleDateFormat dateFormat = new SimpleDateFormat("yyyyMMdd");
     //避免空指异常及重复创建过多Obj
     Map<String,Object> defaultMap=new HashMap<>();
+    final Double zeroDefaultValue=new Double(0);
     public Double getGroupShareRate( Map<String, Object> abTestParam,Date nowDate,String midGroup){
         String nowDt = dateFormat.format(nowDate);
         String shareUserDataKey = (String) ((Map<String,Object>)
@@ -39,6 +40,9 @@ public class RuleParamHelper {
         }
 
         Double groupShareRate = redisHelper.zScore(groupShareRateKey, midGroup);
+        if(Objects.isNull(groupShareRate)){
+            groupShareRate=zeroDefaultValue;
+        }
         return groupShareRate;
     }
 
@@ -62,7 +66,9 @@ public class RuleParamHelper {
         if (videoShareRate == null) {
                 videoShareRate = redisHelper.zScore(videoShareRateKey, -1+"");
         }
-
+        if(Objects.isNull(videoShareRate)){
+            videoShareRate=zeroDefaultValue;
+        }
         return videoShareRate;
     }
 
@@ -85,9 +91,11 @@ public class RuleParamHelper {
             String redisDt = dateFormat.format(yesterday);
             groupOutRateKey = RuleRedisKeyConst.KEY_NAME_PREFIX_AD_GROUP + outUserDataKey + ":" + outUserRuleKey + ":" + redisDt;
         }
-
-
-        return redisHelper.zScore(groupOutRateKey, midGroup);
+        Double groupOutRate=redisHelper.zScore(groupOutRateKey, midGroup);
+        if(Objects.isNull(groupOutRate)){
+            groupOutRate=zeroDefaultValue;
+        }
+        return groupOutRate;
     }
 
     public Double getVideoOutRate(Map<String, Object> abTestParam,Date nowDate,Long videoId){
@@ -106,9 +114,12 @@ public class RuleParamHelper {
         }
 
         Double videoOutRate = redisHelper.zScore(videoOutRateKey, videoId.toString());
-        if (videoOutRate == null) {
+        if (Objects.isNull(videoOutRate) ) {
                 videoOutRate = redisHelper.zScore(videoOutRateKey, -1+"");
         }
+        if(Objects.isNull(videoOutRate)){
+            videoOutRate=zeroDefaultValue;
+        }
         return videoOutRate;
     }
 
@@ -122,7 +133,7 @@ public class RuleParamHelper {
     ) {
         // Check if it is a care model experiment
 //        Map<String, Object> careModelStatusParam = (Map<String, Object>) abtestParam.get("care_model_status_param");
-        Map<String, Object> careModelStatusParam = (Map<String, Object>) abtestParam.get("care_model_status_param");
+        Integer careModelStatusParam = (Integer) abtestParam.get("care_model_status_param");
         List<String> careModelAbMidGroup = (List<String>) abtestParam.get("care_model_ab_mid_group");
 
         String thresholdKeyNamePrefix;
@@ -134,7 +145,7 @@ public class RuleParamHelper {
             if (careModelStatus == null || careModelAbMidGroup.isEmpty() || "null".equals(careModelStatus)) {
                 // Missing parameters, use default
                 thresholdKeyNamePrefix = RuleRedisKeyConst.KEY_NAME_PREFIX_AD_THRESHOLD;
-            } else if (careModelStatus == (Long) careModelStatusParam.get("value") && careModelAbMidGroup.contains(midGroup)) {
+            } else if (careModelStatusParam.equals(careModelStatus.intValue()) && careModelAbMidGroup.contains(midGroup)) {
                 // Experiment matches, get the corresponding threshold
                 thresholdKeyNamePrefix = RuleRedisKeyConst.KEY_NAME_PREFIX_AD_THRESHOLD_CARE_MODEL;
             } else {