| 
														
															@@ -17,6 +17,7 @@ import org.springframework.beans.BeanUtils; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.beans.factory.annotation.Autowired; 
														 | 
														
														 | 
														
															 import org.springframework.beans.factory.annotation.Autowired; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.stereotype.Service; 
														 | 
														
														 | 
														
															 import org.springframework.stereotype.Service; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.util.CollectionUtils; 
														 | 
														
														 | 
														
															 import org.springframework.util.CollectionUtils; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import org.springframework.util.StringUtils; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import java.util.*; 
														 | 
														
														 | 
														
															 import java.util.*; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import java.util.stream.Collectors; 
														 | 
														
														 | 
														
															 import java.util.stream.Collectors; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -62,12 +63,12 @@ public class PushMessageStrategyV1 implements ReplyStrategyService { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // 1 处理文章--算法引擎--排序文章数据 
														 | 
														
														 | 
														
															         // 1 处理文章--算法引擎--排序文章数据 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 //        getWenzhangData(); 
														 | 
														
														 | 
														
															 //        getWenzhangData(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // 2 处理小程序--读取离线数据表--获取策略排序小程序数据 
														 | 
														
														 | 
														
															         // 2 处理小程序--读取离线数据表--获取策略排序小程序数据 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        List<CgiReplyBucketData> smallDataCgiReplyList = readStrategyOrderSmallData(keyedSet); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        List<CgiReplyBucketData> smallDataCgiReplyList = readStrategyOrderSmallData(keyedSet, bucketDataParam); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // 2.1 获取小程序落地页地址 http调用 
														 | 
														
														 | 
														
															         // 2.1 获取小程序落地页地址 http调用 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         smallDataCgiReplyList = setSmallPageUrl(smallDataCgiReplyList); 
														 | 
														
														 | 
														
															         smallDataCgiReplyList = setSmallPageUrl(smallDataCgiReplyList); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         log.info(JSON.toJSONString(smallDataCgiReplyList)); 
														 | 
														
														 | 
														
															         log.info(JSON.toJSONString(smallDataCgiReplyList)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // 3 入库读表 
														 | 
														
														 | 
														
															         // 3 入库读表 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        insertSmallData(smallDataCgiReplyList, keyedSet); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        insertSmallData(smallDataCgiReplyList, keyedSet, bucketDataParam); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         // 4 组装分桶数据 
														 | 
														
														 | 
														
															         // 4 组装分桶数据 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return getReplyBucketData(bucketStrategyConfigJsonObject, keyedSet, bucketDataParam.getGhId()); 
														 | 
														
														 | 
														
															         return getReplyBucketData(bucketStrategyConfigJsonObject, keyedSet, bucketDataParam.getGhId()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -116,7 +117,7 @@ public class PushMessageStrategyV1 implements ReplyStrategyService { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    private void insertSmallData(List<CgiReplyBucketData> smallDataCgiReplyList, Set<String> keyedSet) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private void insertSmallData(List<CgiReplyBucketData> smallDataCgiReplyList, Set<String> keyedSet, BucketDataParam bucketDataParam) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         if (CollectionUtils.isEmpty(smallDataCgiReplyList)) { 
														 | 
														
														 | 
														
															         if (CollectionUtils.isEmpty(smallDataCgiReplyList)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             return; 
														 | 
														
														 | 
														
															             return; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -124,14 +125,17 @@ public class PushMessageStrategyV1 implements ReplyStrategyService { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if ("base".equals(key)) { 
														 | 
														
														 | 
														
															             if ("base".equals(key)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 continue; 
														 | 
														
														 | 
														
															                 continue; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            List<CgiReplyBucketData> collect = smallDataCgiReplyList.stream().filter(x -> x.getStrategy().equals(key)).collect(Collectors.toList()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            List<CgiReplyBucketData> collect = smallDataCgiReplyList.stream() 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    .filter(x -> x.getStrategy().equals(key)) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    .filter(x -> x.getGhId().equals(bucketDataParam.getGhId())) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    .collect(Collectors.toList()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (CollectionUtils.isEmpty(collect)) { 
														 | 
														
														 | 
														
															             if (CollectionUtils.isEmpty(collect)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                log.error("insertSmallData 算法排序数据异常,data:" + JSON.toJSONString(smallDataCgiReplyList)); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                log.error("PushMessageStrategyV1 insertSmallData 算法排序数据异常,data:" + JSON.toJSONString(smallDataCgiReplyList)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 continue; 
														 | 
														
														 | 
														
															                 continue; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             // 清上个版本的策略数据 
														 | 
														
														 | 
														
															             // 清上个版本的策略数据 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample(); 
														 | 
														
														 | 
														
															             CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andMsgTypeEqualTo(1).andStrategyEqualTo(key); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andMsgTypeEqualTo(1).andStrategyEqualTo(key).andGhIdEqualTo(bucketDataParam.getGhId()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             List<CgiReplyBucketData> cgiReplyBucketData1 = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample); 
														 | 
														
														 | 
														
															             List<CgiReplyBucketData> cgiReplyBucketData1 = cgiReplyBucketDataMapper.selectByExample(cgiReplyBucketDataExample); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             for (CgiReplyBucketData cgiReplyBucketData : cgiReplyBucketData1) { 
														 | 
														
														 | 
														
															             for (CgiReplyBucketData cgiReplyBucketData : cgiReplyBucketData1) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 cgiReplyBucketData.setIsDelete(1); 
														 | 
														
														 | 
														
															                 cgiReplyBucketData.setIsDelete(1); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -193,26 +197,29 @@ public class PushMessageStrategyV1 implements ReplyStrategyService { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return smallDataCgiReplyList; 
														 | 
														
														 | 
														
															         return smallDataCgiReplyList; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    private List<CgiReplyBucketData> readStrategyOrderSmallData(Set<String> keyedSet) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private List<CgiReplyBucketData> readStrategyOrderSmallData(Set<String> keyedSet, BucketDataParam bucketDataParam) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         List<CgiReplyBucketData> result = new ArrayList<>(); 
														 | 
														
														 | 
														
															         List<CgiReplyBucketData> result = new ArrayList<>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        // TODO: 只更新对应公众号的数据 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for (String key : keyedSet) { 
														 | 
														
														 | 
														
															         for (String key : keyedSet) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if ("base".equals(key)) { 
														 | 
														
														 | 
														
															             if ("base".equals(key)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 // base作为人工控制 
														 | 
														
														 | 
														
															                 // base作为人工控制 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 continue; 
														 | 
														
														 | 
														
															                 continue; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             // 获取最新dt的策略 
														 | 
														
														 | 
														
															             // 获取最新dt的策略 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            String dtVersion = algGhAutoreplyVideoRankDataMapper.selectLatestDtVersionByStrategyKey(key); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            String dtVersion = algGhAutoreplyVideoRankDataMapper.selectLatestDtVersionByStrategyKeyAndGhId(key, bucketDataParam.getGhId()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (StringUtils.isEmpty(dtVersion)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                bucketDataParam.setGhId("default"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                dtVersion = algGhAutoreplyVideoRankDataMapper.selectLatestDtVersionByStrategyKeyAndGhId(key, bucketDataParam.getGhId()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             // 判断当前的dtVersion是否已经处理过了 
														 | 
														
														 | 
														
															             // 判断当前的dtVersion是否已经处理过了 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample(); 
														 | 
														
														 | 
														
															             CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyDtEqualTo(dtVersion).andStrategyEqualTo(key); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyDtEqualTo(dtVersion).andStrategyEqualTo(key).andGhIdEqualTo(bucketDataParam.getGhId()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             long count = cgiReplyBucketDataMapper.countByExample(cgiReplyBucketDataExample); 
														 | 
														
														 | 
														
															             long count = cgiReplyBucketDataMapper.countByExample(cgiReplyBucketDataExample); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             if (count != 0) { 
														 | 
														
														 | 
														
															             if (count != 0) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 // 说明已处理过该dtVersion数据 
														 | 
														
														 | 
														
															                 // 说明已处理过该dtVersion数据 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 continue; 
														 | 
														
														 | 
														
															                 continue; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             // 获取最新dt数据 
														 | 
														
														 | 
														
															             // 获取最新dt数据 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            List<AlgGhAutoreplyVideoRankData> dtVserSionStrategyData = getDtVersionStrategyData(key, dtVersion); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            List<AlgGhAutoreplyVideoRankData> dtVserSionStrategyData = getDtVersionStrategyData(key, dtVersion, bucketDataParam.getGhId()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             result.addAll(dtVserSionStrategyData.stream().map(x -> { 
														 | 
														
														 | 
														
															             result.addAll(dtVserSionStrategyData.stream().map(x -> { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData(); 
														 | 
														
														 | 
														
															                 CgiReplyBucketData cgiReplyBucketData = new CgiReplyBucketData(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 cgiReplyBucketData.setStrategy(key); 
														 | 
														
														 | 
														
															                 cgiReplyBucketData.setStrategy(key); 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -231,9 +238,9 @@ public class PushMessageStrategyV1 implements ReplyStrategyService { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return CollectionUtils.isEmpty(result) ? null : result; 
														 | 
														
														 | 
														
															         return CollectionUtils.isEmpty(result) ? null : result; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    private List<AlgGhAutoreplyVideoRankData> getDtVersionStrategyData(String key, String dtVersion) { 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private List<AlgGhAutoreplyVideoRankData> getDtVersionStrategyData(String key, String dtVersion, String ghId) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         AlgGhAutoreplyVideoRankDataExample algGhAutoreplyVideoRankDataExample = new AlgGhAutoreplyVideoRankDataExample(); 
														 | 
														
														 | 
														
															         AlgGhAutoreplyVideoRankDataExample algGhAutoreplyVideoRankDataExample = new AlgGhAutoreplyVideoRankDataExample(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-        algGhAutoreplyVideoRankDataExample.createCriteria().andIsDeleteEqualTo(0).andDtVersionEqualTo(dtVersion).andStrategyKeyEqualTo(key); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        algGhAutoreplyVideoRankDataExample.createCriteria().andIsDeleteEqualTo(0).andDtVersionEqualTo(dtVersion).andStrategyKeyEqualTo(key).andGhIdEqualTo(ghId); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return algGhAutoreplyVideoRankDataMapper.selectByExample(algGhAutoreplyVideoRankDataExample); 
														 | 
														
														 | 
														
															         return algGhAutoreplyVideoRankDataMapper.selectByExample(algGhAutoreplyVideoRankDataExample); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 |