| 
														
															@@ -2,6 +2,8 @@ package com.tzld.longarticle.recommend.server.service.score.strategy; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.Content; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.Content; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.ContentHisPublishArticle; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.ContentHisPublishArticle; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import com.tzld.longarticle.recommend.server.repository.crawler.AccountAvgInfoRepository; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import com.tzld.longarticle.recommend.server.repository.entity.crawler.AccountAvgInfo; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.service.AccountContentPoolConfigService; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.service.AccountContentPoolConfigService; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.service.AccountIndexAvgViewCountService; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.service.AccountIndexAvgViewCountService; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.service.score.Score; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.service.score.Score; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -12,7 +14,11 @@ import lombok.extern.slf4j.Slf4j; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.beans.factory.annotation.Autowired; 
														 | 
														
														 | 
														
															 import org.springframework.beans.factory.annotation.Autowired; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import org.springframework.stereotype.Component; 
														 | 
														
														 | 
														
															 import org.springframework.stereotype.Component; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import java.util.*; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import java.util.ArrayList; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import java.util.List; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import java.util.Map; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import java.util.Objects; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import java.util.stream.Collectors; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 @Component 
														 | 
														
														 | 
														
															 @Component 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 @Slf4j 
														 | 
														
														 | 
														
															 @Slf4j 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -21,19 +27,31 @@ public class ViewCountRateStrategy implements ScoreStrategy { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @Autowired 
														 | 
														
														 | 
														
															     @Autowired 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     AccountIndexAvgViewCountService accountIndexAvgViewCountService; 
														 | 
														
														 | 
														
															     AccountIndexAvgViewCountService accountIndexAvgViewCountService; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @Autowired 
														 | 
														
														 | 
														
															     @Autowired 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    private AccountContentPoolConfigService accountContentPoolConfigService; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    AccountContentPoolConfigService accountContentPoolConfigService; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    @Autowired 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    AccountAvgInfoRepository accountAvgInfoRepository; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @Override 
														 | 
														
														 | 
														
															     @Override 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     public List<Score> score(ScoreParam param) { 
														 | 
														
														 | 
														
															     public List<Score> score(ScoreParam param) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        long start = System.currentTimeMillis(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         List<Score> scores = new ArrayList<>(); 
														 | 
														
														 | 
														
															         List<Score> scores = new ArrayList<>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        String[] contentPools = accountContentPoolConfigService.getContentPools(param.getAccountName()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        List<AccountAvgInfo> avgInfoList = accountAvgInfoRepository.getAllByGhIdEqualsAndStatusEquals(param.getGhId(), 1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        Map<Integer, Double> avgInfoMap = avgInfoList.stream().collect(Collectors.toMap(o -> Integer.valueOf(o.getPosition()), AccountAvgInfo::getReadAvg)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        double avgViewCountFirst = avgInfoMap.get(1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         for (Content content : param.getContents()) { 
														 | 
														
														 | 
														
															         for (Content content : param.getContents()) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-            String[] contentPools = accountContentPoolConfigService.getContentPools(param.getAccountName()); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             for (int i = 0; i < contentPools.length; i++) { 
														 | 
														
														 | 
														
															             for (int i = 0; i < contentPools.length; i++) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 if (!contentPools[i].equals(content.getContentPoolType())) { 
														 | 
														
														 | 
														
															                 if (!contentPools[i].equals(content.getContentPoolType())) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                     continue; 
														 | 
														
														 | 
														
															                     continue; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 } 
														 | 
														
														 | 
														
															                 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                double avgViewCountPos = accountIndexAvgViewCountService.getAvgReadCountByDB(param.getGhId(), i + 1); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-                double avgViewCountFirst = accountIndexAvgViewCountService.getAvgReadCountByDB(param.getGhId(), 1); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                double avgViewCountPos; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if (avgInfoMap.containsKey(i + 1)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    avgViewCountPos = avgInfoMap.get(i + 1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                } else if (avgInfoMap.containsKey(4)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    avgViewCountPos = avgInfoMap.get(4); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                } else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    avgViewCountPos = avgInfoMap.get(1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 double showViewCountSum = 0D; 
														 | 
														
														 | 
														
															                 double showViewCountSum = 0D; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 double avgViewCountSum = 0D; 
														 | 
														
														 | 
														
															                 double avgViewCountSum = 0D; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 double showViewCountSumFirst = 0D; 
														 | 
														
														 | 
														
															                 double showViewCountSumFirst = 0D; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -88,6 +106,7 @@ public class ViewCountRateStrategy implements ScoreStrategy { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															                 break; 
														 | 
														
														 | 
														
															                 break; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             } 
														 | 
														
														 | 
														
															             } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         } 
														 | 
														
														 | 
														
															         } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        log.info("ViewCountRateStrategy cost:{}", System.currentTimeMillis() - start); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return scores; 
														 | 
														
														 | 
														
															         return scores; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 |