Browse Source

Merge branch 'feature_20250526_zhaohaipeng_douhot' of algorithm/recommend-server into master

zhaohaipeng 1 week ago
parent
commit
173c3bfcd0

+ 8 - 5
recommend-server-service/src/main/java/com/tzld/piaoquan/recommend/server/service/flowpool/FlowPoolService.java

@@ -184,7 +184,7 @@ public class FlowPoolService {
         List<FlowPoolVideoInfo> allDouHotVideo = this.findAllDouHotVideoFromFlowPool();
         log.info("[DouHot video size]: {}", allDouHotVideo.size());
 
-        // 获取视频对应的可分发数量
+        // 获取视频对应的可分发数量, videoId-flowpool -> viewCnt
         Map<String, Integer> videoAndDistributeCountMap = this.findDouHotVideoDistributeCount(allDouHotVideo);
         log.info("[DouHot view distribute count size]: {}", videoAndDistributeCountMap.size());
 
@@ -198,15 +198,18 @@ public class FlowPoolService {
 
         Map<String, List<FlowPoolVideoInfo>> provinceAndVideoListMap = new HashMap<>(allVideoAndProvinceMap.size());
 
-        // 获取省份与对应视频的映射
+        // 获取省份与对应视频的映射, 省份 -> [视频信息列表]
         Map<Long, List<FlowPoolVideoInfo>> videoIdList = allDouHotVideo.stream()
                 .collect(Collectors.groupingBy(FlowPoolVideoInfo::getVideoId));
+
         for (Map.Entry<Long, Map<String, Double>> entry : allVideoAndProvinceMap.entrySet()) {
             Long videoId = entry.getKey();
             Set<String> provinceList = entry.getValue().keySet();
             for (String province : provinceList) {
-                List<FlowPoolVideoInfo> flowPoolVideoInfos = provinceAndVideoListMap.computeIfAbsent(province, s -> new ArrayList<>());
-                flowPoolVideoInfos.addAll(videoIdList.get(videoId));
+                if (videoIdList.containsKey(videoId)) {
+                    List<FlowPoolVideoInfo> flowPoolVideoInfos = provinceAndVideoListMap.computeIfAbsent(province, s -> new ArrayList<>());
+                    flowPoolVideoInfos.addAll(videoIdList.get(videoId));
+                }
             }
         }
         provinceAndVideoListMap.forEach((key, value) -> log.info("[DouHot province video size]: province: {}, video size: {}", key, value.size()));
@@ -289,7 +292,7 @@ public class FlowPoolService {
 
     private List<FlowPoolVideoInfo> findAllDouHotVideoFromFlowPool() {
         List<FlowPoolVideoInfo> result = new ArrayList<>();
-        int pageNum = 0;
+        int pageNum = 1;
         while (true) {
             JSONObject paramJson = new JSONObject();
             paramJson.put("flowPoolId", douHotFlowPoolId);