浏览代码

视频内容池文章晋级

wangyunpeng 6 月之前
父节点
当前提交
ec6c466d47

+ 2 - 2
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/entity/longArticle/PublishSingleVideoSource.java

@@ -36,7 +36,7 @@ public class PublishSingleVideoSource {
     private Integer likeCount;
 
     @Column(name = "article_index")
-    private Byte articleIndex;
+    private Integer articleIndex;
 
     @Column(name = "article_publish_type")
     private String articlePublishType;
@@ -54,7 +54,7 @@ public class PublishSingleVideoSource {
     private Integer flowPoolLevel;
 
     @Column(name = "bad_status")
-    private Byte badStatus;
+    private Integer badStatus;
 
     @Column(name = "publish_timestamp")
     private Long publishTimestamp;

+ 2 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/crawler/PublishSortLogRepository.java

@@ -26,4 +26,6 @@ public interface PublishSortLogRepository extends JpaRepository<PublishSortLog,
     List<PublishSortLog> findByDateStrIn(List<String> dateStrList);
 
     List<PublishSortLog> findByDateStrAndGhId(String dateStr, String ghId);
+
+    List<PublishSortLog> getByGhIdInAndDateStrIn(List<String> ghIds, List<String> dateStr);
 }

+ 2 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/longArticle/PublishSingleVideoSourceRepository.java

@@ -9,4 +9,6 @@ import java.util.List;
 @Repository
 public interface PublishSingleVideoSourceRepository extends JpaRepository<PublishSingleVideoSource, Long> {
     List<PublishSingleVideoSource> getByContentTraceIdIn(List<String> contentTraceIds);
+
+    PublishSingleVideoSource getByContentTraceId(String sourceId);
 }

+ 7 - 3
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/XxlJobService.java

@@ -10,6 +10,7 @@ import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import com.tzld.longarticle.recommend.server.common.CommonThreadPoolExecutor;
 import com.tzld.longarticle.recommend.server.common.enums.aigc.ProduceContentAuditStatusEnum;
 import com.tzld.longarticle.recommend.server.common.enums.recommend.AccountBusinessTypeEnum;
+import com.tzld.longarticle.recommend.server.common.enums.recommend.ContentPoolEnum;
 import com.tzld.longarticle.recommend.server.common.enums.recommend.FeishuRobotIdEnum;
 import com.tzld.longarticle.recommend.server.mapper.aigc.AigcBaseMapper;
 import com.tzld.longarticle.recommend.server.mapper.crawler.CrawlerBaseMapper;
@@ -611,9 +612,12 @@ public class XxlJobService {
 
     @XxlJob("articleVideoPoolPromotion")
     public ReturnT<String> articleVideoPoolPromotion(String param) {
-        articlePromotionService.articleVideoPoolPromotion(500, 1.1, Lists.newArrayList(1));
-        articlePromotionService.articleVideoPoolPromotion(250, 1.21, Lists.newArrayList(2));
-        articlePromotionService.articleVideoPoolPromotion(100, 1.33, Lists.newArrayList(3, 4, 5, 6, 7, 8));
+        articlePromotionService.articleVideoPoolPromotion(500, 1.1,
+                Lists.newArrayList(1), ContentPoolEnum.autoArticlePoolLevel1.getValue());
+        articlePromotionService.articleVideoPoolPromotion(250, 1.21,
+                Lists.newArrayList(2), ContentPoolEnum.autoArticlePoolLevel1.getValue());
+        articlePromotionService.articleVideoPoolPromotion(100, 1.33,
+                Lists.newArrayList(3, 4, 5, 6, 7, 8), ContentPoolEnum.autoArticlePoolLevel3.getValue());
         return ReturnT.SUCCESS;
     }
 

+ 52 - 4
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/ArticlePromotionService.java

@@ -1,5 +1,6 @@
 package com.tzld.longarticle.recommend.server.service.recommend;
 
+import cn.hutool.core.lang.UUID;
 import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.tzld.longarticle.recommend.server.common.enums.StatusEnum;
 import com.tzld.longarticle.recommend.server.common.enums.aigc.CrawlerModeEnum;
@@ -8,8 +9,10 @@ import com.tzld.longarticle.recommend.server.common.enums.recommend.ArticlePoolP
 import com.tzld.longarticle.recommend.server.common.enums.recommend.FeishuRobotIdEnum;
 import com.tzld.longarticle.recommend.server.mapper.longArticle.LongArticleBaseMapper;
 import com.tzld.longarticle.recommend.server.model.entity.aigc.PublishAccount;
+import com.tzld.longarticle.recommend.server.model.entity.crawler.PublishSortLog;
 import com.tzld.longarticle.recommend.server.model.entity.longArticle.ArticlePoolPromotionSource;
 import com.tzld.longarticle.recommend.server.model.entity.longArticle.DatastatSortStrategy;
+import com.tzld.longarticle.recommend.server.model.entity.longArticle.PublishSingleVideoSource;
 import com.tzld.longarticle.recommend.server.model.vo.IdNameVO;
 import com.tzld.longarticle.recommend.server.model.vo.WxContentDetailResponse;
 import com.tzld.longarticle.recommend.server.model.vo.aigc.CommonListDataVO;
@@ -22,14 +25,17 @@ import com.tzld.longarticle.recommend.server.remote.aigc.AIGCProduceContentListS
 import com.tzld.longarticle.recommend.server.remote.aigc.AIGCProducePlanDetailService;
 import com.tzld.longarticle.recommend.server.remote.aigc.AIGCProducePlanSaveService;
 import com.tzld.longarticle.recommend.server.repository.aigc.PublishAccountRepository;
+import com.tzld.longarticle.recommend.server.repository.crawler.PublishSortLogRepository;
 import com.tzld.longarticle.recommend.server.repository.longArticle.ArticlePoolPromotionSourceRepository;
 import com.tzld.longarticle.recommend.server.repository.longArticle.DatastatSortStrategyRepository;
+import com.tzld.longarticle.recommend.server.repository.longArticle.PublishSingleVideoSourceRepository;
 import com.tzld.longarticle.recommend.server.util.DateUtils;
 import com.tzld.longarticle.recommend.server.util.Md5Util;
 import com.tzld.longarticle.recommend.server.util.TitleSimilarCheckUtil;
 import com.tzld.longarticle.recommend.server.util.feishu.FeishuMessageSender;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.collections4.CollectionUtils;
+import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.StringUtils;
@@ -62,6 +68,10 @@ public class ArticlePromotionService {
     PublishAccountRepository publishAccountRepository;
     @Autowired
     ArticleService articleService;
+    @Autowired
+    PublishSortLogRepository publishSortLogRepository;
+    @Autowired
+    PublishSingleVideoSourceRepository publishSingleVideoSourceRepository;
 
     @ApolloJsonValue("${articlePromotionProduceConfig:{}}")
     private Map<String, Map<String, Map<String, String>>> produceConfig;
@@ -361,7 +371,8 @@ public class ArticlePromotionService {
         }
     }
 
-    public void articleVideoPoolPromotion(Integer viewCountFilter, Double viewCountRateFilter, List<Integer> positionFilter) {
+    public void articleVideoPoolPromotion(Integer viewCountFilter, Double viewCountRateFilter,
+                                          List<Integer> positionFilter, Integer poolLevel) {
         String dateStrFilter = DateUtils.getBeforeDaysDateStr("yyyyMMdd", 10);
         // 获取内部表现
         List<DatastatSortStrategy> list = longArticleBaseMapper.getArticlePromotion(viewCountFilter, viewCountRateFilter,
@@ -371,11 +382,48 @@ public class ArticlePromotionService {
         List<DatastatSortStrategy> distinct = filterSameTitle(list);
         distinct.sort(Comparator.comparing(DatastatSortStrategy::getDateStr, Comparator.reverseOrder()));
         log.info("优质文章数量(去重后): {}", distinct.size());
-        saveArticleVideoPoolPromotion(distinct);
+        saveArticleVideoPoolPromotion(distinct, poolLevel);
     }
 
-    private void saveArticleVideoPoolPromotion(List<DatastatSortStrategy> promotionList) {
-
+    private void saveArticleVideoPoolPromotion(List<DatastatSortStrategy> promotionList, Integer poolLevel) {
+        if (CollectionUtils.isEmpty(promotionList)) {
+            return;
+        }
+        List<String> ghIds = promotionList.stream().map(DatastatSortStrategy::getGhId).distinct().collect(Collectors.toList());
+        List<String> dateStr = promotionList.stream().map(DatastatSortStrategy::getDateStr).distinct().collect(Collectors.toList());
+        List<PublishSortLog> sortLogList = publishSortLogRepository.getByGhIdInAndDateStrIn(ghIds, dateStr);
+        Map<String, Map<String, List<PublishSortLog>>> sortLogMap = sortLogList.stream()
+                .collect(Collectors.groupingBy(PublishSortLog::getGhId,
+                        Collectors.groupingBy(PublishSortLog::getDateStr)));
+        for (DatastatSortStrategy data : promotionList) {
+            List<PublishSortLog> logs = sortLogMap.get(data.getGhId()).get(data.getDateStr());
+            if (CollectionUtils.isEmpty(logs)) {
+                continue;
+            }
+            String sourceId = null;
+            for (PublishSortLog publishSortLog : logs) {
+                if (data.getTitle().equals(publishSortLog.getTitle())) {
+                    sourceId = publishSortLog.getSourceId();
+                    break;
+                }
+            }
+            if (!StringUtils.hasText(sourceId)) {
+                continue;
+            }
+            PublishSingleVideoSource singleVideoSource = publishSingleVideoSourceRepository.getByContentTraceId(sourceId);
+            if (singleVideoSource == null) {
+                continue;
+            }
+            PublishSingleVideoSource upLevel = new PublishSingleVideoSource();
+            BeanUtils.copyProperties(singleVideoSource, upLevel);
+            singleVideoSource.setBadStatus(1);
+            singleVideoSource.setUpLevelTimestamp(System.currentTimeMillis() / 1000);
+            publishSingleVideoSourceRepository.save(singleVideoSource);
+            upLevel.setId(null);
+            upLevel.setContentTraceId("video" + UUID.randomUUID().toString().replace("-", ""));
+            upLevel.setFlowPoolLevel(poolLevel);
+            publishSingleVideoSourceRepository.save(upLevel);
+        }
     }
 
 }