Przeglądaj źródła

interleaveMultiPools 去除场景已看 默认首条

wangyunpeng 1 dzień temu
rodzic
commit
d888972589

+ 4 - 10
api-module/src/main/java/com/tzld/piaoquan/api/service/contentplatform/impl/ContentPlatformPlanServiceImpl.java

@@ -807,21 +807,15 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
 
     /**
      * 通用 N 池轮转穿插:
-     * - 场景已看视频池(索引0)固定首位,其余池随机打乱后按序轮转,每池取 1 条
-     * - TODO: 场景已看池扩充多 dimension 后去掉首位固定,全部随机打乱
+     * - 池列表随机打乱后,按新顺序轮转,每池取 1 条,跳过已耗尽的池继续下一轮
      * - 跨池 video_id / 标题去重;某池耗尽后自动从轮转中移除
      */
     private List<VideoContentItemVO> interleaveMultiPools(List<List<VideoContentItemVO>> pools) {
         int n = pools.size();
-        // 池顺序: 首位固定(场景已看视频池), 其余随机打乱
+        // 随机打乱池顺序,轮转遍历
         List<Integer> order = new ArrayList<>(n);
-        if (n > 0) order.add(0); // 场景已看视频池固定首位
-        if (n > 1) {
-            List<Integer> tail = new ArrayList<>(n - 1);
-            for (int i = 1; i < n; i++) tail.add(i);
-            Collections.shuffle(tail);
-            order.addAll(tail);
-        }
+        for (int i = 0; i < n; i++) order.add(i);
+        Collections.shuffle(order);
 
         int[] pointers = new int[n];
         boolean[] exhausted = new boolean[n];