Sfoglia il codice sorgente

自动回复策略 视频数据修改同步

wangyunpeng 2 settimane fa
parent
commit
02b2d12fe3

+ 45 - 0
api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/ReplyStrategyService.java

@@ -3,10 +3,55 @@ package com.tzld.piaoquan.api.service.strategy;
 import com.tzld.piaoquan.api.common.enums.ReplyStrategyServiceEnum;
 import com.tzld.piaoquan.api.model.bo.BucketDataParam;
 import com.tzld.piaoquan.api.model.bo.ReplyBucketData;
+import com.tzld.piaoquan.growth.common.model.po.CgiReplyBucketData;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 public interface ReplyStrategyService {
 
     ReplyBucketData getResult(BucketDataParam bucketDataParam);
 
     Boolean support(ReplyStrategyServiceEnum key);
+
+    static List<CgiReplyBucketData> checkCgiReplyBucketDataDiff(List<CgiReplyBucketData> result,
+                                                                List<CgiReplyBucketData> existCgiReplyBucketDataList) {
+        if (CollectionUtils.isEmpty(result)) {
+            return null;
+        }
+        if (result.size() != existCgiReplyBucketDataList.size()) {
+            return result;
+        }
+        Map<Long, CgiReplyBucketData> existCgiReplyBucketDataMap = existCgiReplyBucketDataList.stream()
+                .collect(Collectors.toMap(CgiReplyBucketData::getMiniVideoId, x -> x, (a, b) -> b));
+        boolean diff = false;
+        for (CgiReplyBucketData cgiReplyBucketData : result) {
+            if (!existCgiReplyBucketDataMap.containsKey(cgiReplyBucketData.getMiniVideoId())) {
+                diff = true;
+                break;
+            }
+            if (!StringUtils.equals(cgiReplyBucketData.getTitle(), existCgiReplyBucketDataMap.get(cgiReplyBucketData.getMiniVideoId()).getTitle())) {
+                diff = true;
+                break;
+            }
+            String resultCoverUrl = cgiReplyBucketData.getCoverUrl();
+            String existCoverUrl = existCgiReplyBucketDataMap.get(cgiReplyBucketData.getMiniVideoId()).getCoverUrl();
+            // cover处理,获取url
+            if (StringUtils.isNotEmpty(resultCoverUrl)) {
+                resultCoverUrl = resultCoverUrl.split("\\?")[0];
+            }
+            if (StringUtils.isNotEmpty(existCoverUrl)) {
+                existCoverUrl = existCoverUrl.split("\\?")[0];
+            }
+            if (!StringUtils.equals(resultCoverUrl, existCoverUrl)) {
+                diff = true;
+                break;
+            }
+        }
+        return diff ? result : null;
+    }
+
 }

+ 16 - 14
api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/BuckStrategyV1.java

