|
@@ -47,6 +47,7 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
|
@Autowired
|
|
|
RoiModelConfig roiModelConfig;
|
|
|
|
|
|
+<<<<<<< HEAD
|
|
|
public Map<String,Object> adPredict(ThresholdPredictModelRequestParam requestParam){
|
|
|
|
|
|
JSONObject object=requestParam.getAbExpInfo();
|
|
@@ -77,20 +78,46 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
|
String[] abParamArr=abConfig.getAbParams(requestParam.getAbTestCode(),requestParam.getAbExpInfo());
|
|
|
if(abParamArr==null){
|
|
|
result.put("msg","abConfig_error");
|
|
|
+=======
|
|
|
+ @Value("${ad.predict.break.switch:false}")
|
|
|
+ private boolean adPredictBreakSwitch;
|
|
|
+
|
|
|
+ public Map<String, Object> adPredict(ThresholdPredictModelRequestParam requestParam) {
|
|
|
+ if (adPredictBreakSwitch) {
|
|
|
+ return adPredictNew(requestParam);
|
|
|
+ } else {
|
|
|
+ return adPredictOld(requestParam);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, Object> adPredictNew(ThresholdPredictModelRequestParam requestParam) {
|
|
|
+//0-8不出广告
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ int hourOfDay = DateUtils.getCurrentHour();
|
|
|
+ if (hourOfDay < 8 && hourOfDay >= 0) {
|
|
|
+ result.put("ad_predict", 1);
|
|
|
+ result.put("no_ad_strategy", "no_ad_time");
|
|
|
return result;
|
|
|
}
|
|
|
- String abtestId=abParamArr[0];
|
|
|
- String abTestConfigTag=abParamArr[1];
|
|
|
|
|
|
- HashMap<String,Map<String,Object>> abConfigMap=abConfig.getAbConfigMap();
|
|
|
- Map<String,Object> abtestParam=abConfigMap.getOrDefault(abtestId+"-"+abTestConfigTag,null);
|
|
|
- if(abtestParam==null){
|
|
|
- result.put("msg","abConfig_error");
|
|
|
+ String[] abParamArr = abConfig.getAbParams(requestParam.getAbTestCode(), requestParam.getAbExpInfo());
|
|
|
+ if (abParamArr == null) {
|
|
|
+ result.put("msg", "abConfig_error");
|
|
|
+>>>>>>> 543b435 (str rov model)
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ String abtestId = abParamArr[0];
|
|
|
+ String abTestConfigTag = abParamArr[1];
|
|
|
+
|
|
|
+ HashMap<String, Map<String, Object>> abConfigMap = abConfig.getAbConfigMap();
|
|
|
+ Map<String, Object> abtestParam = abConfigMap.getOrDefault(abtestId + "-" + abTestConfigTag, null);
|
|
|
+ if (abtestParam == null) {
|
|
|
+ result.put("msg", "abConfig_error");
|
|
|
return result;
|
|
|
}
|
|
|
//市-中文
|
|
|
- requestParam.setRegion(requestParam.getRegion().replace("省",""));
|
|
|
- requestParam.setCity(requestParam.getCity().replace("市",""));
|
|
|
+ requestParam.setRegion(requestParam.getRegion().replace("省", ""));
|
|
|
+ requestParam.setCity(requestParam.getCity().replace("市", ""));
|
|
|
|
|
|
|
|
|
// Determine the group to which mid belongs
|
|
@@ -101,9 +128,14 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
|
midGroup = "mean_group";
|
|
|
}
|
|
|
|
|
|
+<<<<<<< HEAD
|
|
|
String[] noAdMidGroupList=new String[0];
|
|
|
noAdMidGroupList=((JSONArray) abtestParam.get("no_ad_mid_group_list")).toArray(noAdMidGroupList);
|
|
|
|
|
|
+=======
|
|
|
+ String[] noAdMidGroupList = new String[0];
|
|
|
+ noAdMidGroupList = ((JSONArray) abtestParam.get("no_ad_mid_group_list")).toArray(noAdMidGroupList);
|
|
|
+>>>>>>> 543b435 (str rov model)
|
|
|
boolean inNoAdGroup = false;
|
|
|
for (String group : noAdMidGroupList) {
|
|
|
if (group.equals(midGroup)) {
|
|
@@ -116,7 +148,7 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
|
// User is in the no-ad group, no ad should be shown
|
|
|
result.put("mid_group", midGroup);
|
|
|
result.put("ad_predict", 1);
|
|
|
- result.put("no_ad_strategy","no_ad_mid_group_with_video");
|
|
|
+ result.put("no_ad_strategy", "no_ad_mid_group_with_video");
|
|
|
return result;
|
|
|
}
|
|
|
|
|
@@ -133,38 +165,122 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
|
}
|
|
|
|
|
|
//设置信息
|
|
|
- ThresholdPredictModelParam modelParam=ThresholdPredictModelParam.builder()
|
|
|
+ ThresholdPredictModelParam modelParam = ThresholdPredictModelParam.builder()
|
|
|
.build();
|
|
|
- BeanUtils.copyProperties(requestParam,modelParam);
|
|
|
+ BeanUtils.copyProperties(requestParam, modelParam);
|
|
|
modelParam.setDate(new Date());
|
|
|
modelParam.setAbtestId(abtestId);
|
|
|
modelParam.setAbTestConfigTag(abTestConfigTag);
|
|
|
modelParam.setAbtestParam(abtestParam);
|
|
|
modelParam.setMidGroup(midGroup);
|
|
|
+<<<<<<< HEAD
|
|
|
Object thresholdMixFunc=abtestParam.getOrDefault("threshold_mix_func","basic");
|
|
|
result= ThresholdModelContainer.
|
|
|
+=======
|
|
|
+ result = ThresholdModelContainer.
|
|
|
+ getThresholdPredictModel("modelV2")
|
|
|
+ .predict(modelParam);
|
|
|
+
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, Object> adPredictOld(ThresholdPredictModelRequestParam requestParam) {
|
|
|
+ //0-8不出广告
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ int hourOfDay = DateUtils.getCurrentHour();
|
|
|
+ if (hourOfDay < 8 && hourOfDay >= 0) {
|
|
|
+ result.put("ad_predict", 1);
|
|
|
+ result.put("no_ad_strategy", "no_ad_time");
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ String[] abParamArr = abConfig.getAbParams(requestParam.getAbTestCode(), requestParam.getAbExpInfo());
|
|
|
+ if (abParamArr == null) {
|
|
|
+ result.put("msg", "abConfig_error");
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ String abtestId = abParamArr[0];
|
|
|
+ String abTestConfigTag = abParamArr[1];
|
|
|
+
|
|
|
+ HashMap<String, Map<String, Object>> abConfigMap = abConfig.getAbConfigMap();
|
|
|
+ Map<String, Object> abtestParam = abConfigMap.getOrDefault(abtestId + "-" + abTestConfigTag, null);
|
|
|
+ if (abtestParam == null) {
|
|
|
+ result.put("msg", "abConfig_error");
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+ //市-中文
|
|
|
+ requestParam.setRegion(requestParam.getRegion().replace("省", ""));
|
|
|
+ requestParam.setCity(requestParam.getCity().replace("市", ""));
|
|
|
+
|
|
|
+
|
|
|
+ // Determine the group to which mid belongs
|
|
|
+ String groupClassKey = (String) abtestParam.get("group_class_key");
|
|
|
+ String midGroupKeyName = RuleRedisKeyConst.KEY_NAME_PREFIX_MID_GROUP + groupClassKey + ":" + requestParam.getMid();
|
|
|
+ String midGroup = redisHelper.getString(midGroupKeyName);
|
|
|
+ if (midGroup == null) {
|
|
|
+ midGroup = "mean_group";
|
|
|
+ }
|
|
|
+
|
|
|
+ String[] noAdMidGroupList = new String[0];
|
|
|
+ noAdMidGroupList = ((JSONArray) abtestParam.get("no_ad_mid_group_list")).toArray(noAdMidGroupList);
|
|
|
+ boolean inNoAdGroup = false;
|
|
|
+ for (String group : noAdMidGroupList) {
|
|
|
+ if (group.equals(midGroup)) {
|
|
|
+ inNoAdGroup = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //不出广告组
|
|
|
+ if (inNoAdGroup) {
|
|
|
+ // User is in the no-ad group, no ad should be shown
|
|
|
+ result.put("mid_group", midGroup);
|
|
|
+ result.put("ad_predict", 1);
|
|
|
+ result.put("no_ad_strategy", "no_ad_mid_group_with_video");
|
|
|
+ return result;
|
|
|
+ }
|
|
|
+
|
|
|
+ //设置信息
|
|
|
+ ThresholdPredictModelParam modelParam = ThresholdPredictModelParam.builder()
|
|
|
+ .build();
|
|
|
+ BeanUtils.copyProperties(requestParam, modelParam);
|
|
|
+ modelParam.setDate(new Date());
|
|
|
+ modelParam.setAbtestId(abtestId);
|
|
|
+ modelParam.setAbTestConfigTag(abTestConfigTag);
|
|
|
+ modelParam.setAbtestParam(abtestParam);
|
|
|
+ modelParam.setMidGroup(midGroup);
|
|
|
+ Object thresholdMixFunc = abtestParam.getOrDefault("threshold_mix_func", "default");
|
|
|
+ result = ThresholdModelContainer.
|
|
|
+>>>>>>> 543b435 (str rov model)
|
|
|
getThresholdPredictModel(thresholdMixFunc.toString())
|
|
|
.predict(modelParam);
|
|
|
|
|
|
return result;
|
|
|
}
|
|
|
|
|
|
+<<<<<<< HEAD
|
|
|
public Map<String,Object> adRecommendPredictByRoiModel(RoiPredictModelRequestParam requestParam){
|
|
|
|
|
|
Map<String,Object> result=new HashMap<>();
|
|
|
int hourOfDay= DateUtils.getCurrentHour();
|
|
|
if(hourOfDay<8&&hourOfDay>=0){
|
|
|
+=======
|
|
|
+ public Map<String, Object> adRecommendPredictByRoiModel(RoiPredictModelRequestParam requestParam) {
|
|
|
+ //0-8不出广告
|
|
|
+ Map<String, Object> result = new HashMap<>();
|
|
|
+ int hourOfDay = DateUtils.getCurrentHour();
|
|
|
+ if (hourOfDay < 8 && hourOfDay >= 0) {
|
|
|
+>>>>>>> 543b435 (str rov model)
|
|
|
result.put("ad_predict", 1);
|
|
|
- result.put("no_ad_strategy","no_ad_time");
|
|
|
+ result.put("no_ad_strategy", "no_ad_time");
|
|
|
return result;
|
|
|
}
|
|
|
- RoiThresholdPredictModelParam modelParam=new RoiThresholdPredictModelParam();
|
|
|
- BeanUtils.copyProperties(requestParam,modelParam);
|
|
|
+ RoiThresholdPredictModelParam modelParam = new RoiThresholdPredictModelParam();
|
|
|
+ BeanUtils.copyProperties(requestParam, modelParam);
|
|
|
modelParam.setEcpm(requestParam.getAds().get(0).getEcpm());
|
|
|
modelParam.setAdId(requestParam.getAds().get(0).getAdId());
|
|
|
modelParam.setAdType(requestParam.getAds().get(0).getAdType());
|
|
|
|
|
|
- String groupClassKey = (String)((Map<String,Object>)roiModelConfig.get(AppTypeEnum.valueOf(modelParam.getAppType()).name())).get("group_class_key");
|
|
|
+ String groupClassKey = (String) ((Map<String, Object>) roiModelConfig.get(AppTypeEnum.valueOf(modelParam.getAppType()).name())).get("group_class_key");
|
|
|
String midGroupKeyName = RuleRedisKeyConst.KEY_NAME_PREFIX_MID_GROUP + groupClassKey + ":" + modelParam.getMid();
|
|
|
String midGroup = redisHelper.get(midGroupKeyName);
|
|
|
if (midGroup == null) {
|
|
@@ -178,5 +294,4 @@ public class PredictModelServiceImpl implements PredictModelService {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
}
|