| 
					
				 | 
			
			
				@@ -3,9 +3,9 @@ package com.tzld.longarticle.recommend.server.service.strategy.reply.impl; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSON; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.common.enums.cgi.ReplyStrategyServiceEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.tzld.longarticle.recommend.server.model.cgi.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.mapper.crawler.AlgGhAutoreplyVideoRankDataMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.mapper.crawler.CgiReplyBucketDataMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.longarticle.recommend.server.model.cgi.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.repository.model.AlgGhAutoreplyVideoRankData; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.repository.model.AlgGhAutoreplyVideoRankDataExample; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.repository.model.CgiReplyBucketData; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -15,6 +15,7 @@ import com.tzld.longarticle.recommend.server.service.strategy.reply.ReplyStrateg 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import lombok.extern.slf4j.Slf4j; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -37,6 +38,9 @@ public class BuckStrategyV1 implements ReplyStrategyService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private static final String bucketStrategyConfig = "{\"stg0909-base\":[5,6],\"stg0909-explore1\":[7],\"stg0909-explore2\":[8,9]}"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    @Value("${bucketStrategyConfig:{}}") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private String bucketStrategyConfigV2; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      * 自动回复使用小程序Id 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				      */ 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -56,7 +60,7 @@ public class BuckStrategyV1 implements ReplyStrategyService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Override 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public ReplyBucketData getResult(BucketDataParam bucketDataParam) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 0 获取策略key 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        JSONObject bucketStrategyConfigJsonObject = JSON.parseObject(bucketStrategyConfig); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONObject bucketStrategyConfigJsonObject = getStrategyConfig(bucketDataParam.getGhId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Set<String> keyedSet = bucketStrategyConfigJsonObject.keySet(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 1 处理文章--算法引擎--排序文章数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 //        getWenzhangData(); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -71,11 +75,32 @@ public class BuckStrategyV1 implements ReplyStrategyService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return getReplyBucketData(bucketStrategyConfigJsonObject, keyedSet, bucketDataParam.getGhId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private JSONObject getStrategyConfig(String ghId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONObject allStrategyConfigs = JSON.parseObject(bucketStrategyConfigV2); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        JSONObject currentGhIdStrategyConfig = null; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (allStrategyConfigs.containsKey(ghId)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            currentGhIdStrategyConfig = allStrategyConfigs.getJSONObject(ghId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else if (allStrategyConfigs.containsKey("default")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            currentGhIdStrategyConfig = allStrategyConfigs.getJSONObject("default"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            log.error("invalid strategy config: default key does not exist"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new RuntimeException("Default strategy config does not exist"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        // check param 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (!currentGhIdStrategyConfig.containsKey("base")) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            throw new RuntimeException("Strategy config does not have manual base"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        return currentGhIdStrategyConfig; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ReplyBucketData getReplyBucketData(JSONObject bucketStrategyConfigJsonObject, Set<String> keyedSet, String ghId) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 策略小程序数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         ReplyBucketData replyBucketData = new ReplyBucketData(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<GroupData> groupDataList = new ArrayList<>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (String key : keyedSet) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            if ("base".equals(key)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                continue; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             CgiReplyBucketDataExample cgiReplyBucketDataExample = new CgiReplyBucketDataExample(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             cgiReplyBucketDataExample.createCriteria().andIsDeleteEqualTo(0).andStrategyEqualTo(key).andGhIdEqualTo(ghId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             cgiReplyBucketDataExample.setOrderByClause("sort"); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -110,6 +135,10 @@ public class BuckStrategyV1 implements ReplyStrategyService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         // 获取人工实验数据 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<GroupData> groupDataBaseList = httpClientService.sendPenGongBaseRequest(ghId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        int baseBucketNum = bucketStrategyConfigJsonObject.getJSONArray("base").size(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        if (groupDataBaseList.size() > baseBucketNum) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+            groupDataBaseList = groupDataBaseList.subList(0, baseBucketNum); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         if (!CollectionUtils.isEmpty(groupDataBaseList)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             GroupData groupData = groupDataBaseList.get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<MsgData> msgDataList = groupData.getMsgDataList(); 
			 |