huliguo
2 天以前 8e0decd25b9ec86b02d58de53dee1451f83d1566
新增
4个文件已修改
137 ■■■■■ 已修改文件
src/main/java/com/linghu/controller/CollectController.java 36 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/linghu/controller/QuestionController.java 84 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/linghu/model/dto/KeywordDto.java 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/main/java/com/linghu/service/impl/OrderServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | 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);