Browse Source

Merge branch 'feature_20240605_zhaohaipeng_ad_filter_exp' of algorithm/ad-engine into master

zhaohaipeng 10 tháng trước cách đây
mục cha
commit
5335579c0b

+ 20 - 5
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VideoAdThompsonScorerV2.java

@@ -38,6 +38,7 @@ public class VideoAdThompsonScorerV2 {
     private Map<String, Double> exp666Param = new HashMap<>();
     private Map<String, Double> exp666Param = new HashMap<>();
     private Map<String, Double> exp669Param = new HashMap<>();
     private Map<String, Double> exp669Param = new HashMap<>();
     private Map<String, Object> exp670Param = new HashMap<>();
     private Map<String, Object> exp670Param = new HashMap<>();
+    private Map<String, Object> exp671Param = new HashMap<>();
     private Map<String, Object> exp672Param = new HashMap<>();
     private Map<String, Object> exp672Param = new HashMap<>();
 
 
     Random random = new Random();
     Random random = new Random();
@@ -616,9 +617,17 @@ public class VideoAdThompsonScorerV2 {
     }
     }
 
 
     public List<AdRankItem> thompsonScorerByExp672(ScoreParam param, List<AdPlatformCreativeDTO> adIdList) {
     public List<AdRankItem> thompsonScorerByExp672(ScoreParam param, List<AdPlatformCreativeDTO> adIdList) {
-        String cidRedisKey = exp672Param.getOrDefault("cidActionRedisKey", redisCreativeStatisticsPrefix).toString();
-        String vidCidRedisKey = exp672Param.getOrDefault("vidCidActionRedisKey", redisVideoCreativeStatisticsPrefix).toString();
-        double viewThreshold = Double.parseDouble(exp672Param.getOrDefault("viewThreshold", "7000").toString());
+        return statisticsScore(param, adIdList, exp672Param, 672);
+    }
+
+    public List<AdRankItem> thompsonScorerByExp671(ScoreParam param, List<AdPlatformCreativeDTO> adIdList) {
+        return statisticsScore(param, adIdList, exp671Param, 671);
+    }
+
+    private List<AdRankItem> statisticsScore(ScoreParam param, List<AdPlatformCreativeDTO> adIdList, Map<String, Object> expParam, int scoreType){
+        String cidRedisKey = expParam.getOrDefault("cidActionRedisKey", redisCreativeStatisticsPrefix).toString();
+        String vidCidRedisKey = expParam.getOrDefault("vidCidActionRedisKey", redisVideoCreativeStatisticsPrefix).toString();
+        double viewThreshold = Double.parseDouble(expParam.getOrDefault("viewThreshold", "7000").toString());
 
 
         // RedisKey前缀判断
         // RedisKey前缀判断
         if (!StringUtils.equals(redisCidActionKeyV1, cidRedisKey) && !StringUtils.equals(redisCreativeStatisticsPrefix, cidRedisKey)) {
         if (!StringUtils.equals(redisCidActionKeyV1, cidRedisKey) && !StringUtils.equals(redisCreativeStatisticsPrefix, cidRedisKey)) {
@@ -665,7 +674,7 @@ public class VideoAdThompsonScorerV2 {
                 ext.put("vidCidStatistic", JSON.toJSONString(vidCidStatistic));
                 ext.put("vidCidStatistic", JSON.toJSONString(vidCidStatistic));
                 ext.put("cpa", cpa);
                 ext.put("cpa", cpa);
             } catch (Exception e) {
             } catch (Exception e) {
-                log.error("svc=672exp, error: ", e);
+                log.error("svc=statisticsScore, error: ", e);
             }
             }
 
 
             AdRankItem item = new AdRankItem();
             AdRankItem item = new AdRankItem();
@@ -674,7 +683,7 @@ public class VideoAdThompsonScorerV2 {
             item.setScore(score);
             item.setScore(score);
             item.setExt(ext);
             item.setExt(ext);
             item.setVideoId(param.getVideoId());
             item.setVideoId(param.getVideoId());
-            item.setScore_type(672);
+            item.setScore_type(scoreType);
             item.setWeight(dto.getWeight());
             item.setWeight(dto.getWeight());
             item.setCreativeCode(dto.getCreativeCode());
             item.setCreativeCode(dto.getCreativeCode());
             result.add(item);
             result.add(item);
@@ -684,6 +693,7 @@ public class VideoAdThompsonScorerV2 {
         return result;
         return result;
     }
     }
 
 
+
     class CreativeStatistic {
     class CreativeStatistic {
 
 
         private String exp;
         private String exp;
@@ -805,6 +815,11 @@ public class VideoAdThompsonScorerV2 {
         this.exp670Param = gson.fromJson(str, Map.class);
         this.exp670Param = gson.fromJson(str, Map.class);
     }
     }
 
 
+    @Value("${ad.engine.new.thompson.exp.V2.671:{}}")
+    public void setExp671Param(String str) {
+        this.exp671Param = gson.fromJson(str, Map.class);
+    }
+
     @Value("${ad.engine.new.thompson.exp.V2.672:{}}")
     @Value("${ad.engine.new.thompson.exp.V2.672:{}}")
     public void setExp672Param(String str) {
     public void setExp672Param(String str) {
         this.exp672Param = gson.fromJson(str, Map.class);
         this.exp672Param = gson.fromJson(str, Map.class);

+ 234 - 269
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/RankServiceImpl.java

@@ -2,25 +2,25 @@ package com.tzld.piaoquan.ad.engine.service.score.impl;
 
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.alibaba.fastjson.JSONObject;
+import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
+import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
+import com.tzld.piaoquan.ad.engine.service.log.LogHubService;
 import com.tzld.piaoquan.ad.engine.service.predict.helper.NewExpInfoHelper;
 import com.tzld.piaoquan.ad.engine.service.predict.helper.NewExpInfoHelper;
 import com.tzld.piaoquan.ad.engine.service.predict.param.ThresholdPredictModelParam;
 import com.tzld.piaoquan.ad.engine.service.predict.param.ThresholdPredictModelParam;
-import com.tzld.piaoquan.ad.engine.service.log.LogHubService;
+import com.tzld.piaoquan.ad.engine.service.remote.FeatureRemoteService;
+import com.tzld.piaoquan.ad.engine.service.score.RankService;
 import com.tzld.piaoquan.ad.engine.service.score.VideoAdThompsonScorerV2;
 import com.tzld.piaoquan.ad.engine.service.score.VideoAdThompsonScorerV2;
 import com.tzld.piaoquan.ad.engine.service.score.container.AdCreativeFeatureContainer;
 import com.tzld.piaoquan.ad.engine.service.score.container.AdCreativeFeatureContainer;
 import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaContainer;
 import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaContainer;
 import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaForCpcContainer;
 import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaForCpcContainer;
 import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaV2Container;
 import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaV2Container;
+import com.tzld.piaoquan.ad.engine.service.score.convert.RequestConvert;
 import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
 import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
 import com.tzld.piaoquan.ad.engine.service.score.param.BidRankRecommendRequestParam;
 import com.tzld.piaoquan.ad.engine.service.score.param.BidRankRecommendRequestParam;
+import com.tzld.piaoquan.ad.engine.service.score.param.RankRecommendRequestParam;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdItemFeature;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdItemFeature;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
-import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
-import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
-import com.tzld.piaoquan.ad.engine.service.remote.FeatureRemoteService;
-import com.tzld.piaoquan.ad.engine.service.score.RankService;
-import com.tzld.piaoquan.ad.engine.service.score.convert.RequestConvert;
-import com.tzld.piaoquan.ad.engine.service.score.param.RankRecommendRequestParam;
 import org.slf4j.Logger;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.BeanUtils;
@@ -52,52 +52,52 @@ public class RankServiceImpl implements RankService {
     @Autowired
     @Autowired
     AdCreativeFeatureContainer adCreativeFeatureContainer;
     AdCreativeFeatureContainer adCreativeFeatureContainer;
     @Value("${ad.model.cpm.max:200}")
     @Value("${ad.model.cpm.max:200}")
-    Double cpmMax=200d;
+    Double cpmMax = 200d;
     @Value("${ad.model.cpm.min:30}")
     @Value("${ad.model.cpm.min:30}")
-    Double cpmMin=30d;
+    Double cpmMin = 30d;
     @Value("${ad.pid.cpc.exp:30}")
     @Value("${ad.pid.cpc.exp:30}")
     private String cpcPidExpCode;
     private String cpcPidExpCode;
     @Value("${ad.cvr.adjusting.exp:652}")
     @Value("${ad.cvr.adjusting.exp:652}")
     private String cvrAdjustingExpCode;
     private String cvrAdjustingExpCode;
 
 
-    public AdRankItem adItemRank(RankRecommendRequestParam request){
-        ScoreParam param= RequestConvert.requestConvert(request);
+    public AdRankItem adItemRank(RankRecommendRequestParam request) {
+        ScoreParam param = RequestConvert.requestConvert(request);
         LocalDateTime currentTime = LocalDateTime.now();
         LocalDateTime currentTime = LocalDateTime.now();
         int currentHour = currentTime.getHour();
         int currentHour = currentTime.getHour();
         int dayOfWeek = currentTime.getDayOfWeek().getValue();
         int dayOfWeek = currentTime.getDayOfWeek().getValue();
-        param.getRequestContext().setHour(currentHour+"");
-        param.getRequestContext().setWeek(dayOfWeek+"");
-        param.getRequestContext().setRegion(request.getRegion().replace("省",""));
-        param.getRequestContext().setCity(request.getCity().replace("市",""));
+        param.getRequestContext().setHour(currentHour + "");
+        param.getRequestContext().setWeek(dayOfWeek + "");
+        param.getRequestContext().setRegion(request.getRegion().replace("省", ""));
+        param.getRequestContext().setCity(request.getCity().replace("市", ""));
         param.getRequestContext().setDay(currentTime.format(dateFormatter));
         param.getRequestContext().setDay(currentTime.format(dateFormatter));
 
 
-        UserAdFeature userAdFeature=featureRemoteService.getUserAdFeature(request.getMid());
-        if(userAdFeature==null){
-            userAdFeature=new UserAdFeature();
+        UserAdFeature userAdFeature = featureRemoteService.getUserAdFeature(request.getMid());
+        if (userAdFeature == null) {
+            userAdFeature = new UserAdFeature();
         }
         }
-        Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
+        Map<Long, List<AdPlatformCreativeDTO>> groupMap = request
                 .getAdIdList()
                 .getAdIdList()
                 .stream()
                 .stream()
                 .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
                 .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
-        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
-        List<AdRankItem> rankItems=Collections.emptyList();
-        if(!cache.isEmpty()){
-            rankItems=new LinkedList<>(cache.values());
+        Map<Long, AdRankItem> cache = adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
+        List<AdRankItem> rankItems = Collections.emptyList();
+        if (!cache.isEmpty()) {
+            rankItems = new LinkedList<>(cache.values());
         }
         }
-        //避免recommend-feature出问题
-        if(rankItems==null|| rankItems.size()==0){
-            rankItems=new LinkedList<>();
-            for(Long adId:groupMap.keySet()){
-                AdRankItem item=new AdRankItem();
+        // 避免recommend-feature出问题
+        if (rankItems == null || rankItems.size() == 0) {
+            rankItems = new LinkedList<>();
+            for (Long adId : groupMap.keySet()) {
+                AdRankItem item = new AdRankItem();
                 item.setAdId(adId);
                 item.setAdId(adId);
                 item.setItemFeature(new AdItemFeature());
                 item.setItemFeature(new AdItemFeature());
                 rankItems.add(item);
                 rankItems.add(item);
             }
             }
         }
         }
-        boolean inCpcPidExp=false;
-        boolean inCvrAdjustingExp=false;
+        boolean inCpcPidExp = false;
+        boolean inCvrAdjustingExp = false;
         if (request.getAdAbExpArr() != null && request.getAdAbExpArr().size() != 0) {
         if (request.getAdAbExpArr() != null && request.getAdAbExpArr().size() != 0) {
-            for (Map<String, Object> map : request.getAdAbExpArr() ) {
+            for (Map<String, Object> map : request.getAdAbExpArr()) {
                 if (map.getOrDefault("abExpCode", "").equals(cpcPidExpCode)) {
                 if (map.getOrDefault("abExpCode", "").equals(cpcPidExpCode)) {
                     inCpcPidExp = true;
                     inCpcPidExp = true;
                 }
                 }
@@ -106,39 +106,39 @@ public class RankServiceImpl implements RankService {
                 }
                 }
             }
             }
         }
         }
-        double lambda=-1d;
-        if(inCpcPidExp){
-            for(AdRankItem item:rankItems){
+        double lambda = -1d;
+        if (inCpcPidExp) {
+            for (AdRankItem item : rankItems) {
                 try {
                 try {
-                    AdPlatformCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
+                    AdPlatformCreativeDTO dto = groupMap.get(item.getAdId()).get(0);
                     item.setBid1(dto.getBid1());
                     item.setBid1(dto.getBid1());
                     item.setBid2(dto.getBid2());
                     item.setBid2(dto.getBid2());
-                    lambda= PidLambdaForCpcContainer.getPidLambda(item.getAdId());
-                    if(lambda<0){
+                    lambda = PidLambdaForCpcContainer.getPidLambda(item.getAdId());
+                    if (lambda < 0) {
                         item.setCpa(dto.getCpa());
                         item.setCpa(dto.getCpa());
                         item.setPidLambda(1);
                         item.setPidLambda(1);
-                    }else {
-                        if(dto.getCpa()>1&&lambda<=1){
-                            lambda=2d;
+                    } else {
+                        if (dto.getCpa() > 1 && lambda <= 1) {
+                            lambda = 2d;
                         }
                         }
                         item.setCpa(lambda);
                         item.setCpa(lambda);
                         item.setPidLambda(1d);
                         item.setPidLambda(1d);
                     }
                     }
-                }catch (Exception e){
-                    log.error("rankItems info error itemId={}",item.getAdId());
+                } catch (Exception e) {
+                    log.error("rankItems info error itemId={}", item.getAdId());
                     e.printStackTrace();
                     e.printStackTrace();
                 }
                 }
             }
             }
-        }else {
-            for(AdRankItem item:rankItems){
+        } else {
+            for (AdRankItem item : rankItems) {
                 try {
                 try {
-                    AdPlatformCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
+                    AdPlatformCreativeDTO dto = groupMap.get(item.getAdId()).get(0);
                     item.setBid1(dto.getBid1());
                     item.setBid1(dto.getBid1());
                     item.setBid2(dto.getBid2());
                     item.setBid2(dto.getBid2());
                     item.setCpa(dto.getCpa());
                     item.setCpa(dto.getCpa());
                     item.setPidLambda(1d);
                     item.setPidLambda(1d);
-                }catch (Exception e){
-                    log.error("rankItems info error itemId={}",item.getAdId());
+                } catch (Exception e) {
+                    log.error("rankItems info error itemId={}", item.getAdId());
                     e.printStackTrace();
                     e.printStackTrace();
                 }
                 }
             }
             }
@@ -153,28 +153,28 @@ public class RankServiceImpl implements RankService {
         }
         }
 
 
         if (!CollectionUtils.isEmpty(rankResult)) {
         if (!CollectionUtils.isEmpty(rankResult)) {
-            JSONObject object=new JSONObject();
-            object.put("mid",request.getMid());
-            object.put("adid",rankResult.get(0).getAdId());
-            object.put("type",rankResult.get(0).getScore_type());
-            object.put("pctr",rankResult.get(0).getCtr());
-            object.put("pcvr",rankResult.get(0).getCvr());
-            object.put("score",rankResult.get(0).getScore());
-            object.put("pidLambda",rankResult.get(0).getPidLambda());
-            object.put("lrsamples",rankResult.get(0).getLrSampleString());
-            object.put("dataTime",currentTime.format(timeFormatter));
-            object.put("creativeId",rankResult.get(0).getAdId());
+            JSONObject object = new JSONObject();
+            object.put("mid", request.getMid());
+            object.put("adid", rankResult.get(0).getAdId());
+            object.put("type", rankResult.get(0).getScore_type());
+            object.put("pctr", rankResult.get(0).getCtr());
+            object.put("pcvr", rankResult.get(0).getCvr());
+            object.put("score", rankResult.get(0).getScore());
+            object.put("pidLambda", rankResult.get(0).getPidLambda());
+            object.put("lrsamples", rankResult.get(0).getLrSampleString());
+            object.put("dataTime", currentTime.format(timeFormatter));
+            object.put("creativeId", rankResult.get(0).getAdId());
             object.put("videoId", request.getVideoId());
             object.put("videoId", request.getVideoId());
             object.put("pqtId", request.getPqtId());
             object.put("pqtId", request.getPqtId());
             log.info("svc=adItemRank {}", JSONObject.toJSONString(object));
             log.info("svc=adItemRank {}", JSONObject.toJSONString(object));
             object.remove("lrsamples");
             object.remove("lrsamples");
-            if(inCpcPidExp){
-                AdPlatformCreativeDTO dto=groupMap.get(rankResult.get(0).getAdId()).get(0);
-                object.put("cpa",dto.getCpa()*dto.getBid1());
-                object.put("oCpa",dto.getCpa());
-                object.put("realECpm",rankResult.get(0).getEcpm1());
+            if (inCpcPidExp) {
+                AdPlatformCreativeDTO dto = groupMap.get(rankResult.get(0).getAdId()).get(0);
+                object.put("cpa", dto.getCpa() * dto.getBid1());
+                object.put("oCpa", dto.getCpa());
+                object.put("realECpm", rankResult.get(0).getEcpm1());
                 log.info("svc=cpc_pid obj={}", JSONObject.toJSONString(object));
                 log.info("svc=cpc_pid obj={}", JSONObject.toJSONString(object));
-            }else {
+            } else {
                 log.info("svc=pid_log obj={}", JSONObject.toJSONString(object));
                 log.info("svc=pid_log obj={}", JSONObject.toJSONString(object));
             }
             }
 
 
@@ -186,67 +186,27 @@ public class RankServiceImpl implements RankService {
                     inCvrAdjustingExp ? "cvr_adjusting" : "base_line", "531");
                     inCvrAdjustingExp ? "cvr_adjusting" : "base_line", "531");
 
 
             return rankResult.get(0);
             return rankResult.get(0);
-        }else {
-            //空返回值
+        } else {
+            // 空返回值
             return new AdRankItem();
             return new AdRankItem();
         }
         }
     }
     }
 
 
-    public AdRankItem adItemRankWithVideoAdThompson(RankRecommendRequestParam request){
-        ScoreParam param= RequestConvert.requestConvert(request);
+    public AdRankItem adItemRankWithVideoAdThompson(RankRecommendRequestParam request) {
+        ScoreParam param = RequestConvert.requestConvert(request);
         LocalDateTime currentTime = LocalDateTime.now();
         LocalDateTime currentTime = LocalDateTime.now();
         int currentHour = currentTime.getHour();
         int currentHour = currentTime.getHour();
         int dayOfWeek = currentTime.getDayOfWeek().getValue();
         int dayOfWeek = currentTime.getDayOfWeek().getValue();
-        param.getRequestContext().setHour(currentHour+"");
-        param.getRequestContext().setWeek(dayOfWeek+"");
-        param.getRequestContext().setRegion(request.getRegion().replace("省",""));
-        param.getRequestContext().setCity(request.getCity().replace("市",""));
+        param.getRequestContext().setHour(currentHour + "");
+        param.getRequestContext().setWeek(dayOfWeek + "");
+        param.getRequestContext().setRegion(request.getRegion().replace("省", ""));
+        param.getRequestContext().setCity(request.getCity().replace("市", ""));
         param.getRequestContext().setDay(currentTime.format(dateFormatter));
         param.getRequestContext().setDay(currentTime.format(dateFormatter));
 
 
-//        UserAdFeature userAdFeature=featureRemoteService.getUserAdFeature(request.getMid());
-//        if(userAdFeature==null){
-//            userAdFeature=new UserAdFeature();
-//        }
-//        Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
-//                .getAdIdList()
-//                .stream()
-//                .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
-//        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
-//        List<AdRankItem> rankItems=Collections.emptyList();
-//        if(!cache.isEmpty()){
-//            rankItems=new LinkedList<>();
-//            for (AdRankItem value : cache.values()) {
-//                value.setVideoId(request.getVideoId());
-//                rankItems.add(value);
-//            }
-//        }
-//        //避免recommend-feature出问题
-//        if(rankItems==null|| rankItems.size()==0){
-//            rankItems=new LinkedList<>();
-//            for(Long adId:groupMap.keySet()){
-//                AdRankItem item=new AdRankItem();
-//                item.setAdId(adId);
-//                item.setItemFeature(new AdItemFeature());
-//                item.setVideoId(request.getVideoId());
-//                rankItems.add(item);
-//            }
-//        }
-//        for(AdRankItem item:rankItems){
-//            try {
-//                AdPlatformCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
-//                item.setBid1(dto.getBid1());
-//                item.setBid2(dto.getBid2());
-//                item.setCpa(dto.getCpa());
-//                item.setPidLambda(1d);
-//            }catch (Exception e){
-//                log.error("rankItems info error itemId={}",item.getAdId());
-//                e.printStackTrace();
-//            }
-//        }
-        Set<String> expCodes=new HashSet<>();
+        Set<String> expCodes = new HashSet<>();
         if (request.getAdAbExpArr() != null && request.getAdAbExpArr().size() != 0) {
         if (request.getAdAbExpArr() != null && request.getAdAbExpArr().size() != 0) {
-            for (Map<String, Object> map : request.getAdAbExpArr() ) {
-                String expCode=map.getOrDefault("abExpCode","").toString();
+            for (Map<String, Object> map : request.getAdAbExpArr()) {
+                String expCode = map.getOrDefault("abExpCode", "").toString();
                 expCodes.add(expCode);
                 expCodes.add(expCode);
             }
             }
         }
         }
@@ -254,25 +214,25 @@ public class RankServiceImpl implements RankService {
                 .build();
                 .build();
         // 兜底方案
         // 兜底方案
         String abCode = "";
         String abCode = "";
-        List<AdRankItem> rankResult=null;
-        if(expCodes.contains("663")||
-                (expCodes.contains(NewExpInfoHelper.flagId)&&NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
-                        request.getAppType().toString(),request.getNewExpGroup(),"663",modelParam))){
+        List<AdRankItem> rankResult = null;
+        if (expCodes.contains("663") ||
+                (expCodes.contains(NewExpInfoHelper.flagId) && NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
+                        request.getAppType().toString(), request.getNewExpGroup(), "663", modelParam))) {
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp663(param, request.getAdIdList());
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp663(param, request.getAdIdList());
             abCode = "663";
             abCode = "663";
-        }else if(expCodes.contains("664")||
-                (expCodes.contains(NewExpInfoHelper.flagId)&&NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
-                        request.getAppType().toString(),request.getNewExpGroup(),"664",modelParam))){
+        } else if (expCodes.contains("664") ||
+                (expCodes.contains(NewExpInfoHelper.flagId) && NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
+                        request.getAppType().toString(), request.getNewExpGroup(), "664", modelParam))) {
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp664(param, request.getAdIdList());
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp664(param, request.getAdIdList());
             abCode = "664";
             abCode = "664";
-        }else if(expCodes.contains("665")||
-                (expCodes.contains(NewExpInfoHelper.flagId)&&NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
-                        request.getAppType().toString(),request.getNewExpGroup(),"665",modelParam))){
+        } else if (expCodes.contains("665") ||
+                (expCodes.contains(NewExpInfoHelper.flagId) && NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
+                        request.getAppType().toString(), request.getNewExpGroup(), "665", modelParam))) {
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp665(param, request.getAdIdList());
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp665(param, request.getAdIdList());
             abCode = "665";
             abCode = "665";
-        }else if(expCodes.contains("666")||
-                (expCodes.contains(NewExpInfoHelper.flagId)&&NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
-                        request.getAppType().toString(),request.getNewExpGroup(),"666",modelParam))){
+        } else if (expCodes.contains("666") ||
+                (expCodes.contains(NewExpInfoHelper.flagId) && NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
+                        request.getAppType().toString(), request.getNewExpGroup(), "666", modelParam))) {
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp666(param, request.getAdIdList());
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp666(param, request.getAdIdList());
             abCode = "666";
             abCode = "666";
         } else if (expCodes.contains("669") ||
         } else if (expCodes.contains("669") ||
@@ -285,9 +245,14 @@ public class RankServiceImpl implements RankService {
                         request.getAppType().toString(), request.getNewExpGroup(), "670", modelParam))) {
                         request.getAppType().toString(), request.getNewExpGroup(), "670", modelParam))) {
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp670(param, request.getAdIdList());
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp670(param, request.getAdIdList());
             abCode = "670";
             abCode = "670";
-        }else if (expCodes.contains("672") ||
+        } else if (expCodes.contains("671") ||
                 (expCodes.contains(NewExpInfoHelper.flagId) && NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
                 (expCodes.contains(NewExpInfoHelper.flagId) && NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
-                        request.getAppType().toString(), request.getNewExpGroup(), "672", modelParam))){
+                        request.getAppType().toString(), request.getNewExpGroup(), "671", modelParam))) {
+            rankResult = videoAdThompsonScorerV2.thompsonScorerByExp671(param, request.getAdIdList());
+            abCode = "671";
+        } else if (expCodes.contains("672") ||
+                (expCodes.contains(NewExpInfoHelper.flagId) && NewExpInfoHelper.checkInNewExpGroupAndSetParamIfIn(
+                        request.getAppType().toString(), request.getNewExpGroup(), "672", modelParam))) {
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp672(param, request.getAdIdList());
             rankResult = videoAdThompsonScorerV2.thompsonScorerByExp672(param, request.getAdIdList());
             abCode = "672";
             abCode = "672";
         }
         }
