From a271ed5a232236383bc96c8c1e380a5c91dc1c3c Mon Sep 17 00:00:00 2001 From: guyue <1721849008@qq.com> Date: 星期二, 12 八月 2025 01:07:19 +0800 Subject: [PATCH] 代码规范 --- src/main/java/com/linghu/controller/QuestionController.java | 183 +++++++-------------------------------------- 1 files changed, 30 insertions(+), 153 deletions(-) diff --git a/src/main/java/com/linghu/controller/QuestionController.java b/src/main/java/com/linghu/controller/QuestionController.java index 6bc866d..dcd03bd 100644 --- a/src/main/java/com/linghu/controller/QuestionController.java +++ b/src/main/java/com/linghu/controller/QuestionController.java @@ -14,6 +14,8 @@ import com.linghu.model.entity.Reference; import com.linghu.model.excel.KeywordExcel; import com.linghu.model.excel.QuestionExcel; +import com.linghu.model.validator.CreateGroup; +import com.linghu.model.validator.UpdateGroup; import com.linghu.service.KeywordService; import com.linghu.service.QuestionService; import io.swagger.annotations.Api; @@ -23,9 +25,12 @@ import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.transaction.annotation.Transactional; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; +import javax.validation.Valid; +import javax.validation.constraints.NotEmpty; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.*; @@ -40,195 +45,67 @@ @Autowired private QuestionService questionService; - @Autowired - private KeywordService keywordService; - @Autowired - private KeywordMapper keywordMapper; - @Autowired - private ReferenceMapper referenceMapper; @PostMapping @ApiOperation(value = "添加提问词") - @Transactional - public ResponseResult<List<Question>> add(@RequestBody KeywordDto keywordDto) { - - 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()); - - boolean success = questionService.saveBatch(questionList); - if (success) { - return ResponseResult.success(questionList); - } - return ResponseResult.error("添加提问词失败"); + public ResponseResult<List<Question>> add(@Validated(CreateGroup.class) @RequestBody KeywordDto keywordDto) { + return questionService.addQuestion(keywordDto); } -// @DeleteMapping("/{questionId}") -// @ApiOperation(value = "删除提问词") -// public ResponseResult<Void> delete(@PathVariable Integer questionId) { -// -// boolean success = questionService.removeById(questionId); -// if (success) { -// return ResponseResult.success(); -// } -// return ResponseResult.error("删除提问词失败"); -// } + @PutMapping @ApiOperation(value = "修改提问词") - @Transactional - public ResponseResult<List<Question>> update(@RequestBody KeywordDto keywordDto) { - //查询question的状态 - //遍历 - - if ("submitted".equals(keywordDto.getStatus()) ) { - return ResponseResult.error("该关键词在采集中"); - } - - questionService.updateBatchById(keywordDto.getQuestionList()); - -// if (!"notSubmitted".equals(keywordDto.getStatus() )){ -// return ResponseResult.error("该关键词已提交或者已采集完成不允许修改提问词!"); -// } -// LambdaQueryWrapper<Question> queryWrapper = new LambdaQueryWrapper<>(); -// queryWrapper.eq(Question::getKeyword_id, keywordDto.getKeyword_id()); -// questionService.remove(queryWrapper); - -// 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); - - return ResponseResult.success(); - - + public ResponseResult<List<Question>> update(@Validated(UpdateGroup.class) @RequestBody KeywordDto keywordDto) { + return questionService.updateQuestion(keywordDto); } @PutMapping("/update") @ApiOperation(value = "修改单个提问词") - public ResponseResult<Void> update(@RequestBody Question questions) { - - LambdaQueryWrapper<Question> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Question::getQuestion_id, questions.getQuestion_id()); - Question keyword = questionService.getOne(queryWrapper); - if ("submitted".equals(keyword.getStatus()) ) { - return ResponseResult.error("该关键词在采集中"); - } - - boolean success = questionService.updateById(questions); - if (success) { - return ResponseResult.success(); - } - return ResponseResult.error("更新提问词失败"); + public ResponseResult<Void> update(@Validated(UpdateGroup.class) @RequestBody Question questions) { + return questionService.updateKeyWord(questions); } - @DeleteMapping("/batch") - @Transactional - @ApiOperation(value = "批量删除提问词") - public ResponseResult<Void> batchDelete(@RequestBody List<Integer> questionIds) { + @DeleteMapping("/batch") + @ApiOperation(value = "批量删除提问词") + public ResponseResult<Void> batchDelete( @RequestBody List<Integer> questionIds) { + return questionService.batchDeleteQuestion(questionIds); + } - // 2. 批量查询所有提问词 - List<Question> questions = questionService.listByIds(questionIds); - // 3. 校验所有提问词关联的关键词是否处于采集中 - for (Question question : questions) { - Keyword keyword = keywordService.getById(question.getKeyword_id()); - // 关键词不存在也需处理(可选) - if (keyword == null) { - return ResponseResult.error("提问词关联的关键词不存在,ID:" + question.getKeyword_id()); - } - // 核心校验:若有任何关键词在采集中,禁止删除 - if ("submitted".equals(keyword.getStatus())) { - return ResponseResult.error("该关键词在采集中,无法删除"); - } - } - questionService.removeByIds(questionIds); - return ResponseResult.success(); - } @GetMapping("/list") @ApiOperation("根据关键词查询提问词列表") - public ResponseResult<List<Question>> list(Integer keyword_id) { - LambdaQueryWrapper<Question> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Question::getKeyword_id, keyword_id); - List<Question> list = questionService.list(queryWrapper); - return ResponseResult.success(list); + public ResponseResult<List<Question>> list(@RequestParam("keyword_id") Integer keyword_id) { + return questionService.getQuestionListByKeywordId(keyword_id); } + + @GetMapping("/notNullList") @ApiOperation("根据关键词查询提问词列表") - public ResponseResult<List<Question>> notNullList(Integer keyword_id) { - Keyword keyword = keywordMapper.selectById(keyword_id); - - List<Reference> references = referenceMapper.selectList(new LambdaQueryWrapper<Reference>() - .eq(Reference::getKeyword_id, keyword_id) - .eq(Reference::getNum, keyword.getNum())); - List<Integer> questionIds = references.stream().map(Reference::getQuestion_id).distinct().collect(Collectors.toList()); - // 查询success状态的 当前轮数的 - LambdaQueryWrapper<Question> queryWrapper = new LambdaQueryWrapper<>(); - queryWrapper.eq(Question::getKeyword_id, keyword_id); - queryWrapper.eq(Question::getStatus, "success"); - if ( !questionIds.isEmpty()) { - queryWrapper.in(Question::getQuestion_id, questionIds); - }else { - return ResponseResult.success(new ArrayList<>()); - } - - - List<Question> list = questionService.list(queryWrapper); - return ResponseResult.success(list); + public ResponseResult<List<Question>> notNullList(@RequestParam("keyword_id") Integer keyword_id) { + return questionService.notNullQuestionList(keyword_id); } + // 下载模板 @PostMapping("/downloadTemplate") @ApiOperation("下载模板") public ResponseEntity<byte[]> downloadTemplate() throws IOException { - ByteArrayOutputStream out = new ByteArrayOutputStream(); - EasyExcel.write(out, QuestionExcel.class).sheet("提问词模板").doWrite(new ArrayList<>()); - - return ResponseEntity.ok() - .header(HttpHeaders.CONTENT_DISPOSITION, "attachment;filename=提问词条导入模板.xlsx") - .contentType(MediaType.APPLICATION_OCTET_STREAM) - .body(out.toByteArray()); + return questionService.downloadQuestion(); } + + // 导入文件 @PostMapping("/import") @ApiOperation("导入提问词词数据") public ResponseResult<String> importPlatforms(@RequestParam("file") MultipartFile file) { - try { - if (file.isEmpty()) { - return ResponseResult.error("上传文件不能为空"); - } - // 创建数据监听器 - QuestionExcelListener listener = new QuestionExcelListener(); - EasyExcel.read(file.getInputStream(), QuestionExcel.class, listener) - .sheet() - .doRead(); - // 获取并合并关键词 - String mergedKeywords = String.join("\n", listener.getMergedKeywords()); - return ResponseResult.success(mergedKeywords); - } catch (IOException e) { - return ResponseResult.error("文件读取失败:" + e.getMessage()); - } catch (Exception e) { - return ResponseResult.error("导入失败:" + e.getMessage()); - } + return questionService.importQuestionsExcel(file); } + + } \ No newline at end of file -- Gitblit v1.7.1