| 
														
															@@ -38,10 +38,10 @@ public class RecallService implements ApplicationContextAware { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     private BlacklistContainer blacklistContainer; 
														 | 
														
														 | 
														
															     private BlacklistContainer blacklistContainer; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     /** 
														 | 
														
														 | 
														
															     /** 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-     * 在流量池场景下,哪些appType不用判断黑名单 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+     * 在流量池场景下,哪些appType用判断黑名单 
														 | 
													
												
											
												
													
														| 
														 | 
														
															      */ 
														 | 
														
														 | 
														
															      */ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    @ApolloJsonValue("${content.security.recommendflowpool.whitelist.apptype.config:[]}") 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    private Set<Integer> contentSecurityWhitelistAppTypeSet; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    @ApolloJsonValue("${content.security.recommendflowpool.blacklist.apptype.config:[]}") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private Set<Integer> blacklistAppTypeSet; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @PostConstruct 
														 | 
														
														 | 
														
															     @PostConstruct 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public void init() { 
														 | 
														
														 | 
														
															     public void init() { 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -91,13 +91,10 @@ public class RecallService implements ApplicationContextAware { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             return strategies; 
														 | 
														
														 | 
														
															             return strategies; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // 白名单里的appType不判断黑名单 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        boolean hitUserBlacklist = false; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        if (CollectionUtils.isEmpty(contentSecurityWhitelistAppTypeSet) || !contentSecurityWhitelistAppTypeSet.contains(param.getAppType())) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             String matchUserBlacklistTypeEnum = blacklistContainer.matchUserBlacklistTypeEnum(param.getUid(), param.getHotSceneType(), param.getCityCode(), 
														 | 
														
														 | 
														
															             String matchUserBlacklistTypeEnum = blacklistContainer.matchUserBlacklistTypeEnum(param.getUid(), param.getHotSceneType(), param.getCityCode(), 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     param.getClientIp(), param.getMid(), "recommend-flow-pool", param.getAppType()); 
														 | 
														
														 | 
														
															                     param.getClientIp(), param.getMid(), "recommend-flow-pool", param.getAppType()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            hitUserBlacklist = StringUtils.isNotBlank(matchUserBlacklistTypeEnum); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        } 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        boolean hitUserBlacklist =  StringUtils.isNotBlank(matchUserBlacklistTypeEnum); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        boolean isInBlacklist = CollectionUtils.isNotEmpty(blacklistAppTypeSet) && blacklistAppTypeSet.contains(param.getAppType()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															         String abCode = param.getAbCode(); 
														 | 
														
														 | 
														
															         String abCode = param.getAbCode(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         //1:通过“产品”控制“召回子策略” 
														 | 
														
														 | 
														
															         //1:通过“产品”控制“召回子策略” 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -175,7 +172,7 @@ public class RecallService implements ApplicationContextAware { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     strategies.addAll(getRegionRecallStrategy(param)); 
														 | 
														
														 | 
														
															                     strategies.addAll(getRegionRecallStrategy(param)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             // 命中用户黑名单不走流量池 
														 | 
														
														 | 
														
															             // 命中用户黑名单不走流量池 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            if (!hitUserBlacklist) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (!hitUserBlacklist || !isInBlacklist) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 //2:通过“流量池标记”控制“流量池召回子策略” 其中有9组会走EXPERIMENTAL_FLOW_SET_LEVEL 有1组会走EXPERIMENTAL_FLOW_SET_LEVEL_SCORE 
														 | 
														
														 | 
														
															                 //2:通过“流量池标记”控制“流量池召回子策略” 其中有9组会走EXPERIMENTAL_FLOW_SET_LEVEL 有1组会走EXPERIMENTAL_FLOW_SET_LEVEL_SCORE 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 if ("60116".equals(abCode)) { 
														 | 
														
														 | 
														
															                 if ("60116".equals(abCode)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     int lastDigit = param.getLastDigit(); 
														 | 
														
														 | 
														
															                     int lastDigit = param.getLastDigit(); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -289,7 +286,7 @@ public class RecallService implements ApplicationContextAware { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 case "60115": // 565 
														 | 
														
														 | 
														
															                 case "60115": // 565 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 case "60117": // 567 
														 | 
														
														 | 
														
															                 case "60117": // 567 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 case "60118": // 568 
														 | 
														
														 | 
														
															                 case "60118": // 568 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    if (!hitUserBlacklist) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    if (!hitUserBlacklist || !isInBlacklist) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         strategies.add(strategyMap.get(FlowPoolLastDayTopRecallStrategy.class.getSimpleName())); 
														 | 
														
														 | 
														
															                         strategies.add(strategyMap.get(FlowPoolLastDayTopRecallStrategy.class.getSimpleName())); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     } 
														 | 
														
														 | 
														
															                     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     strategies.add(strategyMap.get(SimHotVideoRecallStrategy.class.getSimpleName())); 
														 | 
														
														 | 
														
															                     strategies.add(strategyMap.get(SimHotVideoRecallStrategy.class.getSimpleName())); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -301,7 +298,7 @@ public class RecallService implements ApplicationContextAware { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     break; 
														 | 
														
														 | 
														
															                     break; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 case "60110": // 新内容的召回(流量池的Top内容) 
														 | 
														
														 | 
														
															                 case "60110": // 新内容的召回(流量池的Top内容) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     strategies.add(strategyMap.get(TopGoodPerformanceVideoRecallStrategy.class.getSimpleName())); 
														 | 
														
														 | 
														
															                     strategies.add(strategyMap.get(TopGoodPerformanceVideoRecallStrategy.class.getSimpleName())); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                    if (!hitUserBlacklist) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    if (!hitUserBlacklist || !isInBlacklist) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                         strategies.add(strategyMap.get(FlowPoolLastDayTopRecallStrategy.class.getSimpleName())); 
														 | 
														
														 | 
														
															                         strategies.add(strategyMap.get(FlowPoolLastDayTopRecallStrategy.class.getSimpleName())); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     } 
														 | 
														
														 | 
														
															                     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     strategies.add(strategyMap.get(SimHotVideoRecallStrategy.class.getSimpleName())); 
														 | 
														
														 | 
														
															                     strategies.add(strategyMap.get(SimHotVideoRecallStrategy.class.getSimpleName())); 
														 |