Преглед на файлове

Merge branch 'dev-xym-update' of Server/long-article-recommend into master

xueyiming преди 8 месеца
родител
ревизия
10e6fac3fb

+ 32 - 3
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/cgi/TouLiuHttpClientService.java

@@ -1,6 +1,8 @@
 package com.tzld.longarticle.recommend.server.service.cgi;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.tzld.longarticle.recommend.server.model.cgi.GroupData;
 import org.springframework.http.MediaType;
 import org.springframework.stereotype.Service;
@@ -8,8 +10,7 @@ import org.springframework.web.reactive.function.BodyInserters;
 import org.springframework.web.reactive.function.client.WebClient;
 import reactor.core.publisher.Mono;
 
-import java.util.List;
-import java.util.UUID;
+import java.util.*;
 
 @Service
 public class TouLiuHttpClientService {
@@ -79,6 +80,34 @@ public class TouLiuHttpClientService {
         return JSON.parseArray(block, GroupData.class);
     }
 
-    // 注意:在实际使用时,你还需要导入相关类和处理异常,以及添加@Service注解到你的服务类上  
+    public static Map<Long, String> getVideoDetailRequest(List<Long> videoIds) {
+        Map<Long, String> map = new HashMap<>();
+        JSONObject params = new JSONObject();
+        params.put("videoIdList", videoIds);
+        WebClient webClient = WebClient.builder()
+                .baseUrl("https://longvideoapi.piaoquantv.com")
+                .build();
+
+        // 发送POST请求
+        Mono<String> result = webClient.post()
+                .uri("/longvideoapi/openapi/video/batchSelectVideoInfo")
+                .contentType(MediaType.APPLICATION_JSON)
+                .body(BodyInserters.fromValue(params.toJSONString()))
+                .retrieve()
+                .bodyToMono(String.class);
+        String block = result.block();
+        JSONObject res = JSONObject.parseObject(block);
+        JSONArray data = res.getJSONArray("data");
+        for (int i = 0; i < data.size(); i++) {
+            JSONObject jsonObject = data.getJSONObject(i);
+            Long videoId = jsonObject.getLong("id");
+            String shareImgPath = jsonObject.getString("shareImgPath");
+            map.put(videoId, shareImgPath);
+        }
+        return map;
+    }
+
+
+    // 注意:在实际使用时,你还需要导入相关类和处理异常,以及添加@Service注解到你的服务类上
     // 另外,请确保MediaType已正确导入,它来自org.springframework.http包  
 }

+ 11 - 3
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/strategy/reply/impl/BuckStrategyV1.java

@@ -13,6 +13,7 @@ import com.tzld.longarticle.recommend.server.repository.model.CgiReplyBucketData
 import com.tzld.longarticle.recommend.server.service.cgi.TouLiuHttpClientService;
 import com.tzld.longarticle.recommend.server.service.strategy.reply.ReplyStrategyService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
@@ -263,8 +264,10 @@ public class BuckStrategyV1 implements ReplyStrategyService {
                 continue;
             }
             // 获取最新dt数据
