|  | @@ -1,5 +1,7 @@
 | 
	
		
			
				|  |  |  package com.tzld.piaoquan.ad.engine.service.predict.model.threshold;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +import com.alibaba.fastjson.JSONObject;
 | 
	
		
			
				|  |  | +import com.tzld.piaoquan.ad.engine.commons.util.JSONUtils;
 | 
	
		
			
				|  |  |  import com.tzld.piaoquan.ad.engine.service.predict.container.RandWContainer;
 | 
	
		
			
				|  |  |  import com.tzld.piaoquan.ad.engine.service.predict.param.ThresholdPredictModelParam;
 | 
	
		
			
				|  |  |  import org.slf4j.Logger;
 | 
	
	
		
			
				|  | @@ -21,23 +23,39 @@ public class RandomPredict667Model extends ThresholdPredictModel {
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      @Override
 | 
	
		
			
				|  |  |      public Map<String, Object> predict(ThresholdPredictModelParam modelParam) {
 | 
	
		
			
				|  |  | -        int hash=modelParam.getMid().hashCode();
 | 
	
		
			
				|  |  | -        hash=hash<0?-hash:hash;
 | 
	
		
			
				|  |  | -        double score=(hash+ RandWContainer.getRandW())%100/100d;
 | 
	
		
			
				|  |  | -        double threshold=Double.parseDouble(
 | 
	
		
			
				|  |  | -                modelParam.getExtraParam().getOrDefault(modelParam.getAppType()+"_"+modelParam.getUserExtraFuture("shareType").toString().replace("return","").replace("mids",""),-1
 | 
	
		
			
				|  |  | -                ).toString());
 | 
	
		
			
				|  |  | -        if(threshold<0d){
 | 
	
		
			
				|  |  | -            threshold=Double.parseDouble(
 | 
	
		
			
				|  |  | -                    modelParam.getExtraParam().getOrDefault("default_threshold","0.5")
 | 
	
		
			
				|  |  | -                    .toString());
 | 
	
		
			
				|  |  | +        int hash = modelParam.getMid().hashCode();
 | 
	
		
			
				|  |  | +        hash = hash < 0 ? -hash : hash;
 | 
	
		
			
				|  |  | +        double score = (hash + RandWContainer.getRandW()) % 100 / 100d;
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        String thresholdParamKey = modelParam.getAppType() + "_" + modelParam.getUserExtraFuture("shareType").toString().replace("return", "").replace("mids", "");
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        double threshold = Double.parseDouble(modelParam.getExtraParam().getOrDefault(thresholdParamKey, -1).toString());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        if (threshold < 0d) {
 | 
	
		
			
				|  |  | +            thresholdParamKey = "default_threshold";
 | 
	
		
			
				|  |  | +            threshold = Double.parseDouble(modelParam.getExtraParam().getOrDefault(thresholdParamKey, "0.5").toString());
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          Map<String, Object> result = new HashMap<>();
 | 
	
		
			
				|  |  | -        result.put("ad_predict", score<threshold?2:1);
 | 
	
		
			
				|  |  | +        result.put("ad_predict", score < threshold ? 2 : 1);
 | 
	
		
			
				|  |  |          result.put("score", score);
 | 
	
		
			
				|  |  |          result.put("threshold", threshold);
 | 
	
		
			
				|  |  |          result.put("model", initName());
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +        JSONObject logJson = new JSONObject();
 | 
	
		
			
				|  |  | +        logJson.putAll(result);
 | 
	
		
			
				|  |  | +        logJson.put("mid", modelParam.getMid());
 | 
	
		
			
				|  |  | +        logJson.put("expId", "667");
 | 
	
		
			
				|  |  | +        logJson.put("appType", modelParam.getAppType());
 | 
	
		
			
				|  |  | +        logJson.put("thresholdParamKey", thresholdParamKey);
 | 
	
		
			
				|  |  | +        logJson.put("adPlatformType", modelParam.getAdPlatformType());
 | 
	
		
			
				|  |  | +        logJson.put("abCode", modelParam.getAbTestCode());
 | 
	
		
			
				|  |  | +        logJson.put("extraParam", modelParam.getExtraParam());
 | 
	
		
			
				|  |  | +        logJson.put("shareType", modelParam.getUserExtraFuture("shareType").toString());
 | 
	
		
			
				|  |  | +        logJson.putAll(result);
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +        log.info("广告跳出选择 -- 667实验结果: {}, 参数: {}",
 | 
	
		
			
				|  |  | +                JSONUtils.toJson(result), logJson.toJSONString());
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |          return result;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 |