@@ -296,26 +261,26 @@ public class RankServiceImpl implements RankService {
         logHubService.scoreLogUpload(param, request.getAdIdList(), rankResult, request, "video_ad_thompson", abCode);
         logHubService.scoreLogUpload(param, request.getAdIdList(), rankResult, request, "video_ad_thompson", abCode);
 
 
         if (!CollectionUtils.isEmpty(rankResult)) {
         if (!CollectionUtils.isEmpty(rankResult)) {
-            JSONObject object=new JSONObject();
-            object.put("mid",request.getMid());
-            object.put("adid",rankResult.get(0).getAdId());
-            object.put("type",rankResult.get(0).getScore_type());
-            object.put("pctr",rankResult.get(0).getCtr());
-            object.put("pcvr",rankResult.get(0).getCvr());
-            object.put("score",rankResult.get(0).getScore());
-            object.put("pidLambda",rankResult.get(0).getPidLambda());
-            object.put("lrsamples",rankResult.get(0).getLrSampleString());
-            object.put("dataTime",currentTime.format(timeFormatter));
-            object.put("creativeId",rankResult.get(0).getAdId());
+            JSONObject object = new JSONObject();
+            object.put("mid", request.getMid());
+            object.put("adid", rankResult.get(0).getAdId());
+            object.put("type", rankResult.get(0).getScore_type());
+            object.put("pctr", rankResult.get(0).getCtr());
+            object.put("pcvr", rankResult.get(0).getCvr());
+            object.put("score", rankResult.get(0).getScore());
+            object.put("pidLambda", rankResult.get(0).getPidLambda());
+            object.put("lrsamples", rankResult.get(0).getLrSampleString());
+            object.put("dataTime", currentTime.format(timeFormatter));
+            object.put("creativeId", rankResult.get(0).getAdId());
             object.put("videoId", rankResult.get(0).getVideoId());
             object.put("videoId", rankResult.get(0).getVideoId());
             object.put("pqtId", request.getPqtId());
             object.put("pqtId", request.getPqtId());
             log.info("svc=videoAdThompsonRank_lr_log {}", JSONObject.toJSONString(object));
             log.info("svc=videoAdThompsonRank_lr_log {}", JSONObject.toJSONString(object));
             object.remove("lrsamples");
             object.remove("lrsamples");
-            object.put("score_500",rankResult.get(0).getTf_ctr());
-            object.put("score_1000",rankResult.get(0).getTf_cvr());
+            object.put("score_500", rankResult.get(0).getTf_ctr());
+            object.put("score_1000", rankResult.get(0).getTf_cvr());
             log.info("svc=videoAdThompsonRank_log obj={}", JSONObject.toJSONString(object));
             log.info("svc=videoAdThompsonRank_log obj={}", JSONObject.toJSONString(object));
             return rankResult.get(0);
             return rankResult.get(0);
-        }else {
+        } else {
             return new AdRankItem();
             return new AdRankItem();
         }
         }
     }
     }
