From 8e0decd25b9ec86b02d58de53dee1451f83d1566 Mon Sep 17 00:00:00 2001 From: huliguo <2023611923@qq.com> Date: 星期四, 10 七月 2025 23:48:35 +0800 Subject: [PATCH] 新增 --- src/main/java/com/linghu/controller/CollectController.java | 36 ++++++++++- src/main/java/com/linghu/service/impl/OrderServiceImpl.java | 16 +++++ src/main/java/com/linghu/controller/QuestionController.java | 84 ++++++++++++++------------- src/main/java/com/linghu/model/dto/KeywordDto.java | 1 4 files changed, 91 insertions(+), 46 deletions(-) diff --git a/src/main/java/com/linghu/controller/CollectController.java b/src/main/java/com/linghu/controller/CollectController.java index e0fdeeb..fb6d23f 100644 --- a/src/main/java/com/linghu/controller/CollectController.java +++ b/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())); }); } diff --git a/src/main/java/com/linghu/controller/QuestionController.java b/src/main/java/com/linghu/controller/QuestionController.java index 5b6732f..be640e1 100644 --- a/src/main/java/com/linghu/controller/QuestionController.java +++ b/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("根据关键词查询提问词列表") diff --git a/src/main/java/com/linghu/model/dto/KeywordDto.java b/src/main/java/com/linghu/model/dto/KeywordDto.java index 634adc8..6bd1896 100644 --- a/src/main/java/com/linghu/model/dto/KeywordDto.java +++ b/src/main/java/com/linghu/model/dto/KeywordDto.java @@ -17,4 +17,5 @@ private String questions; private List<Question> questionList; + private List<String> taskIdList; } \ No newline at end of file diff --git a/src/main/java/com/linghu/service/impl/OrderServiceImpl.java b/src/main/java/com/linghu/service/impl/OrderServiceImpl.java index c3b8602..11e5c29 100644 --- a/src/main/java/com/linghu/service/impl/OrderServiceImpl.java +++ b/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); -- Gitblit v1.7.1