| | |
| | | // 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); |
| | | // } |
| | | //更新提问词状态为取消 |
| | | |
| | | questionService.update(new LambdaUpdateWrapper<Question>().eq(Question::getKeyword_id, keywordId).set(Question::getStatus, "canceled")); |
| | | questionService.update(new LambdaUpdateWrapper<Question>().eq(Question::getKeyword_id, keywordId).isNull(Question::getResponse).set(Question::getStatus, "canceled")); |
| | | |
| | | // 更新订单状态 |
| | | String orderId = keyword.getOrder_id(); |
| | |
| | | * @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; |
| | | } |
| | |
| | | // 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()); // 补充创建时间 |
| | | |
| | |
| | | } 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); |
| | |
| | | System.out.println("订单[" + orderId + "]下无关键词,跳过状态更新"); |
| | | return; |
| | | } |
| | | boolean allValid2 = orderKeywords.stream() |
| | | .allMatch(k -> "completed".equals(k.getStatus()) || "false".equals(k.getStatus()) || "canceled".equals(k.getStatus())); |
| | | if (allValid2) { |
| | | 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 + "],无法更新状态"); |
| | | } |
| | | } |
| | | // 3. 检查所有关键词的状态是否均为 completed 或 false |
| | | boolean allValid = orderKeywords.stream() |
| | | .allMatch(k -> "completed".equals(k.getStatus()) || "false".equals(k.getStatus())); |
| | |
| | | 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()); |
| | | |
| | |
| | | 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()); |
| | |
| | | } |
| | | */ |
| | | // 关键:使用优化后的方法获取平台,避免重复创建 |
| | | 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,更可靠 |
| | | // 添加到结果列表 |