From df2d0a4399020ebe05d99437f54ec553557d6df8 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Tue, 18 Aug 2026 18:24:55 +0800 Subject: [PATCH] bug fix --- .../cedu/model/entity/PaperQuestionRelDO.java | 3 ++ .../qinan/cedu/model/entity/QuestionDO.java | 3 -- .../impl/PaperQuestionRelServiceImpl.java | 41 +++++++++---------- .../cedu/service/impl/PaperServiceImpl.java | 27 ++++++++---- .../impl/QuestionOptionServiceImpl.java | 4 ++ .../service/impl/QuestionServiceImpl.java | 4 ++ .../support/QuestionExcelImporter.java | 12 +++++- .../main/resources/mapper/QuestionMapper.xml | 2 +- safety-cedu-service/src/test/java/db.sql | 1 - 9 files changed, 60 insertions(+), 37 deletions(-) diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/entity/PaperQuestionRelDO.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/entity/PaperQuestionRelDO.java index 9c16aaa4..9a3d5ded 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/entity/PaperQuestionRelDO.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/entity/PaperQuestionRelDO.java @@ -28,4 +28,7 @@ public class PaperQuestionRelDO extends BaseEntity { @ApiModelProperty("试题id") private Long questionId; + + @ApiModelProperty("试题号") + private Integer questionNum; } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/entity/QuestionDO.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/entity/QuestionDO.java index 2aa57c3e..70ed5c74 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/model/entity/QuestionDO.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/entity/QuestionDO.java @@ -51,9 +51,6 @@ public class QuestionDO extends BaseEntity { @ApiModelProperty("标签类型") private String tagType; - @ApiModelProperty("试题号") - private Integer questionNum; - @ApiModelProperty("关联课件管理id") private Long coursewareManagementId; } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/PaperQuestionRelServiceImpl.java b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/PaperQuestionRelServiceImpl.java index a27283c4..523a72b6 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/PaperQuestionRelServiceImpl.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/PaperQuestionRelServiceImpl.java @@ -1,21 +1,23 @@ package org.qinan.cedu.service.impl; import cn.hutool.core.util.IdUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.baomidou.mybatisplus.extension.toolkit.Db; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.qinan.cedu.enums.DeleteEnum; import org.qinan.cedu.enums.QuestionTypeEnum; +import org.qinan.cedu.mapper.PaperMapper; +import org.qinan.cedu.mapper.PaperQuestionRelMapper; +import org.qinan.cedu.mapper.QuestionMapper; +import org.qinan.cedu.mapper.QuestionOptionMapper; import org.qinan.cedu.model.dto.PaperQuestionSaveDTO; import org.qinan.cedu.model.entity.PaperDO; import org.qinan.cedu.model.entity.PaperQuestionRelDO; import org.qinan.cedu.model.entity.QuestionDO; import org.qinan.cedu.model.entity.QuestionOptionDO; -import org.qinan.cedu.mapper.PaperQuestionRelMapper; import org.qinan.cedu.service.PaperQuestionRelService; -import org.qinan.cedu.service.PaperService; -import org.qinan.cedu.service.QuestionOptionService; -import org.qinan.cedu.service.QuestionService; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.StringUtils; @@ -31,27 +33,22 @@ import java.util.stream.Collectors; * 试卷试题关系服务实现 */ @Service +@Slf4j +@RequiredArgsConstructor public class PaperQuestionRelServiceImpl extends ServiceImpl implements PaperQuestionRelService { - @Autowired - @Lazy - private PaperService paperService; - - @Autowired - private QuestionService questionService; - - @Autowired - private QuestionOptionService questionOptionService; + private final PaperMapper paperMapper; + private final QuestionMapper questionMapper; + private final QuestionOptionMapper questionOptionMapper; @Override @Transactional(rollbackFor = Exception.class) public void savePaperQuestion(PaperQuestionSaveDTO dto) { // 校验试卷存在 - PaperDO paper = paperService.lambdaQuery() + boolean exists = paperMapper.exists(new LambdaQueryWrapper() .eq(PaperDO::getId, dto.getPaperId()) - .eq(PaperDO::getDeleteEnum, DeleteEnum.FALSE.getCode()) - .one(); - if (paper == null) { + .eq(PaperDO::getDeleteEnum, DeleteEnum.FALSE.getCode())); + if (exists) { throw new IllegalArgumentException("试卷不存在:id=" + dto.getPaperId()); } @@ -115,8 +112,8 @@ public class PaperQuestionRelServiceImpl extends ServiceImpl String.valueOf(option.getId())) .collect(Collectors.joining(","))); - questionService.save(question); - questionOptionService.saveBatch(options); + questionMapper.insert(question); + Db.saveBatch(options); // 追加绑定试卷试题(不清空已有绑定) PaperQuestionRelDO rel = new PaperQuestionRelDO(); @@ -140,7 +137,7 @@ public class PaperQuestionRelServiceImpl extends ServiceImpl SELECT q.id, q.title, q.score, q.answer_question_option_ids, q.analysis - , q.question_type, q.tag_type, q.question_num + , q.question_type, q.tag_type, pqr.question_num , cm.courseware_name FROM paper_question_rel pqr JOIN question q ON pqr.question_id = q.id diff --git a/safety-cedu-service/src/test/java/db.sql b/safety-cedu-service/src/test/java/db.sql index 4507e275..65c35f82 100644 --- a/safety-cedu-service/src/test/java/db.sql +++ b/safety-cedu-service/src/test/java/db.sql @@ -81,7 +81,6 @@ CREATE TABLE `questionDO` `score` decimal(5, 2) NOT NULL DEFAULT 0.00 COMMENT '分值', `analysis` text CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL COMMENT '答案解析', `tag_type` varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NULL DEFAULT NULL COMMENT '标签类型', - `question_num` int NULL DEFAULT NULL COMMENT '试题号', `courseware_management_id` bigint NULL DEFAULT NULL COMMENT '关联课件管理id', `delete_enum` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '删除标识true false', `remarks` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '备注',