guyue
3 天以前 faa95a5b183a42a6c3fcf1d6a41d81caa33da3bc
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, "账户信息错误"));
            }
        }
    }