소스 검색

均值表查询兼容

wangyunpeng 10 달 전
부모
커밋
ccbb844119

+ 12 - 9
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/DataDashboardService.java

@@ -174,8 +174,9 @@ public class DataDashboardService {
         Map<String, Map<String, String>> sortStrategyMap = sortLogList.stream()
                 .collect(Collectors.groupingBy(PublishSortLog::getGhId,
                         Collectors.toMap(PublishSortLog::getDateStr, PublishSortLog::getStrategy, (existing, replacement) -> replacement)));
-        Map<String, Map<String, Map<String, AccountAvgInfo>>> accountAvgInfoIndexMap = accountAvgInfoList.stream().collect(
-                Collectors.groupingBy(AccountAvgInfo::getUpdateTime, Collectors.groupingBy(AccountAvgInfo::getGhId,
+        Map<String, Map<String, Map<String, AccountAvgInfo>>> accountAvgInfoIndexMap = accountAvgInfoList.stream()
+                .filter(o -> Objects.nonNull(o.getReadAvg()) && o.getReadAvg() > 0 && o.getFans() > 1000)
+                .collect(Collectors.groupingBy(AccountAvgInfo::getUpdateTime, Collectors.groupingBy(AccountAvgInfo::getGhId,
                         Collectors.toMap(AccountAvgInfo::getPosition, o -> o))));
         // 获取发布账号
         List<PublishAccount> publishAccountList = publishAccountRepository.getAllByGhIdIn(ghIds);
@@ -288,16 +289,18 @@ public class DataDashboardService {
                     sumFission2 += Optional.ofNullable(articleDetailInfo.getFission2()).orElse(0);
                 }
             }
+            Map<String, Map<String, AccountAvgInfo>> dateAvgMap = accountAvgInfoIndexMap.get(article.getGhId());
             String hisPublishDate = DateUtils.timestampToYMDStr(article.getUpdateTime(), "yyyy-MM-dd");
-            List<String> avgMapDateList = new ArrayList<>(accountAvgInfoIndexMap.keySet());
-            hisPublishDate = DateUtils.findNearestDate(avgMapDateList, hisPublishDate, "yyyy-MM-dd");
-            Map<String, Map<String, AccountAvgInfo>> dateAvgMap = accountAvgInfoIndexMap.get(hisPublishDate);
-            Map<String, AccountAvgInfo> accountAvgInfoMap = dateAvgMap.get(article.getGhId());
             AccountAvgInfo avgInfo = null;
             AccountAvgInfo firstAvgInfo = null;
-            if (Objects.nonNull(accountAvgInfoMap)) {
-                avgInfo = accountAvgInfoMap.get(article.getItemIndex().toString());
-                firstAvgInfo = accountAvgInfoMap.get("1");
+            if (Objects.nonNull(dateAvgMap)) {
+                List<String> avgMapDateList = new ArrayList<>(dateAvgMap.keySet());
+                hisPublishDate = DateUtils.findNearestDate(avgMapDateList, hisPublishDate, "yyyy-MM-dd");
+                Map<String, AccountAvgInfo> accountAvgInfoMap = dateAvgMap.get(hisPublishDate);
+                if (Objects.nonNull(accountAvgInfoMap)) {
+                    avgInfo = accountAvgInfoMap.get(article.getItemIndex().toString());
+                    firstAvgInfo = accountAvgInfoMap.get("1");
+                }
             }
             String date = DateUtils.timestampToYMDStr(article.getUpdateTime(), "yyyyMMdd");
             NewSortStrategyExport obj = new NewSortStrategyExport();

+ 16 - 11
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recall/RecallService.java

@@ -228,10 +228,13 @@ public class RecallService implements ApplicationContextAware {
                 Collectors.groupingBy(Article::getGhId, Collectors.toMap(Article::getAppMsgId, o -> o)));
         // 获取发布账号 位置历史均值
         List<AccountAvgInfo> accountAvgInfoList = accountAvgInfoRepository.getAllByGhIdIn(ghIds);
-        Map<String, Map<String, Map<String, AccountAvgInfo>>> accountAvgInfoIndexMap = accountAvgInfoList.stream().collect(
-                Collectors.groupingBy(AccountAvgInfo::getUpdateTime, Collectors.groupingBy(AccountAvgInfo::getGhId,
+        Map<String, Map<String, Map<String, AccountAvgInfo>>> accountAvgInfoIndexMap = accountAvgInfoList.stream()
+                .filter(o -> Objects.nonNull(o.getReadAvg()) && o.getReadAvg() > 0 && o.getFans() > 1000)
+                .collect(Collectors.groupingBy(AccountAvgInfo::getGhId, Collectors.groupingBy(AccountAvgInfo::getUpdateTime,
                         Collectors.toMap(AccountAvgInfo::getPosition, o -> o))));
-        Map<String, Map<String, AccountAvgInfo>> firstIndexAvgInfoMap = accountAvgInfoList.stream().filter(o -> "1".equals(o.getPosition()))
+        Map<String, Map<String, AccountAvgInfo>> firstIndexAvgInfoMap = accountAvgInfoList.stream()
+                .filter(o -> "1".equals(o.getPosition()))
+                .filter(o -> Objects.nonNull(o.getReadAvg()) && o.getReadAvg() > 0 && o.getFans() > 1000)
                 .collect(Collectors.groupingBy(AccountAvgInfo::getGhId, Collectors.toMap(AccountAvgInfo::getUpdateTime, o -> o)));
         for (Content content : contentList) {
             List<Article> hisArticles = new ArrayList<>();
@@ -266,15 +269,17 @@ public class RecallService implements ApplicationContextAware {
                 article.setArticleDetailInfoList(articleDetailInfoMap.get(hisArticle.getWxSn()));
                 // 设置账号位置阅读均值
                 int avgViewCount = 0;
+                Map<String, Map<String, AccountAvgInfo>> dateAvgMap = accountAvgInfoIndexMap.get(hisArticle.getGhId());
                 String hisPublishDate = DateUtils.timestampToYMDStr(article.getUpdateTime(), "yyyy-MM-dd");
-                List<String> avgMapDateList = new ArrayList<>(accountAvgInfoIndexMap.keySet());
-                hisPublishDate = DateUtils.findNearestDate(avgMapDateList, hisPublishDate, "yyyy-MM-dd");
-                Map<String, Map<String, AccountAvgInfo>> dateAvgMap = accountAvgInfoIndexMap.get(hisPublishDate);
-                Map<String, AccountAvgInfo> indexMap = dateAvgMap.get(hisArticle.getGhId());
-                if (Objects.nonNull(indexMap) && indexMap.containsKey(hisArticle.getItemIndex().toString())) {
-                    article.setInnerAccount(true);
-                    avgViewCount = Optional.ofNullable(indexMap.get(hisArticle.getItemIndex().toString()).getReadAvg())
-                            .orElse(0.0).intValue();
+                if (Objects.nonNull(dateAvgMap)) {
+                    List<String> avgMapDateList = new ArrayList<>(dateAvgMap.keySet());
+                    hisPublishDate = DateUtils.findNearestDate(avgMapDateList, hisPublishDate, "yyyy-MM-dd");
+                    Map<String, AccountAvgInfo> indexMap = dateAvgMap.get(hisPublishDate);
+                    if (Objects.nonNull(indexMap) && indexMap.containsKey(hisArticle.getItemIndex().toString())) {
+                        article.setInnerAccount(true);
+                        avgViewCount = Optional.ofNullable(indexMap.get(hisArticle.getItemIndex().toString()).getReadAvg())
+                                .orElse(0.0).intValue();
+                    }
                 }
                 article.setAvgViewCount(avgViewCount);
                 if (Objects.nonNull(article.getAvgViewCount()) && article.getAvgViewCount() > 0