Parcourir la source

feat:修改没有回传广告主ID获取方式

zhaohaipeng il y a 6 mois
Parent
commit
ee01ed3da6

+ 1 - 0
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/enums/RedisPrefixEnum.java

@@ -3,6 +3,7 @@ package com.tzld.piaoquan.ad.engine.commons.enums;
 public enum RedisPrefixEnum {
 
     ADVANCE_SHOW_AD_FLAG("ad:advance:show:ad:flag:%s", "是否提前出广告标识,0-否;1-是"),
+    ADVER_IS_API_EQ_0_IDS("ad:adver:isapi:0", "未回传广告主ID集合"),
     ;
     private String prefix;
     private String desc;

+ 7 - 7
ad-engine-commons/src/main/java/com/tzld/piaoquan/ad/engine/commons/redis/AdRedisHelper.java

@@ -15,18 +15,18 @@ public class AdRedisHelper {
     private final static Logger log = LoggerFactory.getLogger(AdRedisHelper.class);
 
     @Resource(name = "adRedisTemplate")
-    private RedisTemplate<String, String> redisTemplate;
+    private RedisTemplate<String, String> adRedisTemplate;
 
     public Set<String> sMembers(String key) {
-        return redisTemplate.opsForSet().members(key);
+        return adRedisTemplate.opsForSet().members(key);
     }
 
     public boolean set(String key, String value, long time) {
         try {
             if (time > 0) {
-                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
+                adRedisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
             } else {
-                redisTemplate.opsForValue().set(key, value);
+                adRedisTemplate.opsForValue().set(key, value);
             }
             return true;
         } catch (Exception e) {
@@ -36,7 +36,7 @@ public class AdRedisHelper {
     }
 
     public String get(String key) {
-        String val = redisTemplate.opsForValue().get(key);
+        String val = adRedisTemplate.opsForValue().get(key);
         if (StringUtils.isNotBlank(val)) {
             return val;
         }
@@ -44,11 +44,11 @@ public class AdRedisHelper {
     }
 
     public boolean del(String key) {
-        return Boolean.TRUE.equals(redisTemplate.delete(key));
+        return Boolean.TRUE.equals(adRedisTemplate.delete(key));
     }
 
     public boolean containsKey(String key) {
-        return Boolean.TRUE.equals(redisTemplate.hasKey(key));
+        return Boolean.TRUE.equals(adRedisTemplate.hasKey(key));
     }
 
 }

+ 9 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/RankService680.java

@@ -1,6 +1,7 @@
 package com.tzld.piaoquan.ad.engine.service.score;
 
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
+import com.tzld.piaoquan.ad.engine.commons.enums.RedisPrefixEnum;
 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.*;
@@ -9,6 +10,7 @@ import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
 import com.tzld.piaoquan.ad.engine.service.score.param.RankRecommendRequestParam;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
@@ -35,6 +37,12 @@ public class RankService680 extends RankStrategyXGBBasic {
     @Override
     public List<AdRankItem> adItemRank(RankRecommendRequestParam request, ScoreParam scoreParam) {
 
+        Set<String> noApiAdVerIds = adRedisHelper.sMembers(RedisPrefixEnum.ADVER_IS_API_EQ_0_IDS.getPrefix());
+        log.info("Redis中缓存的没有回传广告主ID集合: {}", noApiAdVerIds);
+        if (CollectionUtils.isEmpty(noApiAdVerIds)) {
+            noApiAdVerIds = noPostbackConversionAdVerIds;
+        }
+
         long ts = System.currentTimeMillis() / 1000;
 
         // 特征处理
@@ -125,7 +133,7 @@ public class RankService680 extends RankStrategyXGBBasic {
             item.getFeatureMap().putAll(sceneFeatureMap);
 
             // 没有转化回传的广告主,使用后台配置的CPM
-            if (noPostbackConversionAdVerIds.contains(item.getAdVerId())) {
+            if (noApiAdVerIds.contains(item.getAdVerId())) {
                 item.setScore(item.getCpm() / 1000);
             }
 

+ 9 - 3
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/RankService683.java

@@ -1,6 +1,7 @@
 package com.tzld.piaoquan.ad.engine.service.score;
 
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
+import com.tzld.piaoquan.ad.engine.commons.enums.RedisPrefixEnum;
 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.thread.ThreadPoolFactory;
@@ -10,6 +11,7 @@ import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
 import com.tzld.piaoquan.ad.engine.service.score.param.RankRecommendRequestParam;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -42,6 +44,11 @@ public class RankService683 extends RankStrategyXGBBasic {
 
     @Override
     public List<AdRankItem> adItemRank(RankRecommendRequestParam request, ScoreParam scoreParam) {
+        Set<String> noApiAdVerIds = adRedisHelper.sMembers(RedisPrefixEnum.ADVER_IS_API_EQ_0_IDS.getPrefix());
+        log.info("Redis中缓存的没有回传广告主ID集合: {}", noApiAdVerIds);
+        if (CollectionUtils.isEmpty(noApiAdVerIds)) {
+            noApiAdVerIds = noPostbackConversionAdVerIds;
+        }
 
         long ts = System.currentTimeMillis() / 1000;
 
@@ -125,7 +132,7 @@ public class RankService683 extends RankStrategyXGBBasic {
                         String title = b1Feature.getOrDefault("cidtitle", "");
                         this.handleE1AndE2Feature(e1Feature, e2Feature, title, item.getFeatureMap());
                         this.handleD3AndB1Feature(d3Feature, title, item.getFeatureMap());
-                    } finally{
+                    } finally {
                         cdl.countDown();
                     }
                 });
@@ -190,7 +197,6 @@ public class RankService683 extends RankStrategyXGBBasic {
         }
 
 
-
         // 打分排序
         List<AdRankItem> result = ScorerUtils.getScorerPipeline(ScorerUtils.XGBOOST_SCORE_CONF_683)
                 .scoring(sceneFeatureMap, userFeatureMap, adRankItems);
@@ -204,7 +210,7 @@ public class RankService683 extends RankStrategyXGBBasic {
             item.getFeatureMap().putAll(sceneFeatureMap);
 
             // 没有转化回传的广告主,使用后台配置的CPM
-            if (noPostbackConversionAdVerIds.contains(item.getAdVerId())) {
+            if (noApiAdVerIds.contains(item.getAdVerId())) {
                 item.setScore(item.getCpm() / 1000);
             }
 

+ 9 - 5
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/RankService687.java

@@ -1,6 +1,7 @@
 package com.tzld.piaoquan.ad.engine.service.score;
 
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
+import com.tzld.piaoquan.ad.engine.commons.enums.RedisPrefixEnum;
 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.thread.ThreadPoolFactory;
@@ -10,6 +11,7 @@ import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
 import com.tzld.piaoquan.ad.engine.service.score.param.RankRecommendRequestParam;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -42,7 +44,11 @@ public class RankService687 extends RankStrategyXGBBasic {
 
     @Override
     public List<AdRankItem> adItemRank(RankRecommendRequestParam request, ScoreParam scoreParam) {
-
+        Set<String> noApiAdVerIds = adRedisHelper.sMembers(RedisPrefixEnum.ADVER_IS_API_EQ_0_IDS.getPrefix());
+        log.info("Redis中缓存的没有回传广告主ID集合: {}", noApiAdVerIds);
+        if (CollectionUtils.isEmpty(noApiAdVerIds)) {
+            noApiAdVerIds = noPostbackConversionAdVerIds;
+        }
         long ts = System.currentTimeMillis() / 1000;
 
         String brand = scoreParam.getRequestContext().getMachineinfoBrand();
@@ -114,7 +120,6 @@ public class RankService687 extends RankStrategyXGBBasic {
                 this.handleD2Feature(vidRankMaps, cidFeatureMap, cidStr);
 
 
-
                 // adRankItem.setFeatureMap(cidFeatureMap);
 
                 adRankItems.add(adRankItem);
@@ -136,7 +141,7 @@ public class RankService687 extends RankStrategyXGBBasic {
                         this.handleD3AndB1Feature(d3Feature, title, item.getFeatureMap());
                         long time23 = System.currentTimeMillis();
                         log.info("cost={} handleE1AndE2Feature={} handleD3AndB1Feature={}", time23 - time21, time22 - time21, time23 - time22);
-                    } finally{
+                    } finally {
                         cdl.countDown();
                     }
                 });
@@ -209,7 +214,6 @@ public class RankService687 extends RankStrategyXGBBasic {
         }
 
 
-
         // 打分排序
         List<AdRankItem> result = ScorerUtils.getScorerPipeline(ScorerUtils.XGBOOST_SCORE_CONF_683)
                 .scoring(sceneFeatureMap, userFeatureMap, adRankItems);
@@ -223,7 +227,7 @@ public class RankService687 extends RankStrategyXGBBasic {
             item.getFeatureMap().putAll(sceneFeatureMap);
 
             // 没有转化回传的广告主,使用后台配置的CPM
-            if (noPostbackConversionAdVerIds.contains(item.getAdVerId())) {
+            if (noApiAdVerIds.contains(item.getAdVerId())) {
                 item.setScore(item.getCpm() / 1000);
             }
 

+ 9 - 1
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/RankStrategyXGBAutoUpdateModel688.java

@@ -1,6 +1,7 @@
 package com.tzld.piaoquan.ad.engine.service.score;
 
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
+import com.tzld.piaoquan.ad.engine.commons.enums.RedisPrefixEnum;
 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.thread.ThreadPoolFactory;
@@ -10,6 +11,7 @@ import com.tzld.piaoquan.ad.engine.service.score.dto.AdPlatformCreativeDTO;
 import com.tzld.piaoquan.ad.engine.service.score.param.RankRecommendRequestParam;
 import com.tzld.piaoquan.recommend.feature.domain.ad.base.AdRankItem;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Value;
@@ -43,6 +45,12 @@ public class RankStrategyXGBAutoUpdateModel688 extends RankStrategyXGBBasic {
     @Override
     public List<AdRankItem> adItemRank(RankRecommendRequestParam request, ScoreParam scoreParam) {
 
+        Set<String> noApiAdVerIds = adRedisHelper.sMembers(RedisPrefixEnum.ADVER_IS_API_EQ_0_IDS.getPrefix());
+        log.info("Redis中缓存的没有回传广告主ID集合: {}", noApiAdVerIds);
+        if (CollectionUtils.isEmpty(noApiAdVerIds)) {
+            noApiAdVerIds = noPostbackConversionAdVerIds;
+        }
+
         long ts = System.currentTimeMillis() / 1000;
 
         String brand = scoreParam.getRequestContext().getMachineinfoBrand();
@@ -205,7 +213,7 @@ public class RankStrategyXGBAutoUpdateModel688 extends RankStrategyXGBBasic {
             item.getFeatureMap().putAll(sceneFeatureMap);
 
             // 没有转化回传的广告主,使用后台配置的CPM
-            if (noPostbackConversionAdVerIds.contains(item.getAdVerId())) {
+            if (noApiAdVerIds.contains(item.getAdVerId())) {
                 item.setScore(item.getCpm() / 1000);
             }
 

+ 3 - 0
ad-engine-service/src/main/java/com/tzld/piaoquan/ad/engine/service/score/RankStrategyXGBBasic.java

@@ -1,5 +1,6 @@
 package com.tzld.piaoquan.ad.engine.service.score;
 
+import com.tzld.piaoquan.ad.engine.commons.redis.AdRedisHelper;
 import com.tzld.piaoquan.ad.engine.commons.score.ScoreParam;
 import com.tzld.piaoquan.ad.engine.service.feature.Feature;
 import com.tzld.piaoquan.ad.engine.service.feature.FeatureService;
@@ -15,6 +16,8 @@ public abstract class RankStrategyXGBBasic implements RankStrategy {
 
     @Autowired
     private FeatureService featureService;
+    @Autowired
+    protected AdRedisHelper adRedisHelper;
 
     protected Feature getFeature(ScoreParam param, RankRecommendRequestParam request) {
         List<AdPlatformCreativeDTO> adIdList = request.getAdIdList();