src/main/java/com/linghu/controller/CollectController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/linghu/controller/QuestionController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/linghu/model/dto/KeywordDto.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/linghu/service/impl/OrderServiceImpl.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/linghu/controller/CollectController.java
@@ -223,13 +223,14 @@ log.warn(errorMsg); return Mono.just(ResponseResult.error(503, errorMsg)); } Integer keywordId = searchTaskRequest.getKeyword_id(); int maxConcurrentUsers = searchTaskRequest.getConfig() != null ? searchTaskRequest.getConfig().getMax_concurrent_users() : 3; List<List<UserDto>> userBatches = splitUsersIntoBatches(searchTaskRequest.getUsers(), maxConcurrentUsers); List<List<UserDto>> userBatches = splitUsersIntoBatches(searchTaskRequest.getUsers(), maxConcurrentUsers,keywordId); // 获取 keywordId Integer keywordId = searchTaskRequest.getKeyword_id(); //分割 @@ -381,14 +382,39 @@ .onStatus(HttpStatus::isError, response -> response.bodyToMono(TaskCancelResponse.class) .flatMap(errorBody -> Mono.error(new RuntimeException(errorBody.getDetail())))) .bodyToMono(TaskCancelResponse.class) .flatMap(cancelResponse -> { // 更新关键词状态 Mono<Void> updateKeyword = Mono.fromRunnable(() -> { LambdaUpdateWrapper<Keyword> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(Keyword::getTask_id, taskId); updateWrapper.set(Keyword::getStatus, "canceled"); // 统一使用"canceled" keywordService.update(updateWrapper); }) .subscribeOn(Schedulers.boundedElastic()) .then(); // 更新关键词任务状态 Mono<Void> updateKeywordTask = Mono.fromRunnable(() -> { LambdaUpdateWrapper<KeywordTask> updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(KeywordTask::getTask_id, taskId); updateWrapper.set(KeywordTask::getStatus, "canceled"); // 统一使用"canceled" keywordTaskService.update(updateWrapper); }) .subscribeOn(Schedulers.boundedElastic()) .then(); // 并行执行两个更新操作,并在完成后返回cancelResponse return Mono.when(updateKeyword, updateKeywordTask) .thenReturn(cancelResponse); }) .map(data -> ResponseResult.success(data)) .onErrorResume(e -> { if (e.getMessage().contains("任务不存在")) { return Mono.just(ResponseResult.error(200, "任务不存在")); return Mono.just(ResponseResult.error(200, e.getMessage())); } else if (e.getMessage().contains("无法取消")) { return Mono.just(ResponseResult.error(200, "任务已完成,无法取消")); return Mono.just(ResponseResult.error(200, e.getMessage())); } return Mono.just(ResponseResult.error(500, "取消任务失败: " + e.getMessage())); return Mono.just(ResponseResult.error(500, e.getMessage())); }); } src/main/java/com/linghu/controller/QuestionController.java
@@ -2,6 +2,7 @@ import com.alibaba.excel.EasyExcel; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.linghu.listener.QuestionExcelListener; import com.linghu.model.common.ResponseResult; @@ -27,6 +28,8 @@ import java.util.List; import java.util.Objects; import java.util.stream.Collectors; import static jdk.nashorn.internal.runtime.regexp.joni.Config.log; @RestController @RequestMapping("/question") @@ -74,57 +77,58 @@ @ApiOperation(value = "修改提问词") @Transactional public ResponseResult<List<Question>> update(@RequestBody KeywordDto keywordDto) { if (!"notSubmitted".equals(keywordDto.getStatus() )){ return ResponseResult.error("该关键词已提交或者已采集完成不允许修改提问词!"); //查询question的状态 //遍历 for (Question q : keywordDto.getQuestionList()) { if ("success".equals(q.getStatus())) { return ResponseResult.error("该提问词已采集"); } LambdaQueryWrapper<Question> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(Question::getKeyword_id, keywordDto.getKeyword_id()); questionService.remove(queryWrapper); } questionService.updateBatchById(keywordDto.getQuestionList()); List<Question> questionList = Arrays.stream(keywordDto.getQuestions().split("\\n")) .filter(q -> !q.trim().isEmpty()) .map(q -> { Question question = new Question(); question.setKeyword_id(keywordDto.getKeyword_id()); question.setQuestion(q.trim()); question.setStatus("pending"); // if (!"notSubmitted".equals(keywordDto.getStatus() )){ // return ResponseResult.error("该关键词已提交或者已采集完成不允许修改提问词!"); // } // LambdaQueryWrapper<Question> queryWrapper = new LambdaQueryWrapper<>(); // queryWrapper.eq(Question::getKeyword_id, keywordDto.getKeyword_id()); // questionService.remove(queryWrapper); return question; }).collect(Collectors.toList()); // List<Question> questionList = Arrays.stream(keywordDto.getQuestions().split("\\n")) // .filter(q -> !q.trim().isEmpty()) // .map(q -> { // Question question = new Question(); // question.setKeyword_id(keywordDto.getKeyword_id()); // question.setQuestion(q.trim()); // question.setStatus("pending"); // // return question; // }).collect(Collectors.toList()); questionService.saveBatch(questionList); // questionService.saveBatch(questionList); return ResponseResult.success(); } // @PutMapping // @ApiOperation(value = "修改提问词") // public ResponseResult<Void> update(@RequestBody Question questions) { // boolean success = questionService.updateById(questions); // if (success) { // return ResponseResult.success(); // } // return ResponseResult.error("更新提问词失败"); // } @PutMapping("/update") @ApiOperation(value = "修改单个提问词") public ResponseResult<Void> update(@RequestBody Question questions) { boolean success = questionService.updateById(questions); if (success) { return ResponseResult.success(); } return ResponseResult.error("更新提问词失败"); } // @DeleteMapping("/batch") // @Transactional // public ResponseResult<Void> batchDelete(@RequestBody List<Integer> // questionIds) { // List<Question> questions = questionIds.stream().map(id -> { // Question question = new Question(); // question.setQuestion_id(id); // return question; // }).collect(Collectors.toList()); // boolean success = questionService.updateBatchById(questions); // if (success) { // return ResponseResult.success(); // } // return ResponseResult.error("批量删除提问词失败"); // } @DeleteMapping("/batch") @Transactional @ApiOperation(value = "批量删除提问词") public ResponseResult<Void> batchDelete(@RequestBody List<Integer> questionIds) { System.out.println(questionIds.toString()); questionService.removeByIds(questionIds); return ResponseResult.success(); } @GetMapping("/list") @ApiOperation("根据关键词查询提问词列表") src/main/java/com/linghu/model/dto/KeywordDto.java
@@ -17,4 +17,5 @@ private String questions; private List<Question> questionList; private List<String> taskIdList; } src/main/java/com/linghu/service/impl/OrderServiceImpl.java
@@ -8,15 +8,18 @@ import com.linghu.model.dto.KeywordDto; import com.linghu.model.dto.OrderDto; import com.linghu.model.entity.Keyword; import com.linghu.model.entity.KeywordTask; import com.linghu.model.entity.Orders; import com.linghu.model.entity.Question; import com.linghu.service.KeywordService; import com.linghu.service.KeywordTaskService; import com.linghu.service.OrderService; import com.linghu.mapper.OrderMapper; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; import java.util.Objects; import java.util.stream.Collectors; import com.linghu.service.QuestionService; @@ -41,6 +44,8 @@ private QuestionService questionService; @Autowired private OrderMapper orderMapper; @Autowired private KeywordTaskService keywordTaskService; @Override @Transactional(rollbackFor = Exception.class) @@ -112,7 +117,17 @@ for (Keyword keyword : keywords) { KeywordDto dto = new KeywordDto(); BeanUtils.copyProperties(keyword, dto); LambdaQueryWrapper<KeywordTask> queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(KeywordTask::getKeyword_id, keyword.getKeyword_id()); List<KeywordTask> keywordTasks = keywordTaskService.list(queryWrapper); // 提取 task_id 列表 List<String> taskIdList = keywordTasks.stream() .map(KeywordTask::getTask_id) .filter(Objects::nonNull) .collect(Collectors.toList()); dto.setTaskIdList(taskIdList); // 设置 task_id 列表 // 查询该关键词下的所有提问词 List<Question> questions = questionService.lambdaQuery() .eq(Question::getKeyword_id, keyword.getKeyword_id()) @@ -122,7 +137,6 @@ } return keywordDtos; } @Override public Page<String> getClientList(String clientName, Integer pageNum, Integer pageSize) { Page<Orders> page = new Page<>(pageNum, pageSize);