Parcourir la source

feat:流量池黑名单判断添加白名单配置

zhaohaipeng il y a 11 mois
Parent
commit
ffb13381a8

+ 15 - 3
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/recall/RecallService.java

@@ -7,6 +7,7 @@ import com.tzld.piaoquan.recommend.server.service.filter.strategy.BlacklistConta
 import com.tzld.piaoquan.recommend.server.service.flowpool.FlowPoolConstants;
 import com.tzld.piaoquan.recommend.server.service.recall.strategy.*;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeansException;
 import org.springframework.context.ApplicationContext;
@@ -36,6 +37,12 @@ public class RecallService implements ApplicationContextAware {
     @Resource
     private BlacklistContainer blacklistContainer;
 
+    /**
+     * 在流量池场景下,哪些appType不用判断黑名单
+     */
+    @ApolloJsonValue("${content.security.recommendflowpool.whitelist.apptype.config:[]}")
+    private Set<Integer> contentSecurityWhitelistAppTypeSet;
+
     @PostConstruct
     public void init() {
         Map<String, RecallStrategy> type = applicationContext.getBeansOfType(RecallStrategy.class);
@@ -83,9 +90,14 @@ public class RecallService implements ApplicationContextAware {
             strategies.add(strategyMap.get(SpecialRecallStrategy.class.getSimpleName()));
             return strategies;
         }
-        String matchUserBlacklistTypeEnum = blacklistContainer.matchUserBlacklistTypeEnum(param.getUid(), param.getHotSceneType(), param.getCityCode(),
-                param.getClientIp(), param.getMid(), "recommend-flow-pool", param.getAppType());
-        boolean hitUserBlacklist = StringUtils.isNotBlank(matchUserBlacklistTypeEnum);
+
+        // 白名单里的appType不判断黑名单
+        boolean hitUserBlacklist = false;
+        if (CollectionUtils.isEmpty(contentSecurityWhitelistAppTypeSet) || !contentSecurityWhitelistAppTypeSet.contains(param.getAppType())) {
+            String matchUserBlacklistTypeEnum = blacklistContainer.matchUserBlacklistTypeEnum(param.getUid(), param.getHotSceneType(), param.getCityCode(),
+                    param.getClientIp(), param.getMid(), "recommend-flow-pool", param.getAppType());
+            hitUserBlacklist = StringUtils.isNotBlank(matchUserBlacklistTypeEnum);
+        }
 
         String abCode = param.getAbCode();
         //1:通过“产品”控制“召回子策略”