فهرست منبع

Merge branch 'feature_gufengshou_20240509_new_cpc'

gufengshou1 11 ماه پیش
والد
کامیت
7fc8c3e2cf

+ 3 - 4
ad-engine-server/src/main/java/com/tzld/piaoquan/ad/engine/server/controller/AdRecommendController.java

@@ -1,7 +1,7 @@
 package com.tzld.piaoquan.ad.engine.server.controller;
 
 import com.tzld.piaoquan.ad.engine.service.score.RankService;
-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.RankRecommendRequestParam;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
@@ -30,7 +30,6 @@ public class AdRecommendController {
         AdRankItem rankResult = rankService.adItemRank(request);
         HashMap map =new HashMap();
         map.put("code","0");
-        //
         map.put("msg","success");
         HashMap contentMap=new HashMap<>();
         contentMap.put("adId", rankResult.getAdId());
@@ -41,7 +40,7 @@ public class AdRecommendController {
 
     @RequestMapping("/top1/bid/basic")
     public Map<String,Object> adRecommendTop1BidBasic(@RequestBody BidRankRecommendRequestParam request){
-        AdPlatformBidCreativeDTO rankResult = rankService.adBidRank(request);
+        AdPlatformCreativeDTO rankResult = rankService.adBidRank(request);
         HashMap map =new HashMap();
         map.put("code","0");
         map.put("msg","success");
@@ -51,7 +50,7 @@ public class AdRecommendController {
 
     @RequestMapping("/top1/bid/new/pid")
     public Map<String,Object> adRecommendTop1BidNewPid(@RequestBody BidRankRecommendRequestParam request){
-        AdPlatformBidCreativeDTO rankResult = rankService.adBidRankNewPid(request);
+        AdPlatformCreativeDTO rankResult = rankService.adBidRankNewPid(request);
         HashMap map =new HashMap();
         map.put("code","0");
         map.put("msg","success");

+ 3 - 5
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/RankService.java

@@ -1,22 +1,20 @@
 package com.tzld.piaoquan.ad.engine.service.score;
 
 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.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.RankRecommendRequestParam;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.UserAdFeature;
 
 import java.util.List;
-import java.util.Map;
 
 public interface RankService {
 
     AdRankItem adItemRank(RankRecommendRequestParam request);
-    AdPlatformBidCreativeDTO adBidRank(BidRankRecommendRequestParam request);
+    AdPlatformCreativeDTO adBidRank(BidRankRecommendRequestParam request);
 
-    AdPlatformBidCreativeDTO adBidRankNewPid(BidRankRecommendRequestParam request);
+    AdPlatformCreativeDTO adBidRankNewPid(BidRankRecommendRequestParam request);
 
     List<AdRankItem> rank (ScoreParam param, UserAdFeature userAdFeature, List<AdRankItem> rankItems, String configFile);
 }

+ 0 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/VlogMergeEcpmScorer.java

@@ -113,7 +113,6 @@ public class VlogMergeEcpmScorer extends BaseLRModelScorer {
             item.setScore_type( 0);
             //todo
             double ecpm;
-            double ecpm2;
 //            if(isTfType){
 //                ecpm = cpa * bid1 * bid2 * pcvr * pctr * 1000d;
 //            }else {

+ 2 - 2
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/dto/AdPlatformBidCreativeDTO.java → ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/dto/AdPlatformCreativeDTO.java

@@ -8,7 +8,7 @@ import lombok.ToString;
 @Builder
 @Data
 @ToString
-public class AdPlatformBidCreativeDTO {
+public class AdPlatformCreativeDTO {
 
     private Long creativeId;
 
@@ -31,7 +31,7 @@ public class AdPlatformBidCreativeDTO {
     private Double ecpm2;
 
     public static void main(String[] args) {
-        System.out.println(JSON.toJSONString(AdPlatformBidCreativeDTO.builder()
+        System.out.println(JSON.toJSONString(AdPlatformCreativeDTO.builder()
                 .creativeId(3366L)
                 .creativeCode("CREATIVE_17036704789851370")
                 .bidType(2)

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

@@ -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;
     }
 
-
 }

+ 4 - 4
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/impl/RankServiceThompsonImpl.java

@@ -6,7 +6,7 @@ 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;
-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.RankRecommendRequestParam;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
@@ -32,7 +32,7 @@ public class RankServiceThompsonImpl implements RankService {
         ScoreParam param = RequestConvert.requestConvert(request);
         UserAdFeature userAdFeature = new UserAdFeature();
         List<AdRankItem> rankItems = featureRemoteService.getAllAdFeatureList(
-                CommonCollectionUtils.toList(request.getAdIdList(), id -> id.toString())
+                CommonCollectionUtils.toList(request.getAdIdList(), creativeDTO -> creativeDTO.getCreativeId().toString())
         );
         List<AdRankItem> rankResult = ScorerUtils
                 .getScorerPipeline(ScorerUtils.THOMPSON_CONF)
@@ -46,12 +46,12 @@ public class RankServiceThompsonImpl implements RankService {
     }
 
     @Override
-    public AdPlatformBidCreativeDTO adBidRank(BidRankRecommendRequestParam request) {
+    public AdPlatformCreativeDTO adBidRank(BidRankRecommendRequestParam request) {
         return null;
     }
 
     @Override
-    public AdPlatformBidCreativeDTO adBidRankNewPid(BidRankRecommendRequestParam request) {
+    public AdPlatformCreativeDTO adBidRankNewPid(BidRankRecommendRequestParam request) {
         return null;
     }
 

+ 2 - 2
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/param/BidRankRecommendRequestParam.java

@@ -1,6 +1,6 @@
 package com.tzld.piaoquan.ad.engine.service.score.param;
 
-import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformBidCreativeDTO;
+import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
 import lombok.Data;
 
 import java.util.List;
@@ -8,6 +8,6 @@ import java.util.List;
 @Data
 public class BidRankRecommendRequestParam extends RecommendRequestParam{
 
-     List<AdPlatformBidCreativeDTO> creativeList;
+     List<AdPlatformCreativeDTO> creativeList;
 
 }

+ 2 - 2
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/param/RankRecommendRequestParam.java

@@ -1,11 +1,11 @@
 package com.tzld.piaoquan.ad.engine.service.score.param;
 
+import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
 import lombok.Data;
 
 import java.util.List;
 
 @Data
 public class RankRecommendRequestParam extends RecommendRequestParam{
-     List<Long> adIdList;
-
+     List<AdPlatformCreativeDTO> adIdList;
 }