-            List<AlgGhAutoreplyVideoRankData> dtVserSionStrategyData = getDtVersionStrategyData(key, dtVersion);
-            result.addAll(dtVserSionStrategyData.stream().map(x -> {
+            List<AlgGhAutoreplyVideoRankData> dtVersionStrategyData = getDtVersionStrategyData(key, dtVersion);
+            List<Long> videoIds = dtVersionStrategyData.stream().map(AlgGhAutoreplyVideoRankData::getVideoId).collect(Collectors.toList());
+            Map<Long, String> videoDetailMap = TouLiuHttpClientService.getVideoDetailRequest(videoIds);
+            result.addAll(dtVersionStrategyData.stream().map(x -> {
                 CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData();
                 cgiReplyBucketData.setStrategy(key);
                 cgiReplyBucketData.setSort(x.getSort());
@@ -272,7 +275,12 @@ public class BuckStrategyV1 implements ReplyStrategyService {
                 cgiReplyBucketData.setGhId(x.getGhId());
                 cgiReplyBucketData.setMsgType(1);
                 cgiReplyBucketData.setTitle(x.getTitle());
-                cgiReplyBucketData.setCoverUrl(CDN_URL + x.getCoverUrl());
+                String cover = videoDetailMap.get(x.getVideoId());
+                if (StringUtils.isNotEmpty(cover)) {
+                    cgiReplyBucketData.setCoverUrl(cover);
+                } else {
+                    cgiReplyBucketData.setCoverUrl(CDN_URL + x.getCoverUrl());
+                }
                 cgiReplyBucketData.setMiniAppId(SMALL_APP_Id);
                 cgiReplyBucketData.setMiniVideoId(x.getVideoId());
                 return cgiReplyBucketData;

+ 11 - 4
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/strategy/reply/impl/PushMessageStrategyV1.java

@@ -13,12 +13,12 @@ import com.tzld.longarticle.recommend.server.repository.model.CgiReplyBucketData
 import com.tzld.longarticle.recommend.server.service.cgi.TouLiuHttpClientService;
 import com.tzld.longarticle.recommend.server.service.strategy.reply.ReplyStrategyService;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -222,8 +222,10 @@ public class PushMessageStrategyV1 implements ReplyStrategyService {
                 continue;
             }
             // 获取最新dt数据
-            List<AlgGhAutoreplyVideoRankData> dtVerSionStrategyData = getDtVersionStrategyData(key, dtVersion, bucketDataParam.getGhId());
-            result.addAll(dtVerSionStrategyData.stream().map(x -> {
+            List<AlgGhAutoreplyVideoRankData> dtVersionStrategyData = getDtVersionStrategyData(key, dtVersion, bucketDataParam.getGhId());
+            List<Long> videoIds = dtVersionStrategyData.stream().map(AlgGhAutoreplyVideoRankData::getVideoId).collect(Collectors.toList());
+            Map<Long, String> videoDetailMap = TouLiuHttpClientService.getVideoDetailRequest(videoIds);
+            result.addAll(dtVersionStrategyData.stream().map(x -> {
                 CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData();
                 cgiReplyBucketData.setStrategy(key);
                 cgiReplyBucketData.setSort(x.getSort());
@@ -231,7 +233,12 @@ public class PushMessageStrategyV1 implements ReplyStrategyService {
                 cgiReplyBucketData.setGhId(x.getGhId());
                 cgiReplyBucketData.setMsgType(1);
                 cgiReplyBucketData.setTitle(x.getTitle());
-                cgiReplyBucketData.setCoverUrl(CDN_URL + x.getCoverUrl());
+                String cover = videoDetailMap.get(x.getVideoId());
+                if (StringUtils.isNotEmpty(cover)) {
+                    cgiReplyBucketData.setCoverUrl(cover);
+                } else {
+                    cgiReplyBucketData.setCoverUrl(CDN_URL + x.getCoverUrl());
+                }
                 cgiReplyBucketData.setMiniAppId(SMALL_APP_Id);
                 cgiReplyBucketData.setMiniVideoId(x.getVideoId());
                 return cgiReplyBucketData;

+ 11 - 4
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/strategy/reply/impl/WeComPushMessageStrategyV1.java

@@ -18,7 +18,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
-import org.springframework.util.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.*;
 import java.util.stream.Collectors;
@@ -222,8 +222,10 @@ public class WeComPushMessageStrategyV1 implements ReplyStrategyService {
                 continue;
             }
             // 获取最新dt数据
-            List<AlgGhAutoreplyVideoRankData> dtVerSionStrategyData = getDtVersionStrategyData(key, dtVersion, bucketDataParam.getGhId());
-            result.addAll(dtVerSionStrategyData.stream().map(x -> {
+            List<AlgGhAutoreplyVideoRankData> dtVersionStrategyData = getDtVersionStrategyData(key, dtVersion, bucketDataParam.getGhId());
+            List<Long> videoIds = dtVersionStrategyData.stream().map(AlgGhAutoreplyVideoRankData::getVideoId).collect(Collectors.toList());
+            Map<Long, String> videoDetailMap = TouLiuHttpClientService.getVideoDetailRequest(videoIds);
+            result.addAll(dtVersionStrategyData.stream().map(x -> {
                 CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData();
                 cgiReplyBucketData.setStrategy(key);
                 cgiReplyBucketData.setSort(x.getSort());
@@ -231,7 +233,12 @@ public class WeComPushMessageStrategyV1 implements ReplyStrategyService {
                 cgiReplyBucketData.setGhId(x.getGhId());
                 cgiReplyBucketData.setMsgType(1);
                 cgiReplyBucketData.setTitle(x.getTitle());
-                cgiReplyBucketData.setCoverUrl(CDN_URL + x.getCoverUrl());
+                String cover = videoDetailMap.get(x.getVideoId());
+                if (StringUtils.isNotEmpty(cover)) {
+                    cgiReplyBucketData.setCoverUrl(cover);
+                } else {
+                    cgiReplyBucketData.setCoverUrl(CDN_URL + x.getCoverUrl());
+                }
                 cgiReplyBucketData.setMiniAppId(SMALL_APP_Id);
                 cgiReplyBucketData.setMiniVideoId(x.getVideoId());
                 return cgiReplyBucketData;