浏览代码

Merge branch 'master' into wyp/0303-contentGroupFunnel

wangyunpeng 4 月之前
父节点
当前提交
ff6f44f2ce

+ 28 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/common/enums/longArticle/VideoTitleReWriteEnum.java

@@ -0,0 +1,28 @@
+package com.tzld.longarticle.recommend.server.common.enums.longArticle;
+
+import lombok.Getter;
+
+@Getter
+public enum VideoTitleReWriteEnum {
+
+    UNAVAILABLE(0, "不可用"),
+    AVAILABLE(1, "可用"),
+    ;
+
+    private final int code;
+    private final String msg;
+
+    VideoTitleReWriteEnum(int code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public static VideoTitleReWriteEnum getByCode(int code) {
+        for (VideoTitleReWriteEnum statusEnum : VideoTitleReWriteEnum.values()) {
+            if (statusEnum.getCode() == code) {
+                return statusEnum;
+            }
+        }
+        return null;
+    }
+}

+ 42 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/entity/longArticle/VideoTitleReWrite.java

@@ -0,0 +1,42 @@
+package com.tzld.longarticle.recommend.server.model.entity.longArticle;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+
+import javax.persistence.*;
+import java.util.Date;
+
+@Data
+@AllArgsConstructor
+@NoArgsConstructor
+@Entity
+@Table(name = "video_title_rewrite")
+public class VideoTitleReWrite {
+
+    @Id
+    @GeneratedValue(strategy = GenerationType.IDENTITY)
+    private Long id;
+
+    @Column(name = "content_trace_id")
+    private String contentTraceId;
+
+    @Column(name = "new_title")
+    private String newTitle;
+
+    @Column(name = "status")
+    private Integer status;
+
+    @Column(name = "create_time")
+    private Date createTime;
+
+    @Column(name = "update_time")
+    private Date updateTime;
+
+    @Column(name = "prompt_version")
+    private String promptVersion;
+
+    @Column(name = "title_audit_status")
+    private Integer titleAuditStatus;
+
+}

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

@@ -0,0 +1,16 @@
+package com.tzld.longarticle.recommend.server.repository.longArticle;
+
+import com.tzld.longarticle.recommend.server.model.entity.longArticle.VideoTitleReWrite;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface VideoTitleReWriteRepository extends JpaRepository<VideoTitleReWrite, Long> {
+
+    List<VideoTitleReWrite> getByContentTraceIdInAndStatusAndTitleAuditStatus(List<String> contentTraceIdList,
+                                                                              Integer status, Integer titleAuditStatus);
+
+    List<VideoTitleReWrite> getByContentTraceIdInAndStatus(List<String> contentTraceIdList, Integer status);
+}

+ 26 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/ArticleVideoPoolService.java

@@ -1,22 +1,47 @@
 package com.tzld.longarticle.recommend.server.service;
 
+import com.tzld.longarticle.recommend.server.common.enums.longArticle.VideoTitleReWriteEnum;
 import com.tzld.longarticle.recommend.server.mapper.longArticle.LongArticleBaseMapper;
 import com.tzld.longarticle.recommend.server.model.entity.longArticle.PublishSingleVideoSource;
+import com.tzld.longarticle.recommend.server.model.entity.longArticle.VideoTitleReWrite;
 import com.tzld.longarticle.recommend.server.model.param.ArticleVideoPoolSourceParam;
 import com.tzld.longarticle.recommend.server.model.vo.ArticleVideoPoolSourceVO;
+import com.tzld.longarticle.recommend.server.repository.longArticle.VideoTitleReWriteRepository;
+import org.apache.commons.collections4.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 @Service
 public class ArticleVideoPoolService {
 
     @Autowired
     private LongArticleBaseMapper longArticleBaseMapper;
+    @Autowired
+    private VideoTitleReWriteRepository videoTitleReWriteRepository;
 
     public List<ArticleVideoPoolSourceVO> getSource(ArticleVideoPoolSourceParam param) {
         List<PublishSingleVideoSource> list = longArticleBaseMapper.getPublishSingleVideoSource(param);
-        return ArticleVideoPoolSourceVO.convertFromPublishSingleVideoSource(list);
+        return buildArticleVideoPoolSourceVOList(list);
+    }
+
+    private List<ArticleVideoPoolSourceVO> buildArticleVideoPoolSourceVOList(List<PublishSingleVideoSource> list) {
+        List<ArticleVideoPoolSourceVO> result = ArticleVideoPoolSourceVO.convertFromPublishSingleVideoSource(list);
+        List<String> contentTraceIdList = result.stream().map(ArticleVideoPoolSourceVO::getSourceId).collect(Collectors.toList());
+        List<VideoTitleReWrite> videoTitleReWriteList = videoTitleReWriteRepository.getByContentTraceIdInAndStatus(
+                contentTraceIdList, VideoTitleReWriteEnum.AVAILABLE.getCode());
+        Map<String, List<VideoTitleReWrite>> videoTitleReWriteMap = videoTitleReWriteList.stream()
+                .sorted((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime()))
+                .collect(Collectors.groupingBy(VideoTitleReWrite::getContentTraceId));
+        for (ArticleVideoPoolSourceVO vo : result) {
+            List<VideoTitleReWrite> reWriteList = videoTitleReWriteMap.get(vo.getSourceId());
+            if (CollectionUtils.isNotEmpty(reWriteList)) {
+                vo.setTitle(reWriteList.get(reWriteList.size() - 1).getNewTitle());
+            }
+        }
+        return result;
     }
 }

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

@@ -5,13 +5,16 @@ import com.ctrip.framework.apollo.spring.annotation.ApolloJsonValue;
 import com.tzld.longarticle.recommend.server.common.enums.aigc.PublishContentStatusEnum;
 import com.tzld.longarticle.recommend.server.common.enums.longArticle.ArticleVideoAuditStatusEnum;
 import com.tzld.longarticle.recommend.server.common.enums.longArticle.ArticleVideoBadStatusEnum;
+import com.tzld.longarticle.recommend.server.common.enums.longArticle.VideoTitleReWriteEnum;
 import com.tzld.longarticle.recommend.server.common.enums.recommend.ContentPoolEnum;
 import com.tzld.longarticle.recommend.server.mapper.aigc.PublishContentMapper;
 import com.tzld.longarticle.recommend.server.mapper.longArticle.VideoPoolAuditMapper;
 import com.tzld.longarticle.recommend.server.model.entity.longArticle.PublishSingleVideoSource;
+import com.tzld.longarticle.recommend.server.model.entity.longArticle.VideoTitleReWrite;
 import com.tzld.longarticle.recommend.server.model.param.videoAudit.*;
 import com.tzld.longarticle.recommend.server.model.vo.VideoPoolAuditListVO;
 import com.tzld.longarticle.recommend.server.repository.longArticle.PublishSingleVideoSourceRepository;
+import com.tzld.longarticle.recommend.server.repository.longArticle.VideoTitleReWriteRepository;
 import com.tzld.longarticle.recommend.server.util.DateUtils;
 import com.tzld.longarticle.recommend.server.util.RedisUtil;
 import com.tzld.longarticle.recommend.server.util.page.Page;
@@ -23,6 +26,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
+import org.springframework.util.StringUtils;
 
 import java.util.*;
 import java.util.concurrent.TimeUnit;
@@ -40,6 +44,8 @@ public class VideoPoolAuditService {
     private PublishSingleVideoSourceRepository videoSourceRepository;
     @Autowired
     private RedisUtil redisUtil;
+    @Autowired
+    private VideoTitleReWriteRepository videoTitleReWriteRepository;
 
     @Autowired
     private RedisTemplate<String, String> redisTemplate;
@@ -72,6 +78,13 @@ public class VideoPoolAuditService {
         if (CollectionUtils.isEmpty(list)) {
             return result;
         }
+
+        List<String> contentTraceIdList = list.stream().map(PublishSingleVideoSource::getContentTraceId).collect(Collectors.toList());
+        List<VideoTitleReWrite> videoTitleReWriteList = videoTitleReWriteRepository.getByContentTraceIdInAndStatus(
+                contentTraceIdList, VideoTitleReWriteEnum.AVAILABLE.getCode());
+        Map<String, List<VideoTitleReWrite>> videoTitleReWriteMap = videoTitleReWriteList.stream()
+                .sorted((o1, o2) -> o2.getCreateTime().compareTo(o1.getCreateTime()))
+                .collect(Collectors.groupingBy(VideoTitleReWrite::getContentTraceId));
         for (PublishSingleVideoSource item : list) {
             VideoPoolAuditListVO vo = new VideoPoolAuditListVO();
             vo.setContentId(item.getContentTraceId());
@@ -84,6 +97,11 @@ public class VideoPoolAuditService {
             if (Objects.nonNull(item.getVideoPoolAuditTimestamp())) {
                 vo.setAuditTimestamp(item.getVideoPoolAuditTimestamp());
             }
+            List<VideoTitleReWrite> titleReWriteList = videoTitleReWriteMap.get(item.getContentTraceId());
+            if (CollectionUtils.isNotEmpty(titleReWriteList)
+                    && !StringUtils.hasText(item.getArticleTitleUpdateAccount())) {
+                vo.setTitle(titleReWriteList.get(titleReWriteList.size() - 1).getNewTitle());
+            }
             VideoPoolAuditListVO.VideoItem videoItem = new VideoPoolAuditListVO.VideoItem();
             videoItem.setVideoId(item.getContentTraceId());
             videoItem.setTitle(item.getMiniProgramTitle());