From faa95a5b183a42a6c3fcf1d6a41d81caa33da3bc Mon Sep 17 00:00:00 2001 From: guyue <1721849008@qq.com> Date: 星期三, 30 七月 2025 17:42:00 +0800 Subject: [PATCH] 修改定时器抢占 --- src/main/java/com/linghu/controller/CollectController.java | 34 ++++++++++++++++++++++++++++++++-- 1 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/linghu/controller/CollectController.java b/src/main/java/com/linghu/controller/CollectController.java index 1cafe88..0200878 100644 --- a/src/main/java/com/linghu/controller/CollectController.java +++ b/src/main/java/com/linghu/controller/CollectController.java @@ -469,7 +469,9 @@ keywordService.updateById(keyword); //更新提问词状态为取消 - questionService.update(new LambdaUpdateWrapper<Question>().eq(Question::getKeyword_id, keywordId).isNull(Question::getResponse).set(Question::getStatus, "cancelled")); + questionService.update(new LambdaUpdateWrapper<Question>().eq(Question::getKeyword_id, keywordId).isNull(Question::getResponse).set(Question::getStatus, "cancelled").set(Question::getError, "任务已取消")); +// 将所有提问词设置eroor为已取消 +// questionService.update(new LambdaUpdateWrapper<Question>().eq(Question::getKeyword_id, keywordId).set(Question::getStatus, "failed").set(Question::getError, "任务已取消")); // 更新订单状态 String orderId = keyword.getOrder_id(); @@ -1181,6 +1183,22 @@ log.info("无有效引用数据,跳过批量保存"); return; } +// // 在合并到 compositeKeyMap 之前 +// validReferences = validReferences.stream() +// .collect(Collectors.toMap( +// ref -> ref.getQuestion_id() +// + "|" + ref.getPlatform_id() +// + "|" + ref.getType_id() +// + "|" + ref.getUrl() +// + "|" + ref.getDomain() +// + "|" + ref.getKeyword_id() +// + "|" + ref.getNum(), +// ref -> ref, +// (r1, r2) -> r1 // 碰到同 key 就保第一个 +// )) +// .values() +// .stream() +// .collect(Collectors.toList()); // 2. 查询数据库中已存在的引用并过滤 null LambdaQueryWrapper<Reference> dbRefWrapper = new LambdaQueryWrapper<>(); @@ -1209,6 +1227,7 @@ .findFirst(); Reference finalRef = existingRef.orElse(validRefGroup.get(0)); +// 重复次数 = 老的 + (这一组里一共抓到多少-1) int repetitionNum = (finalRef.getRepetition_num() == null ? 1 : finalRef.getRepetition_num()) + (validRefGroup.size() - 1); finalRef.setRepetition_num(repetitionNum); @@ -1247,7 +1266,13 @@ log.warn("引用核心字段为空,跳过映射:{}", ref); return; } - String key = ref.getQuestion_id() + "|" + ref.getTitle() + "|" + ref.getUrl() + "|" + ref.getDomain(); + String key = ref.getQuestion_id() + "|" + + ref.getPlatform_id() + "|" + + ref.getType_id() + "|" + + ref.getTitle() + "|" + + ref.getUrl() + "|" + + ref.getDomain() + "|" + + ref.getNum(); map.computeIfAbsent(key, k -> new ArrayList<>()).add(ref); } @@ -1315,6 +1340,11 @@ } else if (userResult.getError().contains("信息错误")) { userWrapper.set(User::getStatus, "信息错误"); userService.update(userWrapper); + // 批量更新问题状态为失败 + questionService.update(new LambdaUpdateWrapper<Question>() + .eq(Question::getKeyword_id, keyword.getKeyword_id()) + .set(Question::getStatus, "failed") + .set(Question::getError, "账户信息错误")); } } } -- Gitblit v1.7.1