| 
					
				 | 
			
			
				@@ -38,10 +38,10 @@ public class RecallService implements ApplicationContextAware { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     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 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public void init() { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -91,13 +91,10 @@ public class RecallService implements ApplicationContextAware { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             return strategies; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        // 白名单里的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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boolean hitUserBlacklist =  StringUtils.isNotBlank(matchUserBlacklistTypeEnum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        boolean isInBlacklist = CollectionUtils.isNotEmpty(blacklistAppTypeSet) && blacklistAppTypeSet.contains(param.getAppType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         String abCode = param.getAbCode(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         //1:通过“产品”控制“召回子策略” 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -175,7 +172,7 @@ public class RecallService implements ApplicationContextAware { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     strategies.addAll(getRegionRecallStrategy(param)); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             // 命中用户黑名单不走流量池 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            if (!hitUserBlacklist) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if (!hitUserBlacklist || !isInBlacklist) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 //2:通过“流量池标记”控制“流量池召回子策略” 其中有9组会走EXPERIMENTAL_FLOW_SET_LEVEL 有1组会走EXPERIMENTAL_FLOW_SET_LEVEL_SCORE 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if ("60116".equals(abCode)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     int lastDigit = param.getLastDigit(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -289,7 +286,7 @@ public class RecallService implements ApplicationContextAware { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 case "60115": // 565 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 case "60117": // 567 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 case "60118": // 568 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (!hitUserBlacklist) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!hitUserBlacklist || !isInBlacklist) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         strategies.add(strategyMap.get(FlowPoolLastDayTopRecallStrategy.class.getSimpleName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     strategies.add(strategyMap.get(SimHotVideoRecallStrategy.class.getSimpleName())); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -301,7 +298,7 @@ public class RecallService implements ApplicationContextAware { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     break; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 case "60110": // 新内容的召回(流量池的Top内容) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     strategies.add(strategyMap.get(TopGoodPerformanceVideoRecallStrategy.class.getSimpleName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                    if (!hitUserBlacklist) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (!hitUserBlacklist || !isInBlacklist) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         strategies.add(strategyMap.get(FlowPoolLastDayTopRecallStrategy.class.getSimpleName())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     strategies.add(strategyMap.get(SimHotVideoRecallStrategy.class.getSimpleName())); 
			 |