From 693f70da11701e777203e263d7da41abb648dd0f Mon Sep 17 00:00:00 2001
From: guyue <1721849008@qq.com>
Date: 星期三, 16 七月 2025 20:16:29 +0800
Subject: [PATCH] 对比采集,实时状态

---
 src/main/java/com/linghu/controller/CollectController.java |   32 ++++++++++++++++++++------------
 1 files changed, 20 insertions(+), 12 deletions(-)

diff --git a/src/main/java/com/linghu/controller/CollectController.java b/src/main/java/com/linghu/controller/CollectController.java
index 1ad4f89..629e9c0 100644
--- a/src/main/java/com/linghu/controller/CollectController.java
+++ b/src/main/java/com/linghu/controller/CollectController.java
@@ -141,7 +141,7 @@
         // ... 原有逻辑 ...
         int maxConcurrentUsers = searchTaskRequest.getConfig() != null ?
                 searchTaskRequest.getConfig().getMax_concurrent_users() : 3;
-        List<List<UserDto>> userBatches = splitUsersIntoBatches(searchTaskRequest.getUsers(), maxConcurrentUsers, keywordId);
+        List<List<UserDto>> userBatches = splitUsersIntoBatches(searchTaskRequest.getUsers(), maxConcurrentUsers, keywordId,searchTaskRequest.getIs_first());
 
 
         // 创建批次队列并存入全局映射
@@ -368,13 +368,14 @@
 //                .then();
 //    }
 
-    private List<List<UserDto>> splitUsersIntoBatches(List<UserDto> users, int batchSize,Integer keywordId) {
+    private List<List<UserDto>> splitUsersIntoBatches(List<UserDto> users, int batchSize,Integer keywordId,Boolean isFirst) {
 
         Keyword keyword = keywordService.getById(keywordId);
-        if (null==keyword.getNum()){
-            keyword.setNum(0);
+        if (isFirst){
+            keyword.setNum(1);
+        }else {
+            keyword.setNum(keyword.getNum()+1);
         }
-        keyword.setNum(keyword.getNum()+1);
         keywordService.updateById(keyword);
 
         List<List<UserDto>> batches = new ArrayList<>();
@@ -642,7 +643,7 @@
 //                if (keywordTasks.stream().allMatch(task ->
 //                        "completed".equals(task.getStatus()) || "false".equals(task.getStatus()) || "canceled".equals(task.getStatus())
 //                )) {
-//                    keyword.setStatus("canceled");
+                    keyword.setStatus("completed");
                     keywordService.updateById(keyword);
 //                    log.info("关键词 {} 所有任务已完成,更新状态为 completed", keywordId);
 //                }
@@ -835,9 +836,9 @@
      * @param domain 平台域名
      * @return 已存在或新创建的Platform
      */
-    private Platform getOrCreatePlatform(String domain) {
+    private Platform getOrCreatePlatform(String domain,String platformName) {
         // 1. 先尝试查询已存在的平台
-        Platform platform = platformService.getPlatformByDomain(domain);
+        Platform platform = platformService.getPlatformByDomain(domain,platformName);
         if (platform != null) {
             return platform;
         }
@@ -856,7 +857,12 @@
             // 2.2 构建新平台对象
             Platform newPlatform = new Platform();
             newPlatform.setDomain(domain);
-            newPlatform.setPlatform_name(domain); // 平台名称默认使用域名,可根据实际需求调整
+            if (platformName != null) {
+                newPlatform.setPlatform_name(platformName);
+            }else {
+                newPlatform.setPlatform_name(domain);
+            }
+        // 平台名称默认使用域名,可根据实际需求调整
             newPlatform.setType_id(defaultType.getType_id());
             newPlatform.setCreate_time(LocalDateTime.now()); // 补充创建时间
 
@@ -867,7 +873,7 @@
         } catch (DuplicateKeyException e) {
             // 3. 若捕获到重复键异常,说明并发创建了,重新查询即可(此时数据库中已存在该平台)
             log.warn("平台domain={}已存在,无需重复创建", domain, e);
-            return platformService.getPlatformByDomain(domain); // 重新查询,一定能获取到
+            return platformService.getPlatformByDomain(domain,platformName); // 重新查询,一定能获取到
         } catch (Exception e) {
             // 处理其他异常(如数据库连接失败等)
             log.error("创建平台失败,domain={}", domain, e);
@@ -1076,7 +1082,9 @@
                                     reference.setNum(keyword.getNum());
                                     reference.setTask_id(result.getTask_id());
                                     reference.setKeyword_id(keyword.getKeyword_id());
-                                    reference.setCreate_time(LocalDateTime.now());
+                                    if (null!=ref.getPublish_time()) {
+                                        reference.setCreate_time(ref.getPublish_time().atStartOfDay());
+                                    }
 
                                    /* // 处理平台和类型关联
                                     Platform platform = platformService.getPlatformByDomain(reference.getDomain());
@@ -1109,7 +1117,7 @@
                                     }
 */
                                     // 关键:使用优化后的方法获取平台,避免重复创建
-                                    Platform platform = getOrCreatePlatform(ref.getDomain());
+                                    Platform platform = getOrCreatePlatform(ref.getDomain(),ref.getPlatform_name());
                                     reference.setPlatform_id(platform.getPlatform_id());
                                     reference.setType_id(platform.getType_id()); // 直接从平台获取类型ID,更可靠
                                     // 添加到结果列表

--
Gitblit v1.7.1