Selaa lähdekoodia

增加封面实验文章力度数据导出

xueyiming 1 kuukausi sitten
vanhempi
commit
86c7b64b45

+ 51 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/CoverStatisticOneDataExport.java

@@ -0,0 +1,51 @@
+package com.tzld.longarticle.recommend.server.model.vo;
+
+import lombok.Data;
+
+@Data
+public class CoverStatisticOneDataExport {
+
+    private String dateStr;
+
+    private String channel;
+
+    private String accountName;
+
+    private String contentUrl;
+
+    private String index;
+
+    private Integer fans = 0;
+
+    private Integer publishCount = 0;
+
+    private Integer showViewCount = 0;
+
+    private Double showViewRate = 0.0;
+
+    private Integer allFirstLevel = 0;
+
+    private Integer oneFirstLevel = 0;
+
+    private Integer twoFirstLevel = 0;
+
+    private Double allFirstLevelRate = 0.0;
+
+    private Double oneFirstLevelRate = 0.0;
+
+    private Double twoFirstLevelRate = 0.0;
+
+    private Integer allFission0 = 0;
+
+    private Integer oneFission0 = 0;
+
+    private Integer twoFission0 = 0;
+
+    private Double allFission0Rate = 0.0;
+
+    private Double oneFission0Rate = 0.0;
+
+    private Double twoFission0Rate = 0.0;
+
+
+}

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