@@ -399,22 +399,22 @@ public class BuckStrategyV1 implements ReplyStrategyService {
                 .andGhIdEqualTo(bucketDataParam.getGhId());
         long allCount = cgiReplyBucketDataMapper.countByExample(countExample);
         if (!CollectionUtils.isEmpty(bucketDataParam.getMiniPageDatas())) {
+            List<CgiReplyBucketData> existCgiReplyBucketDataList = new ArrayList<>();
             if (allCount == bucketDataParam.getMiniPageDatas().size()) {
-                int existNum = 0;
                 for (int i = 0; i < bucketDataParam.getMiniPageDatas().size(); i++) {
                     int sort = i + 1;
                     MiniPageData miniPageData = bucketDataParam.getMiniPageDatas().get(i);
                     CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
                     cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyEqualTo(key)
                             .andGhIdEqualTo(bucketDataParam.getGhId()).andMiniPagePathEqualTo(miniPageData.getPage()).andSortEqualTo(sort);
-                    long count = cgiReplyBucketDataMapper.countByExample(cgiReplyBucketDataExample);
-                    if (count > 0) {
-                        existNum++;
+                    List<CgiReplyBucketData> list = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample);
+                    if (!CollectionUtils.isEmpty(list)) {
+                        existCgiReplyBucketDataList.addAll(list);
                     }
                 }
-                if (existNum == bucketDataParam.getMiniPageDatas().size()) {
-                    return null;
-                }
+                //if (existNum == bucketDataParam.getVideos().size()) {
+                //    continue;
+                //}
             }
 
             for (int i = 0; i < bucketDataParam.getMiniPageDatas().size(); i++) {
@@ -431,23 +431,24 @@ public class BuckStrategyV1 implements ReplyStrategyService {
                 cgiReplyBucketData.setMiniAppId(SMALL_APP_Id);
                 result.add(cgiReplyBucketData);
             }
+            result = ReplyStrategyService.checkCgiReplyBucketDataDiff(result, existCgiReplyBucketDataList);
         } else if (!CollectionUtils.isEmpty(bucketDataParam.getVideos())) {
+            List<CgiReplyBucketData> existCgiReplyBucketDataList = new ArrayList<>();
             if (allCount == bucketDataParam.getVideos().size()) {
-                int existNum = 0;
                 for (int i = 0; i < bucketDataParam.getVideos().size(); i++) {
                     int sort = i + 1;
                     Long videoId = bucketDataParam.getVideos().get(i);
                     CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
                     cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyEqualTo(key)
                             .andGhIdEqualTo(bucketDataParam.getGhId()).andMiniVideoIdEqualTo(videoId).andSortEqualTo(sort);
-                    long count = cgiReplyBucketDataMapper.countByExample(cgiReplyBucketDataExample);
-                    if (count > 0) {
-                        existNum++;
+                    List<CgiReplyBucketData> list = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample);
+                    if (!CollectionUtils.isEmpty(list)) {
+                        existCgiReplyBucketDataList.addAll(list);
                     }
                 }
-                if (existNum == bucketDataParam.getVideos().size()) {
-                    return null;
-                }
+                //if (existNum == bucketDataParam.getVideos().size()) {
+                //    continue;
+                //}
             }
             for (int i = 0; i < bucketDataParam.getVideos().size(); i++) {
                 int sort = i + 1;
@@ -485,6 +486,7 @@ public class BuckStrategyV1 implements ReplyStrategyService {
                 cgiReplyBucketData.setMiniVideoId(videoId);
                 result.add(cgiReplyBucketData);
             }
+            result = ReplyStrategyService.checkCgiReplyBucketDataDiff(result, existCgiReplyBucketDataList);
         } else {
             return null;
         }

+ 8 - 8
api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/ThirdPartyPushMessageStrategyV1.java

@@ -286,22 +286,22 @@ public class ThirdPartyPushMessageStrategyV1 implements ReplyStrategyService {
                         result.add(cgiReplyBucketData);
                     }
                 } else if (!CollectionUtils.isEmpty(bucketDataParam.getVideos())) {
+                    List<CgiReplyBucketData> existCgiReplyBucketDataList = new ArrayList<>();
                     if (allCount == bucketDataParam.getVideos().size()) {
-                        int existNum = 0;
                         for (int i = 0; i < bucketDataParam.getVideos().size(); i++) {
                             int sort = i + 1;
                             Long videoId = bucketDataParam.getVideos().get(i);
                             CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
                             cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyEqualTo(key)
                                     .andGhIdEqualTo(bucketDataParam.getGhId()).andMiniVideoIdEqualTo(videoId).andSortEqualTo(sort);
-                            long count = cgiReplyBucketDataMapper.countByExample(cgiReplyBucketDataExample);
-                            if (count > 0) {
-                                existNum++;
+                            List<CgiReplyBucketData> list = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample);
+                            if (!CollectionUtils.isEmpty(list)) {
+                                existCgiReplyBucketDataList.addAll(list);
                             }
                         }
-                        if (existNum == bucketDataParam.getVideos().size()) {
-                            continue;
-                        }
+                        //if (existNum == bucketDataParam.getVideos().size()) {
+                        //    continue;
+                        //}
                     }
                     Map<Long, VideoDetail> videoDetailMap = touLiuHttpClient.getVideoDetailRequest(bucketDataParam.getVideos());
                     List<ContentPlatformGzhPlanVideo> gzhPlanVideoList = contentPlatformPlanService.getGzhPlanVideoListByCooperateAccountId(bucketDataParam.getGhId());
@@ -343,7 +343,7 @@ public class ThirdPartyPushMessageStrategyV1 implements ReplyStrategyService {
                         cgiReplyBucketData.setMiniVideoId(videoId);
                         result.add(cgiReplyBucketData);
                     }
-
+                    result = ReplyStrategyService.checkCgiReplyBucketDataDiff(result, existCgiReplyBucketDataList);
                 } else {
                     return null;
                 }

+ 8 - 7
api-module/src/main/java/com/tzld/piaoquan/api/service/strategy/impl/WeComPushMessageStrategyV1.java

@@ -238,22 +238,22 @@ public class WeComPushMessageStrategyV1 implements ReplyStrategyService {
                 countExample.createCriteria().andIsDeleteEqualTo(0).andStrategyEqualTo(key)
                         .andGhIdEqualTo(bucketDataParam.getGhId());
                 long allCount = cgiReplyBucketDataMapper.countByExample(countExample);
+                List<CgiReplyBucketData> existCgiReplyBucketDataList = new ArrayList<>();
                 if (allCount == bucketDataParam.getVideos().size()) {
-                    int existNum = 0;
                     for (int i = 0; i < bucketDataParam.getVideos().size(); i++) {
                         int sort = i + 1;
                         Long videoId = bucketDataParam.getVideos().get(i);
                         CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample();
                         cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyEqualTo(key)
                                 .andGhIdEqualTo(bucketDataParam.getGhId()).andMiniVideoIdEqualTo(videoId).andSortEqualTo(sort);
-                        long count = cgiReplyBucketDataMapper.countByExample(cgiReplyBucketDataExample);
-                        if (count > 0) {
-                            existNum++;
+                        List<CgiReplyBucketData> list = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample);
+                        if (!CollectionUtils.isEmpty(list)) {
+                            existCgiReplyBucketDataList.addAll(list);
                         }
                     }
-                    if (existNum == bucketDataParam.getVideos().size()) {
-                        continue;
-                    }
+                    //if (existNum == bucketDataParam.getVideos().size()) {
+                    //    continue;
+                    //}
                 }
                 Map<Long, VideoDetail> videoDetailMap = touLiuHttpClient.getVideoDetailRequest(bucketDataParam.getVideos());
                 for (int i = 0; i < bucketDataParam.getVideos().size(); i++) {
@@ -275,6 +275,7 @@ public class WeComPushMessageStrategyV1 implements ReplyStrategyService {
                     cgiReplyBucketData.setMiniVideoId(videoId);
                     result.add(cgiReplyBucketData);
                 }
+                result = ReplyStrategyService.checkCgiReplyBucketDataDiff(result, existCgiReplyBucketDataList);
             } else {
                 // 获取最新dt的策略
                 String dtVersion = algGhAutoreplyVideoRankDataMapper.selectLatestDtVersionByStrategyKeyAndGhId(key, bucketDataParam.getGhId());