|  | @@ -4,14 +4,13 @@ import com.alibaba.fastjson.JSONObject;
 | 
											
												
													
														|  |  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.PidLambdaV2Container;
 |  |  import com.tzld.piaoquan.ad.engine.service.score.container.PidLambdaV2Container;
 | 
											
												
													
														|  | -import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformBidCreativeDTO;
 |  | 
 | 
											
												
													
														|  | 
 |  | +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.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.ScoreParam;
 | 
											
												
													
														|  |  import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
 |  |  import com.tzld.piaoquan.ad.engine.commons.score.ScorerUtils;
 | 
											
												
													
														|  | -import com.tzld.piaoquan.ad.engine.commons.util.CommonCollectionUtils;
 |  | 
 | 
											
												
													
														|  |  import com.tzld.piaoquan.ad.engine.service.remote.FeatureRemoteService;
 |  |  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.RankService;
 | 
											
												
													
														|  |  import com.tzld.piaoquan.ad.engine.service.score.convert.RequestConvert;
 |  |  import com.tzld.piaoquan.ad.engine.service.score.convert.RequestConvert;
 | 
											
										
											
												
													
														|  | @@ -24,11 +23,9 @@ import org.springframework.beans.factory.annotation.Value;
 | 
											
												
													
														|  |  import org.springframework.stereotype.Service;
 |  |  import org.springframework.stereotype.Service;
 | 
											
												
													
														|  |  import org.springframework.util.CollectionUtils;
 |  |  import org.springframework.util.CollectionUtils;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -import javax.annotation.PostConstruct;
 |  | 
 | 
											
												
													
														|  |  import java.time.LocalDateTime;
 |  |  import java.time.LocalDateTime;
 | 
											
												
													
														|  |  import java.time.format.DateTimeFormatter;
 |  |  import java.time.format.DateTimeFormatter;
 | 
											
												
													
														|  |  import java.util.*;
 |  |  import java.util.*;
 | 
											
												
													
														|  | -import java.util.concurrent.TimeUnit;
 |  | 
 | 
											
												
													
														|  |  import java.util.stream.Collectors;
 |  |  import java.util.stream.Collectors;
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |  @Service
 |  |  @Service
 | 
											
										
											
												
													
														|  | @@ -64,33 +61,56 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |          if(userAdFeature==null){
 |  |          if(userAdFeature==null){
 | 
											
												
													
														|  |              userAdFeature=new UserAdFeature();
 |  |              userAdFeature=new UserAdFeature();
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(request.getAdIdList());
 |  | 
 | 
											
												
													
														|  | 
 |  | +        Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
 | 
											
												
													
														|  | 
 |  | +                .getCreativeList()
 | 
											
												
													
														|  | 
 |  | +                .stream()
 | 
											
												
													
														|  | 
 |  | +                .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
 | 
											
												
													
														|  | 
 |  | +//        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(request.getAdIdList());
 | 
											
												
													
														|  | 
 |  | +        Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(new ArrayList<>(groupMap.keySet()));
 | 
											
												
													
														|  |          List<AdRankItem> rankItems=Collections.emptyList();
 |  |          List<AdRankItem> rankItems=Collections.emptyList();
 | 
											
												
													
														|  |          if(!cache.isEmpty()){
 |  |          if(!cache.isEmpty()){
 | 
											
												
													
														|  |              rankItems=new LinkedList<>(cache.values());
 |  |              rankItems=new LinkedList<>(cache.values());
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -//        List<AdRankItem> rankItems=adCreativeFeatureContainer.getAll(request.getAdIdList());
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |          //避免recommend-feature出问题
 |  |          //避免recommend-feature出问题
 | 
											
												
													
														|  |          if(rankItems==null|| rankItems.size()==0){
 |  |          if(rankItems==null|| rankItems.size()==0){
 | 
											
												
													
														|  |              rankItems=new LinkedList<>();
 |  |              rankItems=new LinkedList<>();
 | 
											
												
													
														|  | -            for(Long adId:request.getAdIdList()){
 |  | 
 | 
											
												
													
														|  | 
 |  | +            for(Long adId:groupMap.keySet()){
 | 
											
												
													
														|  |                  AdRankItem item=new AdRankItem();
 |  |                  AdRankItem item=new AdRankItem();
 | 
											
												
													
														|  |                  item.setAdId(adId);
 |  |                  item.setAdId(adId);
 | 
											
												
													
														|  |                  item.setItemFeature(new AdItemFeature());
 |  |                  item.setItemFeature(new AdItemFeature());
 | 
											
												
													
														|  |                  rankItems.add(item);
 |  |                  rankItems.add(item);
 | 
											
												
													
														|  |              }
 |  |              }
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | 
 |  | +        double lambda=-1d;
 | 
											
												
													
														|  |          for(AdRankItem item:rankItems){
 |  |          for(AdRankItem item:rankItems){
 | 
											
												
													
														|  | -            item.setBid1(1d);
 |  | 
 | 
											
												
													
														|  | -            item.setBid2(1d);
 |  | 
 | 
											
												
													
														|  | -            item.setCpa(75d);
 |  | 
 | 
											
												
													
														|  | -            item.setPidLambda(1d);
 |  | 
 | 
											
												
													
														|  | -        }
 |  | 
 | 
											
												
													
														|  | 
 |  | +            try {
 | 
											
												
													
														|  | 
 |  | +//                AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()+"").get(0);
 | 
											
												
													
														|  | 
 |  | +                AdPlatformCreativeDTO dto=groupMap.get(item.getAdId()).get(0);
 | 
											
												
													
														|  | 
 |  | +                item.setBid1(dto.getBid1());
 | 
											
												
													
														|  | 
 |  | +                item.setBid2(dto.getBid2());
 | 
											
												
													
														|  | 
 |  | +                lambda=PidLambdaContainer.getPidLambda(item.getAdId());
 | 
											
												
													
														|  | 
 |  | +                if(lambda<0){
 | 
											
												
													
														|  | 
 |  | +                    item.setCpa(dto.getCpa());
 | 
											
												
													
														|  | 
 |  | +                    item.setPidLambda(0.6);
 | 
											
												
													
														|  | 
 |  | +                }else {
 | 
											
												
													
														|  | 
 |  | +                    if(dto.getCpa()>1&&lambda<=1){
 | 
											
												
													
														|  | 
 |  | +                        lambda=2d;
 | 
											
												
													
														|  | 
 |  | +                    }
 | 
											
												
													
														|  | 
 |  | +                    item.setCpa(lambda);
 | 
											
												
													
														|  | 
 |  | +                    item.setPidLambda(1d);
 | 
											
												
													
														|  | 
 |  | +                }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | 
 |  | +            }catch (Exception e){
 | 
											
												
													
														|  | 
 |  | +                log.error("rankItems info error itemId={}",item.getAdId());
 | 
											
												
													
														|  | 
 |  | +                e.printStackTrace();
 | 
											
												
													
														|  | 
 |  | +            }
 | 
											
												
													
														|  | 
 |  | +        }
 | 
											
												
													
														|  | 
 |  | +//        for(AdRankItem item:rankItems){
 | 
											
												
													
														|  | 
 |  | +//            item.setBid1(1d);
 | 
											
												
													
														|  | 
 |  | +//            item.setBid2(1d);
 | 
											
												
													
														|  | 
 |  | +//            item.setCpa(75d);
 | 
											
												
													
														|  | 
 |  | +//            item.setPidLambda(1d);
 | 
											
												
													
														|  | 
 |  | +//        }
 | 
											
												
													
														|  |          //兜底方案
 |  |          //兜底方案
 | 
											
												
													
														|  |          List<AdRankItem> rankResult=rank(param, userAdFeature, rankItems,ScorerUtils.BASE_CONF);
 |  |          List<AdRankItem> rankResult=rank(param, userAdFeature, rankItems,ScorerUtils.BASE_CONF);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -117,7 +137,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | -    public AdPlatformBidCreativeDTO adBidRank(BidRankRecommendRequestParam request) {
 |  | 
 | 
											
												
													
														|  | 
 |  | +    public AdPlatformCreativeDTO adBidRank(BidRankRecommendRequestParam request) {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          ScoreParam param= RequestConvert.requestConvert(request);
 |  |          ScoreParam param= RequestConvert.requestConvert(request);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
										
											
												
													
														|  | @@ -134,7 +154,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |          if(userAdFeature==null){
 |  |          if(userAdFeature==null){
 | 
											
												
													
														|  |              userAdFeature=new UserAdFeature();
 |  |              userAdFeature=new UserAdFeature();
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        Map<Long,List<AdPlatformBidCreativeDTO>> groupMap=request
 |  | 
 | 
											
												
													
														|  | 
 |  | +        Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
 | 
											
												
													
														|  |                  .getCreativeList()
 |  |                  .getCreativeList()
 | 
											
												
													
														|  |                  .stream()
 |  |                  .stream()
 | 
											
												
													
														|  |                  .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
 |  |                  .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
 | 
											
										
											
												
													
														|  | @@ -149,7 +169,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |          for(AdRankItem item:rankItems){
 |  |          for(AdRankItem item:rankItems){
 | 
											
												
													
														|  |              try {
 |  |              try {
 | 
											
												
													
														|  |  //                AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()+"").get(0);
 |  |  //                AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()+"").get(0);
 | 
											
												
													
														|  | -                AdPlatformBidCreativeDTO 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());
 |  |                  lambda=PidLambdaContainer.getPidLambda(item.getAdId());
 | 
											
										
											
												
													
														|  | @@ -195,7 +215,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |          List<AdRankItem> rankResult;
 |  |          List<AdRankItem> rankResult;
 | 
											
												
													
														|  |          if(rankItems==null|| rankItems.size()==0){
 |  |          if(rankItems==null|| rankItems.size()==0){
 | 
											
												
													
														|  |              rankItems=new LinkedList<>();
 |  |              rankItems=new LinkedList<>();
 | 
											
												
													
														|  | -            for(AdPlatformBidCreativeDTO dto:request.getCreativeList()){
 |  | 
 | 
											
												
													
														|  | 
 |  | +            for(AdPlatformCreativeDTO dto:request.getCreativeList()){
 | 
											
												
													
														|  |                  AdRankItem item=new AdRankItem();
 |  |                  AdRankItem item=new AdRankItem();
 | 
											
												
													
														|  |                  item.setBid1(dto.getBid1());
 |  |                  item.setBid1(dto.getBid1());
 | 
											
												
													
														|  |                  item.setBid2(dto.getBid2());
 |  |                  item.setBid2(dto.getBid2());
 | 
											
										
											
												
													
														|  | @@ -233,7 +253,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          AdRankItem topItem=rankResult.get(0);
 |  |          AdRankItem topItem=rankResult.get(0);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        AdPlatformBidCreativeDTO result=AdPlatformBidCreativeDTO
 |  | 
 | 
											
												
													
														|  | 
 |  | +        AdPlatformCreativeDTO result= AdPlatformCreativeDTO
 | 
											
												
													
														|  |                  .builder()
 |  |                  .builder()
 | 
											
												
													
														|  |                  .build();
 |  |                  .build();
 | 
											
												
													
														|  |          BeanUtils.copyProperties(topItem,result);
 |  |          BeanUtils.copyProperties(topItem,result);
 | 
											
										
											
												
													
														|  | @@ -254,7 +274,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |              realECpm=cpmMin/1000d;
 |  |              realECpm=cpmMin/1000d;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          result.setEcpm2(realECpm);
 |  |          result.setEcpm2(realECpm);
 | 
											
												
													
														|  | -        AdPlatformBidCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        AdPlatformCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
 | 
											
												
													
														|  |          JSONObject object=new JSONObject();
 |  |          JSONObject object=new JSONObject();
 | 
											
												
													
														|  |          object.put("mid",request.getMid());
 |  |          object.put("mid",request.getMid());
 | 
											
												
													
														|  |          object.put("adid",result.getCreativeId());
 |  |          object.put("adid",result.getCreativeId());
 | 
											
										
											
												
													
														|  | @@ -278,7 +298,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  | -    public AdPlatformBidCreativeDTO 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();
 | 
											
										
											
												
													
														|  | @@ -294,7 +314,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |          if(userAdFeature==null){
 |  |          if(userAdFeature==null){
 | 
											
												
													
														|  |              userAdFeature=new UserAdFeature();
 |  |              userAdFeature=new UserAdFeature();
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  | -        Map<Long,List<AdPlatformBidCreativeDTO>> groupMap=request
 |  | 
 | 
											
												
													
														|  | 
 |  | +        Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
 | 
											
												
													
														|  |                  .getCreativeList()
 |  |                  .getCreativeList()
 | 
											
												
													
														|  |                  .stream()
 |  |                  .stream()
 | 
											
												
													
														|  |                  .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
 |  |                  .collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
 | 
											
										
											
												
													
														|  | @@ -309,7 +329,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |          for(AdRankItem item:rankItems){
 |  |          for(AdRankItem item:rankItems){
 | 
											
												
													
														|  |              try {
 |  |              try {
 | 
											
												
													
														|  |  //                AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()+"").get(0);
 |  |  //                AdPlatformBidCreativeDTO dto=groupMap.get(item.getAdId()+"").get(0);
 | 
											
												
													
														|  | -                AdPlatformBidCreativeDTO 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());
 |  |                  lambda=PidLambdaV2Container.getPidLambda(item.getAdId());
 | 
											
										
											
												
													
														|  | @@ -342,7 +362,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |          List<AdRankItem> rankResult;
 |  |          List<AdRankItem> rankResult;
 | 
											
												
													
														|  |          if(rankItems==null|| rankItems.size()==0){
 |  |          if(rankItems==null|| rankItems.size()==0){
 | 
											
												
													
														|  |              rankItems=new LinkedList<>();
 |  |              rankItems=new LinkedList<>();
 | 
											
												
													
														|  | -            for(AdPlatformBidCreativeDTO dto:request.getCreativeList()){
 |  | 
 | 
											
												
													
														|  | 
 |  | +            for(AdPlatformCreativeDTO dto:request.getCreativeList()){
 | 
											
												
													
														|  |                  AdRankItem item=new AdRankItem();
 |  |                  AdRankItem item=new AdRankItem();
 | 
											
												
													
														|  |                  item.setBid1(dto.getBid1());
 |  |                  item.setBid1(dto.getBid1());
 | 
											
												
													
														|  |                  item.setBid2(dto.getBid2());
 |  |                  item.setBid2(dto.getBid2());
 | 
											
										
											
												
													
														|  | @@ -380,7 +400,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |          AdRankItem topItem=rankResult.get(0);
 |  |          AdRankItem topItem=rankResult.get(0);
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -        AdPlatformBidCreativeDTO result=AdPlatformBidCreativeDTO
 |  | 
 | 
											
												
													
														|  | 
 |  | +        AdPlatformCreativeDTO result= AdPlatformCreativeDTO
 | 
											
												
													
														|  |                  .builder()
 |  |                  .builder()
 | 
											
												
													
														|  |                  .build();
 |  |                  .build();
 | 
											
												
													
														|  |          BeanUtils.copyProperties(topItem,result);
 |  |          BeanUtils.copyProperties(topItem,result);
 | 
											
										
											
												
													
														|  | @@ -400,7 +420,7 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |              realECpm=cpmMin/1000d;
 |  |              realECpm=cpmMin/1000d;
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          result.setEcpm2(realECpm);
 |  |          result.setEcpm2(realECpm);
 | 
											
												
													
														|  | -        AdPlatformBidCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
 |  | 
 | 
											
												
													
														|  | 
 |  | +        AdPlatformCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
 | 
											
												
													
														|  |          JSONObject object=new JSONObject();
 |  |          JSONObject object=new JSONObject();
 | 
											
												
													
														|  |          object.put("mid",request.getMid());
 |  |          object.put("mid",request.getMid());
 | 
											
												
													
														|  |          object.put("adid",result.getCreativeId());
 |  |          object.put("adid",result.getCreativeId());
 | 
											
										
											
												
													
														|  | @@ -430,5 +450,4 @@ public class RankServiceImpl implements RankService {
 | 
											
												
													
														|  |          return rankResult;
 |  |          return rankResult;
 | 
											
												
													
														|  |      }
 |  |      }
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  | -
 |  | 
 | 
											
												
													
														|  |  }
 |  |  }
 |