|
|
@@ -739,6 +739,15 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
|
|
|
return matchExposurePv == null || matchExposurePv > minExposurePv;
|
|
|
}
|
|
|
|
|
|
+ static boolean passesSearchDemandRovFilter(String matchMethod, Double rov, Double sceneSumRov,
|
|
|
+ double demandMinRov, double priorSceneMinSumRov) {
|
|
|
+ if (DemandMatchMethodEnum.SCENE.getValue().equals(matchMethod)) {
|
|
|
+ return rov != null && rov > 0
|
|
|
+ && sceneSumRov != null && sceneSumRov >= priorSceneMinSumRov;
|
|
|
+ }
|
|
|
+ return rov != null && rov >= demandMinRov;
|
|
|
+ }
|
|
|
+
|
|
|
@Override
|
|
|
public Page<VideoContentItemVO> getVideoContentList(VideoContentListParam param) {
|
|
|
ContentPlatformAccount user = LoginUserContext.getUser();
|
|
|
@@ -2029,7 +2038,8 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
|
|
|
if (!StringUtils.hasText(dt)) return empty;
|
|
|
|
|
|
List<ContentPlatformDemandVideo> whitelist = demandVideoMapperExt.selectSearchWhitelist(
|
|
|
- dt, ch, isXcx ? crowdPackage : null, isXcx ? null : ghName);
|
|
|
+ dt, ch, isXcx ? crowdPackage : null, isXcx ? null : ghName,
|
|
|
+ demandMinRov, priorSceneMinSumRov);
|
|
|
if (CollectionUtils.isEmpty(whitelist)) return empty;
|
|
|
|
|
|
// SQL 已 ORDER BY rov DESC,putIfAbsent 即拿到 max rov 代表行(设计意图:与排序键一致)
|
|
|
@@ -2043,6 +2053,8 @@ public class ContentPlatformPlanServiceImpl implements ContentPlatformPlanServic
|
|
|
for (ContentPlatformDemandVideo demand : bestPerVideo.values()) {
|
|
|
if (demand.getTitle() == null) continue;
|
|
|
if (!demand.getTitle().toLowerCase().contains(kw)) continue;
|
|
|
+ if (!passesSearchDemandRovFilter(demand.getMatchMethod(), demand.getRov(), demand.getSceneSumRov(),
|
|
|
+ demandMinRov, priorSceneMinSumRov)) continue;
|
|
|
VideoContentItemVO vo = buildDemandVideoContentItemVOList(Collections.singletonList(demand)).get(0);
|
|
|
vo.setSearchSource("keyword");
|
|
|
vo.setScore(null);
|