@@ -2932,11 +2932,13 @@ public class DataDashboardService {
 
     @XxlJob("buildCoverStatisticDataExportJob")
     public ReturnT<String> buildCoverStatisticDataExportJob(String param) {
-        if(StringUtils.hasText(param)){
+        if (StringUtils.hasText(param)) {
             coverStatisticDataExport(param);
-        }else {
+            coverStatisticTestDataExport(param);
+        } else {
             String dateStr = DateUtils.getDateString(System.currentTimeMillis() - 24 * 60 * 60 * 1000, "yyyMMdd");
             coverStatisticDataExport(dateStr);
+            coverStatisticTestDataExport(dateStr);
         }
         return ReturnT.SUCCESS;
     }
@@ -2969,6 +2971,34 @@ public class DataDashboardService {
                 2, null, null, null);
     }
 
+    public void coverStatisticTestDataExport(String dateStr) {
+        List<String> dateStrList = Arrays.asList(dateStr);
+        List<CoverStatisticOneDataExport> exportList = buildCoverStatisticTestDataExport(dateStr);
+        if (CollectionUtil.isEmpty(exportList)) {
+            return;
+        }
+        int rowNum = exportList.size();
+        List<List<Object>> rows = new ArrayList<>();
+        Field[] fields = CoverStatisticDataExport.class.getDeclaredFields();
+        for (CoverStatisticOneDataExport datum : exportList) {
+            List<Object> rowDatas = new ArrayList<>();
+            rows.add(rowDatas);
+
+            for (Field field : fields) {
+                field.setAccessible(true);
+                try {
+                    rowDatas.add(field.get(datum));
+                } catch (IllegalAccessException e) {
+                    log.error("获取值出错:{}", field.getName());
+                } catch (Exception e) {
+                    throw new RuntimeException(e.getMessage());
+                }
+            }
+        }
+        doSendFeishuSheet(dateStrList, dailyDetailSheetToken, "QiEZiz", rowNum, rows,
+                2, null, null, null);
+    }
+
 
     private List<CoverStatisticDataExport> buildCoverStatisticDataExport(String dateStr) {
         List<CoverStatisticDataExport> result = new ArrayList<>();
@@ -3009,9 +3039,6 @@ public class DataDashboardService {
 
         CoverStatisticDataExport videoSum = new CoverStatisticDataExport(dateStr, "视频", "sum", "sum");
 
-
-
-
         Long start = DateUtils.getStartOfDay(dateStr, "yyyyMMdd");
         Long end = start + 86400;
         Date startDate = new Date(start * 1000);
@@ -3032,7 +3059,7 @@ public class DataDashboardService {
         List<String> rootSourceIdList = new ArrayList<>();
         for (Article article : articleList) {
             List<String> rootSourceIds = JSONArray.parseArray(article.getRootSourceIdList(), String.class);
-            if(CollectionUtils.isEmpty(rootSourceIds)){
+            if (CollectionUtils.isEmpty(rootSourceIds)) {
                 continue;
             }
             rootSourceIdMap.put(article.getWxSn(), rootSourceIds);
@@ -3080,7 +3107,7 @@ public class DataDashboardService {
                 }
             }
             List<ArticleDetailInfo> detailInfoList = articleDetailInfoMap.get(article.getWxSn());
-            if(CollectionUtils.isEmpty(detailInfoList)){
+            if (CollectionUtils.isEmpty(detailInfoList)) {
                 continue;
             }
             List<AccountAvgInfo> accountAvgInfoList = accountAvgInfoRepository.getAllByGhIdEqualsAndStatusEquals(article.getGhId(), 1);
@@ -3242,6 +3269,156 @@ public class DataDashboardService {
         return result;
     }
 
+    private List<CoverStatisticOneDataExport> buildCoverStatisticTestDataExport(String dateStr) {
+        List<CoverStatisticOneDataExport> result = new ArrayList<>();
+        Long start = DateUtils.getStartOfDay(dateStr, "yyyyMMdd");
+        Long end = start + 86400;
+        Date startDate = new Date(start * 1000);
+        Date endDate = new Date(end * 1000);
+        List<Article> articleList = articleRepository.getByPublishTimestampBetweenAndTypeEquals(start, end, ArticleTypeEnum.QUNFA.getVal());
+        List<String> wxSnList = articleList.stream().map(Article::getWxSn).collect(Collectors.toList());
+        List<ArticleDetailInfo> articleDetailInfoList = new ArrayList<>();
+        for (List<String> partitions : Lists.partition(wxSnList, 1000)) {
+            articleDetailInfoList.addAll(articleDetailInfoRepository.findByWxSnInAndPublishDtBetween(partitions, startDate, endDate));
+        }
+        List<DatastatSortStrategy> datastatSortStrategyList = datastatSortStrategyRepository.getByWxSnIn(wxSnList);
+        Map<String, DatastatSortStrategy> datastatSortStrategyMap = datastatSortStrategyList.stream()
+                .collect(Collectors.toMap(DatastatSortStrategy::getWxSn, Function.identity()));
+        Map<String, List<ArticleDetailInfo>> articleDetailInfoMap = articleDetailInfoList.stream()
+                .collect(Collectors.groupingBy(ArticleDetailInfo::getWxSn));
+        // 获取rootSourceId
+        Map<String, List<String>> rootSourceIdMap = new HashMap<>();
+        List<String> rootSourceIdList = new ArrayList<>();
+        for (Article article : articleList) {
+            List<String> rootSourceIds = JSONArray.parseArray(article.getRootSourceIdList(), String.class);
+            if (CollectionUtils.isEmpty(rootSourceIds)) {
+                continue;
+            }
+            rootSourceIdMap.put(article.getWxSn(), rootSourceIds);
+            rootSourceIdList.addAll(rootSourceIds);
+        }
+        List<LongArticlesRootSourceId> longArticlesRootSourceIdList = rootSourceIdRepository.getByRootSourceIdIn(rootSourceIdList);
+        Map<String, LongArticlesRootSourceId> longArticlesRootSourceIdMap = longArticlesRootSourceIdList.stream()
+                .collect(Collectors.toMap(LongArticlesRootSourceId::getRootSourceId, Function.identity()));
+        // 获取视频
+        List<String> contentIdList = longArticlesRootSourceIdList.stream().map(LongArticlesRootSourceId::getContentId).distinct().collect(Collectors.toList());
+        List<LongArticleCrawlerVideo> longArticleCrawlerVideoList = crawlerVideoRepository.getByContentIdInAndIsIllegal(contentIdList, 0);
+        Map<String, List<LongArticleCrawlerVideo>> longArticleCrawlerVideoMap = longArticleCrawlerVideoList.stream()
+                .collect(Collectors.groupingBy(LongArticleCrawlerVideo::getContentId));
+        for (Article article : articleList) {
+            boolean isVideo = false;
+            boolean isSameMiniProgram = false;
+            boolean isTest = false;
+            List<String> rootSourceIds = rootSourceIdMap.get(article.getWxSn());
+            if (CollectionUtil.isNotEmpty(rootSourceIds)) {
+                List<LongArticlesRootSourceId> rootSourceIdItemList = new ArrayList<>();
+                for (String rootSourceId : rootSourceIds) {
+                    LongArticlesRootSourceId longArticlesRootSourceId = longArticlesRootSourceIdMap.get(rootSourceId);
+                    if (!Objects.isNull(longArticlesRootSourceId)) {
+                        rootSourceIdItemList.add(longArticlesRootSourceId);
+                    }
+                    LongArticlesPublishMiniprogram longArticlesPublishMiniprogram
+                            = longArticlesPublishMiniprogramRepository.findByRootSourceIdEquals(rootSourceId);
+                    if (!Objects.isNull(longArticlesPublishMiniprogram)) {
+                        if (longArticlesPublishMiniprogram.getNewVideoCoverId() != null) {
+                            isTest = true;
+                        }
+                    }
+                }
+                String contentId = rootSourceIdItemList.get(0).getContentId();
+                List<LongArticleCrawlerVideo> crawlerVideoList = longArticleCrawlerVideoMap.get(contentId);
+                List<String> videoOssPaths = crawlerVideoList.stream().map(LongArticleCrawlerVideo::getVideoOssPath)
+                        .filter(StringUtils::hasText).collect(Collectors.toList());
+                List<PublishSingleVideoSource> singleVideoSources = videoPoolRepository.getByVideoOssPathIn(videoOssPaths);
+                if (CollectionUtil.isNotEmpty(singleVideoSources)) {
+                    isVideo = true;
+                }
+                if (CollectionUtil.isNotEmpty(crawlerVideoList) && crawlerVideoList.size() == 1) {
+                    isSameMiniProgram = true;
+                }
+            }
+            List<ArticleDetailInfo> detailInfoList = articleDetailInfoMap.get(article.getWxSn());
+            if (CollectionUtils.isEmpty(detailInfoList)) {
+                continue;
+            }
+            List<AccountAvgInfo> accountAvgInfoList = accountAvgInfoRepository.getAllByGhIdEqualsAndStatusEquals(article.getGhId(), 1);
+            Integer fans = 0;
+            if (CollectionUtils.isNotEmpty(accountAvgInfoList)) {
+                fans = accountAvgInfoList.get(0).getFans();
+            }
+            if (isSameMiniProgram && isTest) {
+                CoverStatisticOneDataExport coverStatisticOneDataExport = new CoverStatisticOneDataExport();
+                if (isVideo) {
+                    coverStatisticOneDataExport.setChannel("视频");
+                } else {
+                    coverStatisticOneDataExport.setChannel("文章");
+                }
+                coverStatisticOneDataExport.setDateStr(dateStr);
+                coverStatisticOneDataExport.setAccountName(article.getAccountName());
+                coverStatisticOneDataExport.setContentUrl(article.getContentUrl());
+                if (article.getItemIndex() == 1) {
+                    coverStatisticOneDataExport.setIndex("头条");
+                } else if (article.getItemIndex() == 2) {
+                    coverStatisticOneDataExport.setIndex("次条");
+                } else {
+                    coverStatisticOneDataExport.setIndex("3-8条");
+                }
+                coverStatisticOneDataExport.setFans(fans);
+                coverStatisticOneDataExport.setShowViewCount(article.getShowViewCount());
+                for (ArticleDetailInfo articleDetailInfo : detailInfoList) {
+                    if (articleDetailInfo.getFirstLevel() != null) {
+                        coverStatisticOneDataExport.setAllFirstLevel(coverStatisticOneDataExport.getAllFirstLevel() + articleDetailInfo.getFirstLevel());
+                        if (articleDetailInfo.getVideoIndex() == 1) {
+                            coverStatisticOneDataExport.setOneFirstLevel(coverStatisticOneDataExport.getOneFirstLevel() + articleDetailInfo.getFirstLevel());
+                        }
+                        if (articleDetailInfo.getVideoIndex() == 2) {
+                            coverStatisticOneDataExport.setTwoFirstLevel(coverStatisticOneDataExport.getTwoFirstLevel() + articleDetailInfo.getFirstLevel());
+                        }
+                    }
+                    if (articleDetailInfo.getFission0() != null) {
+                        coverStatisticOneDataExport.setAllFission0(coverStatisticOneDataExport.getAllFission0() + articleDetailInfo.getFission0());
+                        if (articleDetailInfo.getVideoIndex() == 1) {
+                            coverStatisticOneDataExport.setOneFission0(coverStatisticOneDataExport.getOneFission0() + articleDetailInfo.getFission0());
+                        }
+                        if (articleDetailInfo.getVideoIndex() == 2) {
+                            coverStatisticOneDataExport.setTwoFission0(coverStatisticOneDataExport.getTwoFission0() + articleDetailInfo.getFission0());
+                        }
+                    }
+                }
+
+                if (coverStatisticOneDataExport.getShowViewCount() != 0 && coverStatisticOneDataExport.getFans() != 0) {
+                    coverStatisticOneDataExport.setShowViewRate((double) coverStatisticOneDataExport.getShowViewCount() / coverStatisticOneDataExport.getFans());
+                }
+                if (coverStatisticOneDataExport.getShowViewCount() != 0) {
+                    if (coverStatisticOneDataExport.getAllFirstLevel() != 0) {
+                        coverStatisticOneDataExport.setAllFirstLevelRate((double) coverStatisticOneDataExport.getAllFirstLevel() / coverStatisticOneDataExport.getShowViewCount());
+                    }
+                    if (coverStatisticOneDataExport.getOneFirstLevel() != 0) {
+                        coverStatisticOneDataExport.setOneFirstLevelRate((double) coverStatisticOneDataExport.getOneFirstLevel() / coverStatisticOneDataExport.getShowViewCount());
+                    }
+                    if (coverStatisticOneDataExport.getTwoFirstLevel() != 0) {
+                        coverStatisticOneDataExport.setTwoFirstLevelRate((double) coverStatisticOneDataExport.getTwoFirstLevel() / coverStatisticOneDataExport.getShowViewCount());
+                    }
+                }
+
+                if (coverStatisticOneDataExport.getAllFirstLevel() != 0 && coverStatisticOneDataExport.getAllFission0() != 0) {
+                    coverStatisticOneDataExport.setAllFission0Rate((double) coverStatisticOneDataExport.getAllFission0() / coverStatisticOneDataExport.getAllFirstLevel());
+                }
+                if (coverStatisticOneDataExport.getOneFirstLevel() != 0 && coverStatisticOneDataExport.getOneFission0() != 0) {
+                    coverStatisticOneDataExport.setOneFission0Rate((double) coverStatisticOneDataExport.getOneFission0() / coverStatisticOneDataExport.getOneFirstLevel());
+                }
+                if (coverStatisticOneDataExport.getTwoFirstLevel() != 0 && coverStatisticOneDataExport.getTwoFission0() != 0) {
+                    coverStatisticOneDataExport.setTwoFission0Rate((double) coverStatisticOneDataExport.getTwoFission0() / coverStatisticOneDataExport.getTwoFirstLevel());
+                }
+                result.add(coverStatisticOneDataExport);
+            }
+        }
+        if (!CollectionUtils.isEmpty(result)) {
+            result = result.stream().sorted(Comparator.comparing(CoverStatisticOneDataExport::getChannel)).collect(Collectors.toList());
+        }
+        return result;
+    }
+
     private void save(CoverStatisticDataExport coverStatisticDataExport, Integer fans, Integer showViewCount) {
         if (fans != null) {
             coverStatisticDataExport.setFans(coverStatisticDataExport.getFans() + fans);
@@ -3274,9 +3451,9 @@ public class DataDashboardService {
     }
 
     private void sum(CoverStatisticDataExport sumCoverStatisticDataExport,
-                                         CoverStatisticDataExport coverStatisticDataExport1,
-                                         CoverStatisticDataExport coverStatisticDataExport2,
-                                         CoverStatisticDataExport coverStatisticDataExport3) {
+                     CoverStatisticDataExport coverStatisticDataExport1,
+                     CoverStatisticDataExport coverStatisticDataExport2,
+                     CoverStatisticDataExport coverStatisticDataExport3) {
         sumCoverStatisticDataExport.setFans(coverStatisticDataExport1.getFans() + coverStatisticDataExport2.getFans() + coverStatisticDataExport3.getFans());
         sumCoverStatisticDataExport.setPublishCount(coverStatisticDataExport1.getPublishCount() + coverStatisticDataExport2.getPublishCount() + coverStatisticDataExport3.getPublishCount());
         sumCoverStatisticDataExport.setShowViewCount(coverStatisticDataExport1.getShowViewCount() + coverStatisticDataExport2.getShowViewCount() + coverStatisticDataExport3.getShowViewCount());
@@ -3289,28 +3466,28 @@ public class DataDashboardService {
     }
 
     private CoverStatisticDataExport rate(CoverStatisticDataExport coverStatisticDataExport) {
-        if (coverStatisticDataExport.getShowViewCount() != null && coverStatisticDataExport.getFans() != null) {
+        if (coverStatisticDataExport.getShowViewCount() != 0 && coverStatisticDataExport.getFans() != 0) {
             coverStatisticDataExport.setShowViewRate((double) coverStatisticDataExport.getShowViewCount() / coverStatisticDataExport.getFans());
         }
-        if (coverStatisticDataExport.getShowViewCount() != null) {
-            if (coverStatisticDataExport.getAllFirstLevel() != null) {
+        if (coverStatisticDataExport.getShowViewCount() != 0) {
+            if (coverStatisticDataExport.getAllFirstLevel() != 0) {
                 coverStatisticDataExport.setAllFirstLevelRate((double) coverStatisticDataExport.getAllFirstLevel() / coverStatisticDataExport.getShowViewCount());
             }
-            if (coverStatisticDataExport.getOneFirstLevel() != null) {
+            if (coverStatisticDataExport.getOneFirstLevel() != 0) {
                 coverStatisticDataExport.setOneFirstLevelRate((double) coverStatisticDataExport.getOneFirstLevel() / coverStatisticDataExport.getShowViewCount());
             }
-            if (coverStatisticDataExport.getTwoFirstLevel() != null) {
+            if (coverStatisticDataExport.getTwoFirstLevel() != 0) {
                 coverStatisticDataExport.setTwoFirstLevelRate((double) coverStatisticDataExport.getTwoFirstLevel() / coverStatisticDataExport.getShowViewCount());
             }
         }
 
-        if (coverStatisticDataExport.getAllFirstLevel() != null && coverStatisticDataExport.getAllFission0() != null) {
+        if (coverStatisticDataExport.getAllFirstLevel() != 0 && coverStatisticDataExport.getAllFission0() != 0) {
             coverStatisticDataExport.setAllFission0Rate((double) coverStatisticDataExport.getAllFission0() / coverStatisticDataExport.getAllFirstLevel());
         }
-        if (coverStatisticDataExport.getOneFirstLevel() != null && coverStatisticDataExport.getOneFission0() != null) {
+        if (coverStatisticDataExport.getOneFirstLevel() != 0 && coverStatisticDataExport.getOneFission0() != 0) {
             coverStatisticDataExport.setOneFission0Rate((double) coverStatisticDataExport.getOneFission0() / coverStatisticDataExport.getOneFirstLevel());
         }
-        if (coverStatisticDataExport.getTwoFirstLevel() != null && coverStatisticDataExport.getTwoFission0() != null) {
+        if (coverStatisticDataExport.getTwoFirstLevel() != 0 && coverStatisticDataExport.getTwoFission0() != 0) {
             coverStatisticDataExport.setTwoFission0Rate((double) coverStatisticDataExport.getTwoFission0() / coverStatisticDataExport.getTwoFirstLevel());
         }
         return coverStatisticDataExport;

+ 1 - 1
long-article-recommend-service/src/test/java/com/tzld/longarticle/recommend/server/XxlJobTest.java

@@ -114,6 +114,6 @@ public class XxlJobTest {
 
     @Test
     public void coverStatisticDataExportTest() {
-        dataDashboardService.coverStatisticDataExport("20250408");
+        dataDashboardService.coverStatisticTestDataExport("20250413");
     }
 }