|
@@ -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.PidLambdaContainer;
|
|
|
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.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.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.commons.util.CommonCollectionUtils;
|
|
|
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;
|
|
@@ -24,11 +23,9 @@ import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
-import javax.annotation.PostConstruct;
|
|
|
import java.time.LocalDateTime;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
import java.util.*;
|
|
|
-import java.util.concurrent.TimeUnit;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
@Service
|
|
@@ -64,33 +61,57 @@ public class RankServiceImpl implements RankService {
|
|
|
if(userAdFeature==null){
|
|
|
userAdFeature=new UserAdFeature();
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- Map<Long, AdRankItem> cache=adCreativeFeatureContainer.getAll(request.getAdIdList());
|
|
|
+ Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
|
|
|
+ .getAdIdList()
|
|
|
+ .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();
|
|
|
if(!cache.isEmpty()){
|
|
|
rankItems=new LinkedList<>(cache.values());
|
|
|
}
|
|
|
-// List<AdRankItem> rankItems=adCreativeFeatureContainer.getAll(request.getAdIdList());
|
|
|
-
|
|
|
-
|
|
|
//避免recommend-feature出问题
|
|
|
if(rankItems==null|| rankItems.size()==0){
|
|
|
rankItems=new LinkedList<>();
|
|
|
- for(Long adId:request.getAdIdList()){
|
|
|
+ for(Long adId:groupMap.keySet()){
|
|
|
AdRankItem item=new AdRankItem();
|
|
|
item.setAdId(adId);
|
|
|
item.setItemFeature(new AdItemFeature());
|
|
|
rankItems.add(item);
|
|
|
}
|
|
|
}
|
|
|
+ double lambda=-1d;
|
|
|
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);
|
|
|
+// }
|
|
|
+ item.setCpa(dto.getCpa());
|
|
|
+ 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);
|
|
|
|
|
@@ -117,7 +138,7 @@ public class RankServiceImpl implements RankService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public AdPlatformBidCreativeDTO adBidRank(BidRankRecommendRequestParam request) {
|
|
|
+ public AdPlatformCreativeDTO adBidRank(BidRankRecommendRequestParam request) {
|
|
|
|
|
|
ScoreParam param= RequestConvert.requestConvert(request);
|
|
|
|
|
@@ -134,7 +155,7 @@ public class RankServiceImpl implements RankService {
|
|
|
if(userAdFeature==null){
|
|
|
userAdFeature=new UserAdFeature();
|
|
|
}
|
|
|
- Map<Long,List<AdPlatformBidCreativeDTO>> groupMap=request
|
|
|
+ Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
|
|
|
.getCreativeList()
|
|
|
.stream()
|
|
|
.collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
|
|
@@ -149,7 +170,7 @@ public class RankServiceImpl implements RankService {
|
|
|
for(AdRankItem item:rankItems){
|
|
|
try {
|
|
|
// 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.setBid2(dto.getBid2());
|
|
|
lambda=PidLambdaContainer.getPidLambda(item.getAdId());
|
|
@@ -195,7 +216,7 @@ public class RankServiceImpl implements RankService {
|
|
|
List<AdRankItem> rankResult;
|
|
|
if(rankItems==null|| rankItems.size()==0){
|
|
|
rankItems=new LinkedList<>();
|
|
|
- for(AdPlatformBidCreativeDTO dto:request.getCreativeList()){
|
|
|
+ for(AdPlatformCreativeDTO dto:request.getCreativeList()){
|
|
|
AdRankItem item=new AdRankItem();
|
|
|
item.setBid1(dto.getBid1());
|
|
|
item.setBid2(dto.getBid2());
|
|
@@ -233,7 +254,7 @@ public class RankServiceImpl implements RankService {
|
|
|
|
|
|
AdRankItem topItem=rankResult.get(0);
|
|
|
|
|
|
- AdPlatformBidCreativeDTO result=AdPlatformBidCreativeDTO
|
|
|
+ AdPlatformCreativeDTO result= AdPlatformCreativeDTO
|
|
|
.builder()
|
|
|
.build();
|
|
|
BeanUtils.copyProperties(topItem,result);
|
|
@@ -254,7 +275,7 @@ public class RankServiceImpl implements RankService {
|
|
|
realECpm=cpmMin/1000d;
|
|
|
}
|
|
|
result.setEcpm2(realECpm);
|
|
|
- AdPlatformBidCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
|
|
|
+ AdPlatformCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
|
|
|
JSONObject object=new JSONObject();
|
|
|
object.put("mid",request.getMid());
|
|
|
object.put("adid",result.getCreativeId());
|
|
@@ -278,7 +299,7 @@ public class RankServiceImpl implements RankService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public AdPlatformBidCreativeDTO adBidRankNewPid(BidRankRecommendRequestParam request) {
|
|
|
+ public AdPlatformCreativeDTO adBidRankNewPid(BidRankRecommendRequestParam request) {
|
|
|
|
|
|
ScoreParam param= RequestConvert.requestConvert(request);
|
|
|
LocalDateTime currentTime = LocalDateTime.now();
|
|
@@ -294,7 +315,7 @@ public class RankServiceImpl implements RankService {
|
|
|
if(userAdFeature==null){
|
|
|
userAdFeature=new UserAdFeature();
|
|
|
}
|
|
|
- Map<Long,List<AdPlatformBidCreativeDTO>> groupMap=request
|
|
|
+ Map<Long,List<AdPlatformCreativeDTO>> groupMap=request
|
|
|
.getCreativeList()
|
|
|
.stream()
|
|
|
.collect(Collectors.groupingBy(creativeDTO -> creativeDTO.getCreativeId()));
|
|
@@ -309,7 +330,7 @@ public class RankServiceImpl implements RankService {
|
|
|
for(AdRankItem item:rankItems){
|
|
|
try {
|
|
|
// 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.setBid2(dto.getBid2());
|
|
|
lambda=PidLambdaV2Container.getPidLambda(item.getAdId());
|
|
@@ -342,7 +363,7 @@ public class RankServiceImpl implements RankService {
|
|
|
List<AdRankItem> rankResult;
|
|
|
if(rankItems==null|| rankItems.size()==0){
|
|
|
rankItems=new LinkedList<>();
|
|
|
- for(AdPlatformBidCreativeDTO dto:request.getCreativeList()){
|
|
|
+ for(AdPlatformCreativeDTO dto:request.getCreativeList()){
|
|
|
AdRankItem item=new AdRankItem();
|
|
|
item.setBid1(dto.getBid1());
|
|
|
item.setBid2(dto.getBid2());
|
|
@@ -380,7 +401,7 @@ public class RankServiceImpl implements RankService {
|
|
|
|
|
|
AdRankItem topItem=rankResult.get(0);
|
|
|
|
|
|
- AdPlatformBidCreativeDTO result=AdPlatformBidCreativeDTO
|
|
|
+ AdPlatformCreativeDTO result= AdPlatformCreativeDTO
|
|
|
.builder()
|
|
|
.build();
|
|
|
BeanUtils.copyProperties(topItem,result);
|
|
@@ -400,7 +421,7 @@ public class RankServiceImpl implements RankService {
|
|
|
realECpm=cpmMin/1000d;
|
|
|
}
|
|
|
result.setEcpm2(realECpm);
|
|
|
- AdPlatformBidCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
|
|
|
+ AdPlatformCreativeDTO dto=groupMap.get(topItem.getAdId()).get(0);
|
|
|
JSONObject object=new JSONObject();
|
|
|
object.put("mid",request.getMid());
|
|
|
object.put("adid",result.getCreativeId());
|
|
@@ -430,5 +451,4 @@ public class RankServiceImpl implements RankService {
|
|
|
return rankResult;
|
|
|
}
|
|
|
|
|
|
-
|
|
|
}
|