@@ -323,124 +288,124 @@ public class RankServiceImpl implements RankService {
     @Override
     @Override
     public AdPlatformCreativeDTO adBidRank(BidRankRecommendRequestParam request) {
     public AdPlatformCreativeDTO adBidRank(BidRankRecommendRequestParam request) {
 
 
-        ScoreParam param= RequestConvert.requestConvert(request);
+        ScoreParam param = RequestConvert.requestConvert(request);
 
 
         LocalDateTime currentTime = LocalDateTime.now();
         LocalDateTime currentTime = LocalDateTime.now();
         int currentHour = currentTime.getHour();
         int currentHour = currentTime.getHour();
         int dayOfWeek = currentTime.getDayOfWeek().getValue();
         int dayOfWeek = currentTime.getDayOfWeek().getValue();
-        param.getRequestContext().setHour(currentHour+"");
-        param.getRequestContext().setWeek(dayOfWeek+"");
-        param.getRequestContext().setRegion(request.getRegion().replace("省",""));
-        param.getRequestContext().setCity(request.getCity().replace("市",""));
+        param.getRequestContext().setHour(currentHour + "");
+        param.getRequestContext().setWeek(dayOfWeek + "");
+        param.getRequestContext().setRegion(request.getRegion().replace("省", ""));
+        param.getRequestContext().setCity(request.getCity().replace("市", ""));
         param.getRequestContext().setDay(currentTime.format(dateFormatter));
         param.getRequestContext().setDay(currentTime.format(dateFormatter));
 
 
-        UserAdFeature userAdFeature=featureRemoteService.getUserAdFeature(request.getMid());
-        if(userAdFeature==null){
-            userAdFeature=new UserAdFeature();
+        UserAdFeature userAdFeature = featureRemoteService.getUserAdFeature(request.getMid());
+        if (userAdFeature == null) {
+            userAdFeature = new UserAdFeature();
         }
         }
-        Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
+        Map<Long, List<AdPlatformCreativeDTO>> groupMap = request
                 .getCreativeList()
                 .getCreativeList()
                 .stream()
                 .stream()
                 .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
                 .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
 
 
 
 
-        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
-        List<AdRankItem> rankItems=Collections.emptyList();
-        if(!cache.isEmpty()){
-            rankItems=new LinkedList<>(cache.values());
+        Map<Long, AdRankItem> cache = adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
+        List<AdRankItem> rankItems = Collections.emptyList();
+        if (!cache.isEmpty()) {
+            rankItems = new LinkedList<>(cache.values());
         }
         }
-        double lambda=-1d;
-        for(AdRankItem item:rankItems){
+        double lambda = -1d;
+        for (AdRankItem item : rankItems) {
             try {
             try {
-                AdPlatformCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
+                AdPlatformCreativeDTO dto = groupMap.get(item.getAdId()).get(0);
                 item.setBid1(dto.getBid1());
                 item.setBid1(dto.getBid1());
                 item.setBid2(dto.getBid2());
                 item.setBid2(dto.getBid2());
-                lambda=PidLambdaContainer.getPidLambda(item.getAdId());
-                if(lambda<0){
+                lambda = PidLambdaContainer.getPidLambda(item.getAdId());
+                if (lambda < 0) {
                     item.setCpa(dto.getCpa());
                     item.setCpa(dto.getCpa());
                     item.setPidLambda(0.6);
                     item.setPidLambda(0.6);
-                }else {
-                    if(dto.getCpa()>1&&lambda<=1){
-                        lambda=2d;
+                } else {
+                    if (dto.getCpa() > 1 && lambda <= 1) {
+                        lambda = 2d;
                     }
                     }
                     item.setCpa(lambda);
                     item.setCpa(lambda);
                     item.setPidLambda(1d);
                     item.setPidLambda(1d);
                 }
                 }
 
 
-            }catch (Exception e){
-                log.error("rankItems info error itemId={}",item.getAdId());
+            } catch (Exception e) {
+                log.error("rankItems info error itemId={}", item.getAdId());
                 e.printStackTrace();
                 e.printStackTrace();
             }
             }
         }
         }
         List<AdRankItem> rankResult;
         List<AdRankItem> rankResult;
-        if(rankItems==null|| rankItems.size()==0){
-            rankItems=new LinkedList<>();
-            for(AdPlatformCreativeDTO dto:request.getCreativeList()){
-                AdRankItem item=new AdRankItem();
+        if (rankItems == null || rankItems.size() == 0) {
+            rankItems = new LinkedList<>();
+            for (AdPlatformCreativeDTO dto : request.getCreativeList()) {
+                AdRankItem item = new AdRankItem();
                 item.setBid1(dto.getBid1());
                 item.setBid1(dto.getBid1());
                 item.setBid2(dto.getBid2());
                 item.setBid2(dto.getBid2());
                 item.setAdId(dto.getCreativeId());
                 item.setAdId(dto.getCreativeId());
                 item.setItemFeature(new AdItemFeature());
                 item.setItemFeature(new AdItemFeature());
-                lambda=PidLambdaContainer.getPidLambda(item.getAdId());
-                if(lambda<0){
+                lambda = PidLambdaContainer.getPidLambda(item.getAdId());
+                if (lambda < 0) {
                     item.setCpa(dto.getCpa());
                     item.setCpa(dto.getCpa());
                     item.setPidLambda(0.6);
                     item.setPidLambda(0.6);
-                }else {
-                    if(dto.getCpa()>1&&lambda<=1){
-                        lambda=2d;
+                } else {
+                    if (dto.getCpa() > 1 && lambda <= 1) {
+                        lambda = 2d;
                     }
                     }
                     item.setCpa(lambda);
                     item.setCpa(lambda);
                     item.setPidLambda(1d);
                     item.setPidLambda(1d);
                 }
                 }
                 rankItems.add(item);
                 rankItems.add(item);
             }
             }
-            rankResult=rankServiceThompson.rank(param, userAdFeature, rankItems,null);
-        }else {
-            rankResult=rank(param, userAdFeature, rankItems,ScorerUtils.BASE_CONF);
+            rankResult = rankServiceThompson.rank(param, userAdFeature, rankItems, null);
+        } else {
+            rankResult = rank(param, userAdFeature, rankItems, ScorerUtils.BASE_CONF);
         }
         }
 
 
-        AdRankItem topItem=rankResult.get(0);
+        AdRankItem topItem = rankResult.get(0);
 
 
-        AdPlatformCreativeDTO result= AdPlatformCreativeDTO
+        AdPlatformCreativeDTO result = AdPlatformCreativeDTO
                 .builder()
                 .builder()
                 .build();
                 .build();
-        BeanUtils.copyProperties(topItem,result);
+        BeanUtils.copyProperties(topItem, result);
         result.setCreativeId(topItem.getAdId());
         result.setCreativeId(topItem.getAdId());
         result.setPctr(topItem.getCtr());
         result.setPctr(topItem.getCtr());
         result.setPcvr(topItem.getCvr());
         result.setPcvr(topItem.getCvr());
 //        result.setCreativeCode(groupMap.get(topItem.getAdId()+"").get(0).getCreativeCode());
 //        result.setCreativeCode(groupMap.get(topItem.getAdId()+"").get(0).getCreativeCode());
         result.setCreativeCode(groupMap.get(topItem.getAdId()).get(0).getCreativeCode());
         result.setCreativeCode(groupMap.get(topItem.getAdId()).get(0).getCreativeCode());
-        double realECpm=0d;
-            //经验值 待定
+        double realECpm = 0d;
+        // 经验值 待定
 //        realECpm=topItem.getEcpm1();
 //        realECpm=topItem.getEcpm1();
-        realECpm=topItem.getEcpm2();
+        realECpm = topItem.getEcpm2();
 
 
-        if(realECpm>cpmMax/1000d){
-            realECpm=cpmMax/1000d;
+        if (realECpm > cpmMax / 1000d) {
+            realECpm = cpmMax / 1000d;
         }
         }
-        if(realECpm<cpmMin/1000d){
-            realECpm=cpmMin/1000d;
+        if (realECpm < cpmMin / 1000d) {
+            realECpm = cpmMin / 1000d;
         }
         }
         result.setEcpm2(realECpm);
         result.setEcpm2(realECpm);
-        AdPlatformCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
-        JSONObject object=new JSONObject();
-        object.put("mid",request.getMid());
-        object.put("adid",result.getCreativeId());
-        object.put("creativeCode",result.getCreativeCode());
-        object.put("type",topItem.getScore_type());
-        object.put("pctr",topItem.getCtr());
-        object.put("pcvr",topItem.getCvr());
-        object.put("lrsamples",topItem.getLrSampleString());
-        object.put("pidLambda",topItem.getPidLambda());
+        AdPlatformCreativeDTO dto = groupMap.get(topItem.getAdId()).get(0);
+        JSONObject object = new JSONObject();
+        object.put("mid", request.getMid());
+        object.put("adid", result.getCreativeId());
+        object.put("creativeCode", result.getCreativeCode());
+        object.put("type", topItem.getScore_type());
+        object.put("pctr", topItem.getCtr());
+        object.put("pcvr", topItem.getCvr());
+        object.put("lrsamples", topItem.getLrSampleString());
+        object.put("pidLambda", topItem.getPidLambda());
         object.put("videoId", request.getVideoId());
         object.put("videoId", request.getVideoId());
 
 
-        //临时加入供pid v2使用
-        object.put("realECpm",realECpm);
-        object.put("creativeId",result.getCreativeId());
-        //CPA还原
-        object.put("cpa",dto.getCpa()*dto.getBid1());
-        object.put("oCpa",dto.getCpa());
-        object.put("dataTime",currentTime.format(timeFormatter));
+        // 临时加入供pid v2使用
+        object.put("realECpm", realECpm);
+        object.put("creativeId", result.getCreativeId());
+        // CPA还原
+        object.put("cpa", dto.getCpa() * dto.getBid1());
+        object.put("oCpa", dto.getCpa());
+        object.put("dataTime", currentTime.format(timeFormatter));
         object.put("pqtId", request.getPqtId());
         object.put("pqtId", request.getPqtId());
         log.info("svc=adBidRank {}", JSONObject.toJSONString(object));
         log.info("svc=adBidRank {}", JSONObject.toJSONString(object));
         object.remove("lrsamples");
         object.remove("lrsamples");
@@ -451,128 +416,128 @@ public class RankServiceImpl implements RankService {
     @Override
     @Override
     public AdPlatformCreativeDTO adBidRankNewPid(BidRankRecommendRequestParam request) {
     public AdPlatformCreativeDTO adBidRankNewPid(BidRankRecommendRequestParam request) {
 
 
-        ScoreParam param= RequestConvert.requestConvert(request);
+        ScoreParam param = RequestConvert.requestConvert(request);
         LocalDateTime currentTime = LocalDateTime.now();
         LocalDateTime currentTime = LocalDateTime.now();
         int currentHour = currentTime.getHour();
         int currentHour = currentTime.getHour();
         int dayOfWeek = currentTime.getDayOfWeek().getValue();
         int dayOfWeek = currentTime.getDayOfWeek().getValue();
-        param.getRequestContext().setHour(currentHour+"");
-        param.getRequestContext().setWeek(dayOfWeek+"");
-        param.getRequestContext().setRegion(request.getRegion().replace("省",""));
-        param.getRequestContext().setCity(request.getCity().replace("市",""));
+        param.getRequestContext().setHour(currentHour + "");
+        param.getRequestContext().setWeek(dayOfWeek + "");
+        param.getRequestContext().setRegion(request.getRegion().replace("省", ""));
+        param.getRequestContext().setCity(request.getCity().replace("市", ""));
         param.getRequestContext().setDay(currentTime.format(dateFormatter));
         param.getRequestContext().setDay(currentTime.format(dateFormatter));
 
 
-        UserAdFeature userAdFeature=featureRemoteService.getUserAdFeature(request.getMid());
-        if(userAdFeature==null){
-            userAdFeature=new UserAdFeature();
+        UserAdFeature userAdFeature = featureRemoteService.getUserAdFeature(request.getMid());
+        if (userAdFeature == null) {
+            userAdFeature = new UserAdFeature();
         }
         }
-        Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
+        Map<Long, List<AdPlatformCreativeDTO>> groupMap = request
                 .getCreativeList()
                 .getCreativeList()
                 .stream()
                 .stream()
                 .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
                 .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
 
 
 
 
-        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
-        List<AdRankItem> rankItems=Collections.emptyList();
-        if(!cache.isEmpty()){
-            rankItems=new LinkedList<>(cache.values());
+        Map<Long, AdRankItem> cache = adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
+        List<AdRankItem> rankItems = Collections.emptyList();
+        if (!cache.isEmpty()) {
+            rankItems = new LinkedList<>(cache.values());
         }
         }
-        double lambda=-1d;
-        for(AdRankItem item:rankItems){
+        double lambda = -1d;
+        for (AdRankItem item : rankItems) {
             try {
             try {
 
 
-                AdPlatformCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
+                AdPlatformCreativeDTO dto = groupMap.get(item.getAdId()).get(0);
                 item.setBid1(dto.getBid1());
                 item.setBid1(dto.getBid1());
                 item.setBid2(dto.getBid2());
                 item.setBid2(dto.getBid2());
-                lambda=PidLambdaV2Container.getPidLambda(item.getAdId());
-                if(lambda<0){
+                lambda = PidLambdaV2Container.getPidLambda(item.getAdId());
+                if (lambda < 0) {
                     item.setCpa(dto.getCpa());
                     item.setCpa(dto.getCpa());
-                    item.setPidLambda(dto.getCpa()*0.6);
-                }else {
-                    if(dto.getCpa()>1&&lambda<=1){
-                        lambda=2d;
+                    item.setPidLambda(dto.getCpa() * 0.6);
+                } else {
+                    if (dto.getCpa() > 1 && lambda <= 1) {
+                        lambda = 2d;
                     }
                     }
                     item.setCpa(dto.getCpa());
                     item.setCpa(dto.getCpa());
                     item.setPidLambda(lambda);
                     item.setPidLambda(lambda);
                 }
                 }
 
 
-            }catch (Exception e){
-                log.error("rankItems info error itemId={}",item.getAdId());
+            } catch (Exception e) {
+                log.error("rankItems info error itemId={}", item.getAdId());
                 e.printStackTrace();
                 e.printStackTrace();
             }
             }
         }
         }
         List<AdRankItem> rankResult;
         List<AdRankItem> rankResult;
-        if(rankItems==null|| rankItems.size()==0){
-            rankItems=new LinkedList<>();
-            for(AdPlatformCreativeDTO dto:request.getCreativeList()){
-                AdRankItem item=new AdRankItem();
+        if (rankItems == null || rankItems.size() == 0) {
+            rankItems = new LinkedList<>();
+            for (AdPlatformCreativeDTO dto : request.getCreativeList()) {
+                AdRankItem item = new AdRankItem();
                 item.setBid1(dto.getBid1());
                 item.setBid1(dto.getBid1());
                 item.setBid2(dto.getBid2());
                 item.setBid2(dto.getBid2());
                 item.setAdId(dto.getCreativeId());
                 item.setAdId(dto.getCreativeId());
                 item.setItemFeature(new AdItemFeature());
                 item.setItemFeature(new AdItemFeature());
-                lambda=PidLambdaV2Container.getPidLambda(item.getAdId());
+                lambda = PidLambdaV2Container.getPidLambda(item.getAdId());
 
 
-                if(lambda<0){
+                if (lambda < 0) {
                     item.setCpa(dto.getCpa());
                     item.setCpa(dto.getCpa());
-                    item.setPidLambda(dto.getCpa()*0.6);
-                }else {
-                    if(dto.getCpa()>1&&lambda<=1){
-                        lambda=2d;
+                    item.setPidLambda(dto.getCpa() * 0.6);
+                } else {
+                    if (dto.getCpa() > 1 && lambda <= 1) {
+                        lambda = 2d;
                     }
                     }
                     item.setCpa(dto.getCpa());
                     item.setCpa(dto.getCpa());
                     item.setPidLambda(lambda);
                     item.setPidLambda(lambda);
                 }
                 }
                 rankItems.add(item);
                 rankItems.add(item);
             }
             }
-            rankResult=rankServiceThompson.rank(param, userAdFeature, rankItems,null);
-        }else {
-            rankResult=rank(param, userAdFeature, rankItems,ScorerUtils.BASE_CONF);
+            rankResult = rankServiceThompson.rank(param, userAdFeature, rankItems, null);
+        } else {
+            rankResult = rank(param, userAdFeature, rankItems, ScorerUtils.BASE_CONF);
         }
         }
 
 
-        AdRankItem topItem=rankResult.get(0);
+        AdRankItem topItem = rankResult.get(0);
 
 
-        AdPlatformCreativeDTO result= AdPlatformCreativeDTO
+        AdPlatformCreativeDTO result = AdPlatformCreativeDTO
                 .builder()
                 .builder()
                 .build();
                 .build();
-        BeanUtils.copyProperties(topItem,result);
+        BeanUtils.copyProperties(topItem, result);
         result.setCreativeId(topItem.getAdId());
         result.setCreativeId(topItem.getAdId());
         result.setPctr(topItem.getCtr());
         result.setPctr(topItem.getCtr());
         result.setPcvr(topItem.getCvr());
         result.setPcvr(topItem.getCvr());
         result.setCreativeCode(groupMap.get(topItem.getAdId()).get(0).getCreativeCode());
         result.setCreativeCode(groupMap.get(topItem.getAdId()).get(0).getCreativeCode());
-        double realECpm=0d;
-        realECpm=topItem.getEcpm2();
+        double realECpm = 0d;
+        realECpm = topItem.getEcpm2();
 
 
-        if(realECpm>cpmMax/1000d){
-            realECpm=cpmMax/1000d;
+        if (realECpm > cpmMax / 1000d) {
+            realECpm = cpmMax / 1000d;
         }
         }
-        if(realECpm<cpmMin/1000d){
-            realECpm=cpmMin/1000d;
+        if (realECpm < cpmMin / 1000d) {
+            realECpm = cpmMin / 1000d;
         }
         }
         result.setEcpm2(realECpm);
         result.setEcpm2(realECpm);
-        AdPlatformCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
-        JSONObject object=new JSONObject();
-        object.put("mid",request.getMid());
-        object.put("adid",result.getCreativeId());
-        object.put("creativeCode",result.getCreativeCode());
-        object.put("type",topItem.getScore_type());
-        object.put("pctr",topItem.getCtr());
-        object.put("pcvr",topItem.getCvr());
-        object.put("lrsamples",topItem.getLrSampleString());
-        object.put("pidLambda",topItem.getPidLambda());
-        object.put("realECpm",realECpm);
-        object.put("creativeId",result.getCreativeId());
+        AdPlatformCreativeDTO dto = groupMap.get(topItem.getAdId()).get(0);
+        JSONObject object = new JSONObject();
+        object.put("mid", request.getMid());
+        object.put("adid", result.getCreativeId());
+        object.put("creativeCode", result.getCreativeCode());
+        object.put("type", topItem.getScore_type());
+        object.put("pctr", topItem.getCtr());
+        object.put("pcvr", topItem.getCvr());
+        object.put("lrsamples", topItem.getLrSampleString());
+        object.put("pidLambda", topItem.getPidLambda());
+        object.put("realECpm", realECpm);
+        object.put("creativeId", result.getCreativeId());
         object.put("videoId", request.getVideoId());
         object.put("videoId", request.getVideoId());
-        //CPA还原
-        object.put("cpa",dto.getCpa()*dto.getBid1());
-        object.put("oCpa",dto.getCpa());
+        // CPA还原
+        object.put("cpa", dto.getCpa() * dto.getBid1());
+        object.put("oCpa", dto.getCpa());
         object.put("pqtId", request.getPqtId());
         object.put("pqtId", request.getPqtId());
-        object.put("dataTime",currentTime.format(timeFormatter));
+        object.put("dataTime", currentTime.format(timeFormatter));
         log.info("svc=adBidRankNewPid {}", JSONObject.toJSONString(object));
         log.info("svc=adBidRankNewPid {}", JSONObject.toJSONString(object));
         object.remove("lrsamples");
         object.remove("lrsamples");
         log.info("svc=pid_v2_log obj={}", JSONObject.toJSONString(object));
         log.info("svc=pid_v2_log obj={}", JSONObject.toJSONString(object));
         return result;
         return result;
     }
     }
 
 
-    public List<AdRankItem> rank (ScoreParam param, UserAdFeature userAdFeature, List<AdRankItem> rankItems,String configFile){
+    public List<AdRankItem> rank(ScoreParam param, UserAdFeature userAdFeature, List<AdRankItem> rankItems, String configFile) {
         List<AdRankItem> rankResult = ScorerUtils
         List<AdRankItem> rankResult = ScorerUtils
                 .getScorerPipeline(configFile)
                 .getScorerPipeline(configFile)
                 .scoring(param, userAdFeature, rankItems);
                 .scoring(param, userAdFeature, rankItems);