丁云鹏 1 år sedan
förälder
incheckning
ead1e99998

+ 15 - 5
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/filter/strategy/SecurityStrategy.java

@@ -9,6 +9,8 @@ import com.tzld.piaoquan.recommend.server.repository.WxVideoTagRelRepository;
 import com.tzld.piaoquan.recommend.server.service.filter.FilterParam;
 import com.tzld.piaoquan.recommend.server.service.filter.FilterStrategy;
 import com.tzld.piaoquan.recommend.server.util.CommonCollectionUtils;
+import com.tzld.piaoquan.recommend.server.util.JSONUtils;
+import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -24,13 +26,16 @@ import java.util.stream.Collectors;
  * @author dyp
  */
 @Component
+@Slf4j
 public class SecurityStrategy implements FilterStrategy {
     @Value("#{'${block.hotscenetype.list:}'.split(',')}")
-    private Set<Integer> excludeScenes;
+    private Set<Long> excludeScenes;
     @ApolloJsonValue("${video.filter.city.tagid.json:{}}")
     private Map<String, List<Long>> videoFilterCityTagIdMap;
     @Value("${securityAbExpCode:625}")
     private String securityAbExpCode;
+    @Value("${securityGlobalSwitch:false}")
+    private boolean securityGlobalSwitch;
 
     @Autowired
     private WxVideoTagRelRepository wxVideoTagRelRepository;
@@ -62,7 +67,8 @@ public class SecurityStrategy implements FilterStrategy {
             return;
         }
         for (String cityCode : videoFilterCityTagIdMap.keySet()) {
-            videoCache.getUnchecked(cityCode);
+            Set<Long> result = videoCache.getUnchecked(cityCode);
+            log.info("SecurityStrategy result {}", JSONUtils.toJson(result));
         }
     }
 
@@ -75,16 +81,20 @@ public class SecurityStrategy implements FilterStrategy {
         if (CollectionUtils.isEmpty(param.getVideoIds())) {
             return param.getVideoIds();
         }
+
         // 未命中实验
-        if (CollectionUtils.isEmpty(param.getAbExpCodes())
-                || !param.getAbExpCodes().contains(securityAbExpCode)) {
+        if (CollectionUtils.isEmpty(param.getAbExpCodes())) {
+            return param.getVideoIds();
+        }
+        boolean hit = securityGlobalSwitch || param.getAbExpCodes().contains(securityAbExpCode);
+        if (!hit) {
             return param.getVideoIds();
         }
 
         if (CollectionUtils.isNotEmpty(excludeScenes)
                 && param.getHotSceneType() != null
                 && !excludeScenes.contains(param.getHotSceneType())
-                && Objects.nonNull(videoFilterCityTagIdMap)
+                && MapUtils.isNotEmpty(videoFilterCityTagIdMap)
                 && videoFilterCityTagIdMap.containsKey(param.getCityCode())) {
             Set<Long> filterVideos = videoCache.getUnchecked(param.getCityCode());
             if (CollectionUtils.isEmpty(filterVideos)) {