From 1a97101ee5e77bae271038bc3d8b0bbab401e563 Mon Sep 17 00:00:00 2001 From: luotaiqian <1147642922@qq.com> Date: Mon, 24 Aug 2026 17:37:50 +0800 Subject: [PATCH] user paper exam --- .../cedu/controller/QuestionController.java | 11 ++++ .../org/qinan/cedu/mapper/QuestionMapper.java | 18 +++++-- .../dto/PaperCoursewarePageQueryDTO.java | 29 +++++++++++ .../cedu/model/vo/QuestionCoursewareVO.java | 52 +++++++++++++++++++ .../qinan/cedu/service/QuestionService.java | 14 ++++- .../service/impl/QuestionServiceImpl.java | 11 ++-- .../main/resources/mapper/QuestionMapper.xml | 24 +++++++++ 7 files changed, 148 insertions(+), 11 deletions(-) create mode 100644 safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/PaperCoursewarePageQueryDTO.java create mode 100644 safety-cedu-service/src/main/java/org/qinan/cedu/model/vo/QuestionCoursewareVO.java diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/QuestionController.java b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/QuestionController.java index 5c29a7c4..60ce62b7 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/controller/QuestionController.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/controller/QuestionController.java @@ -1,14 +1,18 @@ package org.qinan.cedu.controller; +import com.baomidou.mybatisplus.core.metadata.IPage; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import lombok.RequiredArgsConstructor; +import org.qinan.cedu.model.dto.PaperCoursewarePageQueryDTO; import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO; import org.qinan.cedu.model.dto.QuestionUpdateDTO; +import org.qinan.cedu.model.vo.QuestionCoursewareVO; import org.qinan.cedu.model.vo.QuestionTypeCountVO; import org.qinan.cedu.model.vo.QuestionVO; import org.qinan.cedu.service.QuestionService; +import org.qinan.safetyeval.client.dto.PageResponse; import org.qinan.safetyeval.client.dto.SingleResponse; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; @@ -49,4 +53,11 @@ public class QuestionController { return SingleResponse.success(questionService.countQuestionType(dto)); } + @ApiOperation("分页试题信息,根据课件或者试题id") + @GetMapping("/page/courseware") + public PageResponse pageCourseware(PaperCoursewarePageQueryDTO query) { + IPage page = questionService.pageCourseware(query); + return PageResponse.of(page.getRecords(), page.getTotal()); + } + } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/mapper/QuestionMapper.java b/safety-cedu-service/src/main/java/org/qinan/cedu/mapper/QuestionMapper.java index 2c4f2cb9..cd68a026 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/mapper/QuestionMapper.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/mapper/QuestionMapper.java @@ -5,16 +5,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import org.qinan.cedu.model.dto.PaperCoursewarePageQueryDTO; import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO; import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO; import org.qinan.cedu.model.entity.QuestionDO; -import org.qinan.cedu.model.vo.PaperQuestionDetailVO; -import org.qinan.cedu.model.vo.PaperQuestionVO; -import org.qinan.cedu.model.vo.QuestionTypeCountVO; -import org.qinan.cedu.model.vo.QuestionVO; -import org.qinan.cedu.model.vo.StartExamQuestionVO; +import org.qinan.cedu.model.vo.*; import java.util.List; + /** * 试题 Mapper */ @@ -82,4 +80,14 @@ public interface QuestionMapper extends BaseMapper { List listRandomQuestionIds(@Param("coursewareManagementIdList") List coursewareManagementIdList, @Param("questionType") String questionType, @Param("num") Integer num); + + /** + * pageCourseware + * + * @param page page + * @param query query + * @return QuestionCoursewareVO + */ + IPage pageCourseware(Page page + ,@Param("qry") PaperCoursewarePageQueryDTO query); } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/PaperCoursewarePageQueryDTO.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/PaperCoursewarePageQueryDTO.java new file mode 100644 index 00000000..1b6dd03c --- /dev/null +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/dto/PaperCoursewarePageQueryDTO.java @@ -0,0 +1,29 @@ +package org.qinan.cedu.model.dto; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import org.qinan.cedu.enums.PaperTypeEnum; +import org.qinan.cedu.model.query.BasePageQuery; + +import javax.validation.constraints.NotNull; + +/** + * 试卷分页查询请求 + */ +@Data +@EqualsAndHashCode(callSuper = true) +@ApiModel(value = "PaperCoursewarePageQueryDTO", description = "科技分页查询") +public class PaperCoursewarePageQueryDTO extends BasePageQuery { + + @ApiModelProperty("课件id") + @NotNull + private Long coursewareManagementId; + + @ApiModelProperty(PaperTypeEnum.REMARKS) + private String paperType; + + @ApiModelProperty("题干id") + private String title; +} diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/model/vo/QuestionCoursewareVO.java b/safety-cedu-service/src/main/java/org/qinan/cedu/model/vo/QuestionCoursewareVO.java new file mode 100644 index 00000000..ea2f6cb2 --- /dev/null +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/model/vo/QuestionCoursewareVO.java @@ -0,0 +1,52 @@ +package org.qinan.cedu.model.vo; + +import com.fasterxml.jackson.databind.annotation.JsonSerialize; +import com.fasterxml.jackson.databind.ser.std.ToStringSerializer; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.math.BigDecimal; + +/** + * 试卷试题分页返回 + */ +@Data +@ApiModel(value = "QuestionCoursewareVO", description = "课件试题对象") +public class QuestionCoursewareVO { + + @ApiModelProperty("试题id") + @JsonSerialize(using = ToStringSerializer.class) + private Long id; + + @ApiModelProperty("题干") + private String title; + + @ApiModelProperty("分值") + private BigDecimal score; + + @ApiModelProperty("答案选项id,多个逗号隔开") + private String answerQuestionOptionIds; + + @ApiModelProperty("答案选项,多个逗号隔开") + private String answer; + + @ApiModelProperty("答案解析") + private String analysis; + + @ApiModelProperty("题型:single单选/multiple多选/judge判断") + private String questionType; + + @ApiModelProperty("标签类型") + private String tagType; + + @ApiModelProperty("试题号") + private Integer questionNum; + + @ApiModelProperty("关联课件名称") + private String coursewareName; + + @ApiModelProperty("关联课件id") + @JsonSerialize(using = ToStringSerializer.class) + private Long coursewareManagementId; +} diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/service/QuestionService.java b/safety-cedu-service/src/main/java/org/qinan/cedu/service/QuestionService.java index 3356306c..1331a916 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/service/QuestionService.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/service/QuestionService.java @@ -2,12 +2,14 @@ package org.qinan.cedu.service; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.IService; +import org.qinan.cedu.model.dto.PaperCoursewarePageQueryDTO; import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO; import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO; import org.qinan.cedu.model.dto.QuestionUpdateDTO; import org.qinan.cedu.model.entity.QuestionDO; import org.qinan.cedu.model.entity.QuestionOptionDO; import org.qinan.cedu.model.vo.PaperQuestionVO; +import org.qinan.cedu.model.vo.QuestionCoursewareVO; import org.qinan.cedu.model.vo.QuestionTypeCountVO; import org.qinan.cedu.model.vo.QuestionVO; @@ -72,7 +74,7 @@ public interface QuestionService extends IService { * 新增试题(含选项) * * @param questionDO 试题 - * @param options 选项列表 + * @param options 选项列表 * @return 是否成功 */ boolean saveWithOptions(QuestionDO questionDO, List options); @@ -81,7 +83,7 @@ public interface QuestionService extends IService { * 修改试题(选项全量覆盖) * * @param questionDO 试题 - * @param options 选项列表 + * @param options 选项列表 * @return 是否成功 */ boolean updateWithOptions(QuestionDO questionDO, List options); @@ -93,4 +95,12 @@ public interface QuestionService extends IService { * @return 是否成功 */ boolean deleteById(Long id); + + /** + * + * @param query query + * @return QuestionCoursewareVO + */ + IPage pageCourseware(PaperCoursewarePageQueryDTO query); + } diff --git a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/QuestionServiceImpl.java b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/QuestionServiceImpl.java index e050d4a9..c730204b 100644 --- a/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/QuestionServiceImpl.java +++ b/safety-cedu-service/src/main/java/org/qinan/cedu/service/impl/QuestionServiceImpl.java @@ -13,13 +13,11 @@ import org.qinan.cedu.convertor.QuestionConvertor; import org.qinan.cedu.enums.DeleteEnum; import org.qinan.cedu.mapper.QuestionMapper; import org.qinan.cedu.mapper.QuestionOptionMapper; -import org.qinan.cedu.model.dto.PaperQuestionPageQueryDTO; -import org.qinan.cedu.model.dto.QuestionOptionUpdateDTO; -import org.qinan.cedu.model.dto.QuestionTypeCountQueryDTO; -import org.qinan.cedu.model.dto.QuestionUpdateDTO; +import org.qinan.cedu.model.dto.*; import org.qinan.cedu.model.entity.QuestionDO; import org.qinan.cedu.model.entity.QuestionOptionDO; import org.qinan.cedu.model.vo.PaperQuestionVO; +import org.qinan.cedu.model.vo.QuestionCoursewareVO; import org.qinan.cedu.model.vo.QuestionTypeCountVO; import org.qinan.cedu.model.vo.QuestionVO; import org.qinan.cedu.service.QuestionService; @@ -229,6 +227,11 @@ public class QuestionServiceImpl extends ServiceImpl return deleted; } + @Override + public IPage pageCourseware(PaperCoursewarePageQueryDTO query) { + return this.baseMapper.pageCourseware(new Page<>(query.getCurrent(), query.getSize()), query); + } + /** * 保存试题选项(重置id并绑定试题id、统一填充时间后批量插入) * diff --git a/safety-cedu-service/src/main/resources/mapper/QuestionMapper.xml b/safety-cedu-service/src/main/resources/mapper/QuestionMapper.xml index 66506520..bb6773f9 100644 --- a/safety-cedu-service/src/main/resources/mapper/QuestionMapper.xml +++ b/safety-cedu-service/src/main/resources/mapper/QuestionMapper.xml @@ -90,4 +90,28 @@ AND q.delete_enum = 'false' ORDER BY pqr.question_num ASC, pqr.id ASC + +