| 
														
															@@ -9,6 +9,7 @@ import com.google.common.collect.Lists; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.google.common.util.concurrent.ThreadFactoryBuilder; 
														 | 
														
														 | 
														
															 import com.google.common.util.concurrent.ThreadFactoryBuilder; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.CommonThreadPoolExecutor; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.CommonThreadPoolExecutor; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.enums.FieshuTableColumnDataTypeEnum; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.enums.FieshuTableColumnDataTypeEnum; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import com.tzld.longarticle.recommend.server.common.enums.aigc.MiniprogramUseTypeEnum; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.enums.aigc.ProduceContentAuditStatusEnum; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.enums.aigc.ProduceContentAuditStatusEnum; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.enums.recommend.AccountBusinessTypeEnum; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.enums.recommend.AccountBusinessTypeEnum; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.enums.recommend.ContentPoolEnum; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.common.enums.recommend.ContentPoolEnum; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -20,10 +21,7 @@ import com.tzld.longarticle.recommend.server.mapper.growth.NewPushMessageCallbac 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.mapper.longArticle.LongArticleBaseMapper; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.mapper.longArticle.LongArticleBaseMapper; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.dto.*; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.dto.*; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.dto.aigc.BadCrawlerAccountDTO; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.dto.aigc.BadCrawlerAccountDTO; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import com.tzld.longarticle.recommend.server.model.entity.aigc.CrawlerPlan; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import com.tzld.longarticle.recommend.server.model.entity.aigc.ProducePlan; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import com.tzld.longarticle.recommend.server.model.entity.aigc.ProduceReviewRecord; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-import com.tzld.longarticle.recommend.server.model.entity.aigc.PublishAccount; 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+import com.tzld.longarticle.recommend.server.model.entity.aigc.*; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.entity.crawler.AccountAvgInfo; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.entity.crawler.AccountAvgInfo; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.entity.crawler.GetOffVideoCrawler; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.entity.crawler.GetOffVideoCrawler; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.entity.crawler.LongArticlesVideo; 
														 | 
														
														 | 
														
															 import com.tzld.longarticle.recommend.server.model.entity.crawler.LongArticlesVideo; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -110,6 +108,8 @@ public class XxlJobService { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     private ProducePlanRepository producePlanRepository; 
														 | 
														
														 | 
														
															     private ProducePlanRepository producePlanRepository; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     @Autowired 
														 | 
														
														 | 
														
															     @Autowired 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     private AIGCProduceContentAuditService aigcProduceContentAuditService; 
														 | 
														
														 | 
														
															     private AIGCProduceContentAuditService aigcProduceContentAuditService; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    @Autowired 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private AccountRepository accountRepository; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															     ExecutorService thread = new CommonThreadPoolExecutor( 
														 | 
														
														 | 
														
															     ExecutorService thread = new CommonThreadPoolExecutor( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															             5, 
														 | 
														
														 | 
														
															             5, 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -843,4 +843,82 @@ public class XxlJobService { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															         return ReturnT.SUCCESS; 
														 | 
														
														 | 
														
															         return ReturnT.SUCCESS; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															     } 
														 | 
														
														 | 
														
															     } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    @XxlJob("refreshAccountJob") 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    public ReturnT<String> refreshAccount(String param) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        List<String> accountIds = publishContentMapper.getPublishAccountIds(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        List<Account> accountList = publishContentMapper.getAccountByIds(accountIds); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        List<Account> existsAccounts = accountRepository.findAll(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        Map<String, Account> existsAccountMap = existsAccounts.stream().collect( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                Collectors.toMap(Account::getId, Function.identity())); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        List<String> existsAccountIds = existsAccounts.stream().map(Account::getId).collect(Collectors.toList()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        Long now = System.currentTimeMillis(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        Map<String, List<Integer>> accountNameMap = new HashMap<>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        for (Account account : accountList) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            String type = StringUtils.hasText(account.getType()) && account.getType().contains("买号") ? "买号" : "代运营"; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            // 投流判断 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            List<PublishPlanMiniprogramTask> miniprogramTaskList = publishContentMapper.getAccountMiniprogramTaskList(account.getId()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (CollectionUtil.isNotEmpty(miniprogramTaskList)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                List<Integer> useTypeList = miniprogramTaskList.stream().map(PublishPlanMiniprogramTask::getMiniprogramUseType) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        .distinct().collect(Collectors.toList()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                for (Integer useType : useTypeList) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    if (useType.equals(MiniprogramUseTypeEnum.Touliu.getVal()) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                            || useType.equals(MiniprogramUseTypeEnum.Daitou.getVal()))  { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        type = MiniprogramUseTypeEnum.from(useType).getDescription(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        break; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                if (useTypeList.size() > 1) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                    accountNameMap.put(account.getName(), useTypeList); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            account.setType(type); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            if (!existsAccountIds.contains(account.getId())) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                account.setStatus(1); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                account.setCreateTimestamp(now); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } else { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                Account existAccount = existsAccountMap.get(account.getId()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                account.setStatus(existAccount.getStatus()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                account.setCreateTimestamp(existAccount.getCreateTimestamp()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            account.setUpdateTimestamp(now); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            accountRepository.save(account); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        sendRefreshAccountMsg(accountNameMap); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        return ReturnT.SUCCESS; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private void sendRefreshAccountMsg(Map<String, List<Integer>> accountNameMap) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        if (CollectionUtil.isNotEmpty(accountNameMap)) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            List<FeishuTableDTO.Column> columns = buildRefreshAccountColumns(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            List<JSONObject> rows = new ArrayList<>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            for (Map.Entry<String, List<Integer>> entry : accountNameMap.entrySet()) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                JSONObject row = new JSONObject(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                row.put("account_name", entry.getKey()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                List<String> useTypeList = entry.getValue().stream().map(MiniprogramUseTypeEnum::from) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                        .map(MiniprogramUseTypeEnum::getDescription).collect(Collectors.toList()); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                row.put("ues_type", useTypeList); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                rows.add(row); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            FeishuTableDTO tableDTO = FeishuTableDTO.createTable("账号类型更新异常", columns, rows, true); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            JSONObject content = JSONObject.parseObject(JSONObject.toJSONString(tableDTO)); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            JSONObject bodyParam = new JSONObject(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            bodyParam.put("msg_type", "interactive"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            bodyParam.put("card", content); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+            FeishuMessageSender.sendWebHookMessage(FeishuRobotIdEnum.DAILY.getRobotId(), bodyParam); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    private List<FeishuTableDTO.Column> buildRefreshAccountColumns() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        List<FeishuTableDTO.Column> columns = new ArrayList<>(); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        FeishuTableDTO.Column planIdColumn = FeishuTableDTO.createFeishuColumns( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                FieshuTableColumnDataTypeEnum.TEXT.getType(), "account_name", "账号名称", null); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        columns.add(planIdColumn); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        FeishuTableDTO.Column planNameColumn = FeishuTableDTO.createFeishuColumns( 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+                FieshuTableColumnDataTypeEnum.TEXT.getType(), "ues_type", "用途类型列表", null); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        columns.add(planNameColumn); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+        return columns; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+    } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+ 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 |