|
@@ -960,7 +960,7 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
|
|
|
* 后处理:
|
|
* 后处理:
|
|
|
* 1. 同 video_id 仅保留 total_rov 最大的代表行(利用 SQL 已按 total_rov DESC, score DESC 排好,首次即最大)
|
|
* 1. 同 video_id 仅保留 total_rov 最大的代表行(利用 SQL 已按 total_rov DESC, score DESC 排好,首次即最大)
|
|
|
* 2. 过滤 rov 为 null 或 <=0(视频近 7 日无表现)
|
|
* 2. 过滤 rov 为 null 或 <=0(视频近 7 日无表现)
|
|
|
- * 3. 输出顺序按 rov DESC,相同 rov 按 total_rov DESC 兜底
|
|
|
|
|
|
|
+ * 3. 输出顺序按 sceneSumRov DESC,相同再按 total_rov DESC 兜底
|
|
|
*/
|
|
*/
|
|
|
private List<VideoContentItemVO> fetchPriorSceneCandidates(VideoContentListParam param, ContentPlatformAccount user, int limit) {
|
|
private List<VideoContentItemVO> fetchPriorSceneCandidates(VideoContentListParam param, ContentPlatformAccount user, int limit) {
|
|
|
String channelName = resolveChannelName(param);
|
|
String channelName = resolveChannelName(param);
|
|
@@ -996,11 +996,11 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
|
|
|
if (r.getRov() == null || r.getRov() <= 0) continue;
|
|
if (r.getRov() == null || r.getRov() <= 0) continue;
|
|
|
filtered.add(r);
|
|
filtered.add(r);
|
|
|
}
|
|
}
|
|
|
- // 3. 按 rov DESC 排序,次级 total_rov DESC
|
|
|
|
|
|
|
+ // 3. 按 sceneSumRov DESC 排序,次级 total_rov DESC
|
|
|
filtered.sort((a, b) -> {
|
|
filtered.sort((a, b) -> {
|
|
|
int c = Double.compare(
|
|
int c = Double.compare(
|
|
|
- b.getRov() == null ? 0d : b.getRov(),
|
|
|
|
|
- a.getRov() == null ? 0d : a.getRov());
|
|
|
|
|
|
|
+ b.getSceneSumRov() == null ? 0d : b.getSceneSumRov(),
|
|
|
|
|
+ a.getSceneSumRov() == null ? 0d : a.getSceneSumRov());
|
|
|
if (c != 0) return c;
|
|
if (c != 0) return c;
|
|
|
return Double.compare(
|
|
return Double.compare(
|
|
|
b.getTotalRov() == null ? 0d : b.getTotalRov(),
|
|
b.getTotalRov() == null ? 0d : b.getTotalRov(),
|