From 1e62f21db4ea2012ab0133b21682717204056804 Mon Sep 17 00:00:00 2001
From: guyue <1721849008@qq.com>
Date: 星期日, 13 七月 2025 20:48:09 +0800
Subject: [PATCH] 修改状态逻辑

---
 src/main/java/com/linghu/controller/CollectController.java |   49 ++++++++++++++++++++++++++++++++++++++++---------
 1 files changed, 40 insertions(+), 9 deletions(-)

diff --git a/src/main/java/com/linghu/controller/CollectController.java b/src/main/java/com/linghu/controller/CollectController.java
index 4110880..1ace567 100644
--- a/src/main/java/com/linghu/controller/CollectController.java
+++ b/src/main/java/com/linghu/controller/CollectController.java
@@ -440,14 +440,19 @@
 //                                    keywordTaskService.updateById(taskToUpdate);
 
 
-                                    //设置订单进入采集状态
-                                    LambdaUpdateWrapper<Orders> updateOrderWrapper = new LambdaUpdateWrapper<>();
-                                    updateOrderWrapper.eq(Orders::getOrder_id, keyword.getOrder_id()) // 确保字段名正确
-                                            .set(Orders::getStatus, 2); // 直接设置状态值
+                                    //所有关键词都在采集中或者已完成或者错误设置订单进入采集状态
+                                    List<Keyword> orderKeywords = keywordService.list(new LambdaQueryWrapper<Keyword>()
+                                            .eq(Keyword::getOrder_id, keyword.getOrder_id()));
+                                    if (!orderKeywords.isEmpty() && orderKeywords.stream().allMatch(k ->
+                                            "completed".equals(k.getStatus()) || "submitted".equals(k.getStatus())
+                                    )) {
+                                        Orders orders = orderService.getById(keyword.getOrder_id());
+                                        if (orders != null) {
+                                            orders.setStatus(2);
+                                            orderService.updateById(orders);
 
-                                    boolean success = orderService.update(updateOrderWrapper);
-                                    log.info("订单状态更新结果: {}", success ? "成功" : "失败");
-
+                                        }
+                                    }
                                 }).subscribeOn(Schedulers.boundedElastic()) // 在弹性线程池执行
                                 .thenReturn(taskResponse);
                     }
@@ -624,6 +629,7 @@
 
                 //把任务id为空的删除
                 LambdaUpdateWrapper<KeywordTask> updateWrapper = new LambdaUpdateWrapper<>();
+                updateWrapper.eq(KeywordTask::getKeyword_id, keywordId);
                 updateWrapper.isNull(KeywordTask::getTask_id);
                 keywordTaskService.remove(updateWrapper);
                 // 查询该关键词下的所有任务
@@ -640,6 +646,9 @@
                     keywordService.updateById(keyword);
 //                    log.info("关键词 {} 所有任务已完成,更新状态为 completed", keywordId);
 //                }
+                //更新提问词状态为取消
+
+                questionService.update(new LambdaUpdateWrapper<Question>().eq(Question::getKeyword_id, keywordId).set(Question::getStatus, "canceled"));
 
                 // 更新订单状态
                 String orderId = keyword.getOrder_id();
@@ -651,13 +660,23 @@
 
                     // 所有关键词均已完成,则更新订单状态为3
                     if (!orderKeywords.isEmpty() && orderKeywords.stream().allMatch(k ->
-                            "completed".equals(k.getStatus()) || "false".equals(k.getStatus()) || "canceled".equals(k.getStatus())
+                            "completed".equals(k.getStatus()) || "false".equals(k.getStatus())
                     )) {
                         Orders orders = orderService.getById(orderId);
                         if (orders != null) {
                             orders.setStatus(3);
                             orderService.updateById(orders);
                             log.info("订单 {} 所有关键词已完成,更新状态为3", orderId);
+                        }
+                    }
+                    if (!orderKeywords.isEmpty() && orderKeywords.stream().allMatch(k ->
+                            !"completed".equals(k.getStatus()) || "false".equals(k.getStatus()) || "canceled".equals(k.getStatus())
+                    )) {
+                        Orders orders = orderService.getById(orderId);
+                        if (orders != null) {
+                            orders.setStatus(1);
+                            orderService.updateById(orders);
+                            log.info("订单 {} 所有关键词已完成或者取消,更新状态为1", orderId);
                         }
                     }
                 }
@@ -927,7 +946,7 @@
                     }
                     // 3. 检查所有关键词的状态是否均为 completed 或 false
                     boolean allValid = orderKeywords.stream()
-                            .allMatch(k -> "completed".equals(k.getStatus()) || "false".equals(k.getStatus()) || "canceled".equals(k.getStatus()));
+                            .allMatch(k -> "completed".equals(k.getStatus()) || "false".equals(k.getStatus()));
 
                     // 4. 若所有关键词状态均有效,更新订单状态为3
                     if (allValid) {
@@ -940,6 +959,18 @@
                             System.out.println("未找到订单[" + orderId + "],无法更新状态");
                         }
                     }
+                boolean  allValid2 = orderKeywords.stream()
+                        .allMatch(k -> "completed".equals(k.getStatus()) || "false".equals(k.getStatus()) || "canceled".equals(k.getStatus()));
+                if (allValid) {
+                    Orders orders = orderService.getById(orderId);
+                    if (orders != null) {
+                        orders.setStatus(1); // 假设Orders有Integer类型的status字段
+                        orderService.updateById(orders);
+                        System.out.println("订单[" + orderId + "]所有关键词采集完成或者取消,已更新状态为1");
+                    } else {
+                        System.out.println("未找到订单[" + orderId + "],无法更新状态");
+                    }
+                }
 
                 Orders orders = orderService.getById(keyword.getOrder_id());
 

--
Gitblit v1.7.1