From acf3a5683ee0c26d19cf78ecdbdfb6047a9a492e Mon Sep 17 00:00:00 2001 From: caolin <1149034574@qq.com> Date: Thu, 3 Jul 2025 23:13:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E9=A2=98=E7=9B=AE=E4=BF=A1?= =?UTF-8?q?=E6=81=AF=E3=80=81=E6=94=B6=E8=97=8F=E9=A2=98=E7=9B=AE=E7=AD=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/WrjQuestionController.java | 8 +++ .../controller/WrjQuestionTestController.java | 9 +++ .../WrjUserCollectQuestionController.java | 7 ++ .../driver/server/dto/QuestionQueryDto.java | 14 ++++ .../wrj/driver/server/dto/TestQueryDto.java | 3 + .../wrj/driver/server/dto/TestSubmitDto.java | 6 ++ .../server/mapper/WrjQuestionMapper.java | 7 ++ .../mapper/WrjQuestionPracticeMapper.java | 12 ++++ .../mapper/WrjUserCollectQuestionMapper.java | 4 ++ .../server/service/IWrjQuestionService.java | 8 ++- .../service/IWrjQuestionTestService.java | 2 + .../IWrjUserCollectQuestionService.java | 4 ++ .../impl/WrjQuestionPracticeServiceImpl.java | 38 ++++++++++ .../service/impl/WrjQuestionServiceImpl.java | 38 ++++++++++ .../impl/WrjQuestionTestServiceImpl.java | 8 +++ .../WrjUserCollectQuestionServiceImpl.java | 6 ++ .../wrj/driver/server/util/SecurityUtil.java | 1 - .../driver/server/vo/QuestionPracticeVo.java | 10 +++ .../com/wrj/driver/server/vo/QuestionVo.java | 20 ++++++ .../server/vo/UserQuestionPracticeVo.java | 70 +++++++++++++++++++ .../resources/mapper/WrjQuestionMapper.xml | 61 ++++++++++++++++ .../mapper/WrjQuestionPracticeMapper.xml | 31 ++++++++ .../mapper/WrjQuestionTestMapper.xml | 3 + .../mapper/WrjUserCollectQuestionMapper.xml | 9 +++ 24 files changed, 377 insertions(+), 2 deletions(-) create mode 100644 src/main/java/com/wrj/driver/server/vo/UserQuestionPracticeVo.java diff --git a/src/main/java/com/wrj/driver/server/controller/WrjQuestionController.java b/src/main/java/com/wrj/driver/server/controller/WrjQuestionController.java index f5ae0f7..1e04cac 100644 --- a/src/main/java/com/wrj/driver/server/controller/WrjQuestionController.java +++ b/src/main/java/com/wrj/driver/server/controller/WrjQuestionController.java @@ -7,6 +7,7 @@ import com.wrj.driver.server.dto.QuestionQueryDto; import com.wrj.driver.server.exception.BusinessException; import com.wrj.driver.server.response.BaseResponse; import com.wrj.driver.server.service.IWrjQuestionService; +import com.wrj.driver.server.util.SecurityUtil; import com.wrj.driver.server.vo.QuestionVo; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; @@ -58,6 +59,13 @@ public class WrjQuestionController { return BaseResponse.success(questionService.queryQuestion(queryDto)); } + @ApiOperation("根据查询条件获取题目(带用户答题信息)") + @PostMapping("/queryQuestionWithUser") + public BaseResponse queryQuestionWithUser(@RequestBody QuestionQueryDto queryDto) { + log.info("根据查询条件获取题目(带用户答题信息)======>queryDto:{}", queryDto); + return BaseResponse.success(questionService.queryQuestionWithUser(queryDto)); + } + @ApiOperation("根据查询条件获取题目Id") @PostMapping("/queryQuestionId") public BaseResponse queryQuestionId(@RequestBody QuestionQueryDto queryDto) { diff --git a/src/main/java/com/wrj/driver/server/controller/WrjQuestionTestController.java b/src/main/java/com/wrj/driver/server/controller/WrjQuestionTestController.java index 3545201..93b3dfc 100644 --- a/src/main/java/com/wrj/driver/server/controller/WrjQuestionTestController.java +++ b/src/main/java/com/wrj/driver/server/controller/WrjQuestionTestController.java @@ -6,6 +6,7 @@ import com.wrj.driver.server.dto.TestQueryDto; import com.wrj.driver.server.dto.TestSubmitDto; import com.wrj.driver.server.response.BaseResponse; import com.wrj.driver.server.service.IWrjQuestionTestService; +import com.wrj.driver.server.util.SecurityUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import lombok.extern.slf4j.Slf4j; @@ -38,6 +39,14 @@ public class WrjQuestionTestController { return testService.testSubmit(submitDto); } + + @ApiOperation("获取模拟考试主键") + @GetMapping("/getTestId") + public BaseResponse getTestId() { + log.info("获取模拟考试id======>userId:{}", SecurityUtil.getUserId()); + return BaseResponse.success(testService.getTestId()); + } + @ApiOperation("获取考试统计") @PostMapping("/testTotal") public BaseResponse testTotal(@RequestBody @Valid TestQueryDto queryDto) { diff --git a/src/main/java/com/wrj/driver/server/controller/WrjUserCollectQuestionController.java b/src/main/java/com/wrj/driver/server/controller/WrjUserCollectQuestionController.java index 8670779..ab57db8 100644 --- a/src/main/java/com/wrj/driver/server/controller/WrjUserCollectQuestionController.java +++ b/src/main/java/com/wrj/driver/server/controller/WrjUserCollectQuestionController.java @@ -32,4 +32,11 @@ public class WrjUserCollectQuestionController { return BaseResponse.success(collectQuestionService.updateUserCollectQuestion(questionId, SecurityUtil.getUserId())); } + @ApiOperation("获取用户收藏题目id") + @PostMapping("/getUserCollectQuestionId") + public BaseResponse getUserCollectQuestionId(@RequestParam Integer driverTypeId) { + log.info("获取用户收藏题目id======>driverTypeId:{},userId:{}", driverTypeId, SecurityUtil.getUserId()); + return BaseResponse.success(collectQuestionService.getUserCollectQuestionId(driverTypeId, SecurityUtil.getUserId())); + } + } diff --git a/src/main/java/com/wrj/driver/server/dto/QuestionQueryDto.java b/src/main/java/com/wrj/driver/server/dto/QuestionQueryDto.java index ee497e0..f5bf957 100644 --- a/src/main/java/com/wrj/driver/server/dto/QuestionQueryDto.java +++ b/src/main/java/com/wrj/driver/server/dto/QuestionQueryDto.java @@ -9,6 +9,7 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.experimental.Accessors; +import javax.validation.constraints.NotBlank; import java.io.Serializable; import java.util.List; @@ -75,4 +76,17 @@ public class QuestionQueryDto implements Serializable { @ApiModelProperty("是否是图片") private Integer isImage; + /** + * 答题类型 1-顺序练习 2-章节练习 3-随机练习 4-模拟考试 5-错题训练 6-收藏训练" + */ + @ApiModelProperty(value = "答题类型 1-顺序练习 2-章节练习 3-随机练习 4-模拟考试 5-错题训练 6-收藏训练",required = true) + @NotBlank(message = "答题类型不能为空") + private String practiceType; + + /** + * 用户id + */ + @ApiModelProperty("用户id") + private Long userId; + } diff --git a/src/main/java/com/wrj/driver/server/dto/TestQueryDto.java b/src/main/java/com/wrj/driver/server/dto/TestQueryDto.java index 251cf4e..15f5ef4 100644 --- a/src/main/java/com/wrj/driver/server/dto/TestQueryDto.java +++ b/src/main/java/com/wrj/driver/server/dto/TestQueryDto.java @@ -29,4 +29,7 @@ public class TestQueryDto { @ApiModelProperty(value = "用户id") private Long userId; + + @ApiModelProperty(value = "模拟考试标识") + private Long testId; } diff --git a/src/main/java/com/wrj/driver/server/dto/TestSubmitDto.java b/src/main/java/com/wrj/driver/server/dto/TestSubmitDto.java index 49e930e..1086ba5 100644 --- a/src/main/java/com/wrj/driver/server/dto/TestSubmitDto.java +++ b/src/main/java/com/wrj/driver/server/dto/TestSubmitDto.java @@ -22,6 +22,12 @@ import java.util.List; @ApiModel("成绩提交入参") public class TestSubmitDto { + /** + * 车型标识 + */ + @ApiModelProperty(value = "模拟考试标识",required = true) + private Long testId; + /** * 车型标识 */ diff --git a/src/main/java/com/wrj/driver/server/mapper/WrjQuestionMapper.java b/src/main/java/com/wrj/driver/server/mapper/WrjQuestionMapper.java index 0ab54ca..8223fba 100644 --- a/src/main/java/com/wrj/driver/server/mapper/WrjQuestionMapper.java +++ b/src/main/java/com/wrj/driver/server/mapper/WrjQuestionMapper.java @@ -30,6 +30,13 @@ public interface WrjQuestionMapper extends BaseMapper { */ List queryQuestion(@Param("queryDto") QuestionQueryDto queryDto); + /** + * 查询考题(带用户答题信息) + * @param queryDto + * @return + */ + List queryQuestionWithUser(QuestionQueryDto queryDto); + /** * 获取考题id * diff --git a/src/main/java/com/wrj/driver/server/mapper/WrjQuestionPracticeMapper.java b/src/main/java/com/wrj/driver/server/mapper/WrjQuestionPracticeMapper.java index 1a919bf..2095d1f 100644 --- a/src/main/java/com/wrj/driver/server/mapper/WrjQuestionPracticeMapper.java +++ b/src/main/java/com/wrj/driver/server/mapper/WrjQuestionPracticeMapper.java @@ -6,9 +6,12 @@ import com.wrj.driver.server.dto.QuestionPracticeQueryDto; import com.wrj.driver.server.entity.WrjQuestionPractice; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.wrj.driver.server.vo.QuestionPracticeVo; +import com.wrj.driver.server.vo.UserQuestionPracticeVo; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** *

* 用户答题练习表 Mapper 接口 @@ -24,4 +27,13 @@ public interface WrjQuestionPracticeMapper extends BaseMapper queryQuestionPracticePage(@Param("page") Page page, @Param("queryDto") QuestionPracticeQueryDto queryDto); + + /** + * 查询用户答题信息 + * + * @param questionIdList + * @param userId + * @return + */ + List queryUserQuestionPracticeMsg(@Param("questionIdList") List questionIdList, @Param("userId") Long userId, @Param("practiceType") String practiceType); } diff --git a/src/main/java/com/wrj/driver/server/mapper/WrjUserCollectQuestionMapper.java b/src/main/java/com/wrj/driver/server/mapper/WrjUserCollectQuestionMapper.java index ae9cc96..5965c86 100644 --- a/src/main/java/com/wrj/driver/server/mapper/WrjUserCollectQuestionMapper.java +++ b/src/main/java/com/wrj/driver/server/mapper/WrjUserCollectQuestionMapper.java @@ -5,6 +5,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Param; +import java.util.List; + /** *

* 用户收藏表 Mapper 接口 @@ -20,4 +22,6 @@ public interface WrjUserCollectQuestionMapper extends BaseMapper getUserCollectQuestionId(@Param("driverTypeId") Integer driverTypeId, @Param("userId") Long userId); } diff --git a/src/main/java/com/wrj/driver/server/service/IWrjQuestionService.java b/src/main/java/com/wrj/driver/server/service/IWrjQuestionService.java index 2d319d2..8b510b3 100644 --- a/src/main/java/com/wrj/driver/server/service/IWrjQuestionService.java +++ b/src/main/java/com/wrj/driver/server/service/IWrjQuestionService.java @@ -41,6 +41,13 @@ public interface IWrjQuestionService extends IService { */ List queryQuestion(QuestionQueryDto queryDto); + /** + * 根据查询条件获取题目(带用户答题信息) + * @param queryDto + * @return + */ + List queryQuestionWithUser(QuestionQueryDto queryDto); + /** * 根据查询条件获取题目Id * @param queryDto @@ -83,5 +90,4 @@ public interface IWrjQuestionService extends IService { * @return */ Map querySpecialNum(QuestionQueryDto queryDto); - } diff --git a/src/main/java/com/wrj/driver/server/service/IWrjQuestionTestService.java b/src/main/java/com/wrj/driver/server/service/IWrjQuestionTestService.java index af2bb90..dde7b3f 100644 --- a/src/main/java/com/wrj/driver/server/service/IWrjQuestionTestService.java +++ b/src/main/java/com/wrj/driver/server/service/IWrjQuestionTestService.java @@ -27,6 +27,8 @@ public interface IWrjQuestionTestService extends IService { */ BaseResponse testSubmit(TestSubmitDto submitDto); + Long getTestId(); + /** * 考试成绩统计 * @param queryDto diff --git a/src/main/java/com/wrj/driver/server/service/IWrjUserCollectQuestionService.java b/src/main/java/com/wrj/driver/server/service/IWrjUserCollectQuestionService.java index 6c13cda..dadde53 100644 --- a/src/main/java/com/wrj/driver/server/service/IWrjUserCollectQuestionService.java +++ b/src/main/java/com/wrj/driver/server/service/IWrjUserCollectQuestionService.java @@ -3,6 +3,8 @@ package com.wrj.driver.server.service; import com.wrj.driver.server.entity.WrjUserCollectQuestion; import com.baomidou.mybatisplus.extension.service.IService; +import java.util.List; + /** *

* 用户收藏表 服务类 @@ -14,4 +16,6 @@ import com.baomidou.mybatisplus.extension.service.IService; public interface IWrjUserCollectQuestionService extends IService { Boolean updateUserCollectQuestion(Long questionId, Long userId); + + List getUserCollectQuestionId(Integer driverTypeId, Long userId); } diff --git a/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionPracticeServiceImpl.java b/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionPracticeServiceImpl.java index 8d8b084..a40e70d 100644 --- a/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionPracticeServiceImpl.java +++ b/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionPracticeServiceImpl.java @@ -1,6 +1,7 @@ package com.wrj.driver.server.service.impl; import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; @@ -19,11 +20,13 @@ import com.wrj.driver.server.mapper.WrjUserErrorQuestionMapper; import com.wrj.driver.server.service.IWrjQuestionPracticeService; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.wrj.driver.server.vo.QuestionPracticeVo; +import com.wrj.driver.server.vo.QuestionVo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.util.ArrayList; import java.util.List; /** @@ -114,6 +117,41 @@ public class WrjQuestionPracticeServiceImpl extends ServiceImpl pageResult = practiceMapper.queryQuestionPracticePage(page, queryDto); + questionOptionHandler(pageResult.getRecords()); + return pageResult; } + + /** + * 问题选项规整 + */ + private void questionOptionHandler(List questionVos) { + if (CollectionUtil.isNotEmpty(questionVos)) { + for (QuestionPracticeVo questionVo : questionVos) { + //如果选项A没有值 则为判断题 + List optionList = new ArrayList<>(); + if (StrUtil.isBlank(questionVo.getChooseA()) || StrUtil.equals(questionVo.getType(), Constants.QUESTION_TYPE_ONE)) { + optionList.add(new QuestionVo.QuestionOption("A", "正确", "A")); + optionList.add(new QuestionVo.QuestionOption("B", "错误", "B")); + } else { + //起码ABCD都有 + optionList.add(new QuestionVo.QuestionOption("A", questionVo.getChooseA(), "A")); + optionList.add(new QuestionVo.QuestionOption("B", questionVo.getChooseB(), "B")); + optionList.add(new QuestionVo.QuestionOption("C", questionVo.getChooseC(), "C")); + optionList.add(new QuestionVo.QuestionOption("D", questionVo.getChooseD(), "D")); + + if (StrUtil.isNotBlank(questionVo.getChooseE())) { + optionList.add(new QuestionVo.QuestionOption("E", questionVo.getChooseE(), "E")); + } + if (StrUtil.isNotBlank(questionVo.getChooseF())) { + optionList.add(new QuestionVo.QuestionOption("F", questionVo.getChooseF(), "F")); + } + if (StrUtil.isNotBlank(questionVo.getChooseG())) { + optionList.add(new QuestionVo.QuestionOption("G", questionVo.getChooseG(), "G")); + } + } + questionVo.setOptionList(optionList); + } + } + } } diff --git a/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionServiceImpl.java b/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionServiceImpl.java index 63207e2..5e4c4f0 100644 --- a/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionServiceImpl.java +++ b/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionServiceImpl.java @@ -12,9 +12,12 @@ import com.wrj.driver.server.entity.WrjQuestion; import com.wrj.driver.server.entity.WrjSysConfig; import com.wrj.driver.server.exception.BusinessException; import com.wrj.driver.server.mapper.WrjQuestionMapper; +import com.wrj.driver.server.mapper.WrjQuestionPracticeMapper; import com.wrj.driver.server.redis.RedisCache; import com.wrj.driver.server.service.*; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.wrj.driver.server.util.SecurityUtil; +import com.wrj.driver.server.vo.UserQuestionPracticeVo; import com.wrj.driver.server.vo.WrjTypeChapterVo; import com.wrj.driver.server.vo.QuestionVo; import lombok.extern.slf4j.Slf4j; @@ -23,6 +26,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.*; +import java.util.function.Function; +import java.util.stream.Collectors; /** *

@@ -48,6 +53,9 @@ public class WrjQuestionServiceImpl extends ServiceImpl queryQuestionWithUser(QuestionQueryDto queryDto) { + List questionVos = queryQuestion(queryDto); + questionOptionHandler(questionVos); + // 处理用户练习信息 + handlerUserPracticeMsg(questionVos, SecurityUtil.getUserId(),queryDto.getPracticeType()); + return questionVos; + } + + private void handlerUserPracticeMsg(List questionVos,Long userId,String practiceType) { + + if (CollectionUtil.isEmpty(questionVos) || Objects.isNull(userId) || StrUtil.isBlank(practiceType)){ + return; + } + + List questionIdList = questionVos.stream().map(s -> s.getQuestionId()).collect(Collectors.toList()); + + List userQuestionPracticeVos = practiceMapper.queryUserQuestionPracticeMsg(questionIdList, userId, practiceType); + + if (CollectionUtil.isEmpty(userQuestionPracticeVos)){ + return; + } + + Map userQuestionPracticeVoMap = userQuestionPracticeVos.stream().collect(Collectors.toMap(UserQuestionPracticeVo::getQuestionId, Function.identity(), (x1, x2) -> x1)); + + for (QuestionVo questionVo : questionVos) { + questionVo.setUserQuestionPracticeVo(userQuestionPracticeVoMap.get(questionVo.getQuestionId())); + } + } + @Override public List queryQuestionId(QuestionQueryDto queryDto) { diff --git a/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionTestServiceImpl.java b/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionTestServiceImpl.java index 8696bef..ec7633a 100644 --- a/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionTestServiceImpl.java +++ b/src/main/java/com/wrj/driver/server/service/impl/WrjQuestionTestServiceImpl.java @@ -1,6 +1,7 @@ package com.wrj.driver.server.service.impl; import cn.hutool.core.collection.CollectionUtil; +import cn.hutool.core.lang.Snowflake; import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.wrj.driver.server.dto.SecurityUser; @@ -40,6 +41,8 @@ import java.util.stream.Collectors; @Service public class WrjQuestionTestServiceImpl extends ServiceImpl implements IWrjQuestionTestService { + @Autowired + private Snowflake snowflake; @Autowired private IWrjSysConfigService configService; @@ -60,6 +63,11 @@ public class WrjQuestionTestServiceImpl extends ServiceImpl @@ -43,4 +44,9 @@ public class WrjUserCollectQuestionServiceImpl extends ServiceImpl getUserCollectQuestionId(Integer driverTypeId, Long userId) { + return collectQuestionMapper.getUserCollectQuestionId(driverTypeId,userId); + } } diff --git a/src/main/java/com/wrj/driver/server/util/SecurityUtil.java b/src/main/java/com/wrj/driver/server/util/SecurityUtil.java index 142aa6b..3f59451 100644 --- a/src/main/java/com/wrj/driver/server/util/SecurityUtil.java +++ b/src/main/java/com/wrj/driver/server/util/SecurityUtil.java @@ -51,7 +51,6 @@ public class SecurityUtil { if (null != loginUser) { userId = loginUser.getUserId(); } - return userId; } } diff --git a/src/main/java/com/wrj/driver/server/vo/QuestionPracticeVo.java b/src/main/java/com/wrj/driver/server/vo/QuestionPracticeVo.java index 8411ad2..5949194 100644 --- a/src/main/java/com/wrj/driver/server/vo/QuestionPracticeVo.java +++ b/src/main/java/com/wrj/driver/server/vo/QuestionPracticeVo.java @@ -12,6 +12,7 @@ import lombok.experimental.Accessors; import java.io.Serializable; import java.time.LocalDateTime; +import java.util.List; /** *

@@ -47,6 +48,12 @@ public class QuestionPracticeVo implements Serializable { @ApiModelProperty("题目内容") private String question; + /** + * 题目类型 + */ + @ApiModelProperty("题目类型") + private String type; + /** * 选项A */ @@ -89,6 +96,9 @@ public class QuestionPracticeVo implements Serializable { @ApiModelProperty("选项G") private String chooseG; + @ApiModelProperty("选项列表") + private List optionList; + /** * 正确答案 */ diff --git a/src/main/java/com/wrj/driver/server/vo/QuestionVo.java b/src/main/java/com/wrj/driver/server/vo/QuestionVo.java index f107d4d..6e0e1c4 100644 --- a/src/main/java/com/wrj/driver/server/vo/QuestionVo.java +++ b/src/main/java/com/wrj/driver/server/vo/QuestionVo.java @@ -175,6 +175,26 @@ public class QuestionVo { @ApiModelProperty("答案D关键字") private String dWords; + /** + * 平台回答数量 + */ + @ApiModelProperty("平台回答数量") + private Long answerNumber; + + + /** + * 平台回答正确数量 + */ + @ApiModelProperty("平台回答正确数量") + private Long number; + + /** + * 用户答题信息 + */ + @ApiModelProperty("用户答题信息") + private UserQuestionPracticeVo userQuestionPracticeVo; + + @Data @Accessors diff --git a/src/main/java/com/wrj/driver/server/vo/UserQuestionPracticeVo.java b/src/main/java/com/wrj/driver/server/vo/UserQuestionPracticeVo.java new file mode 100644 index 0000000..1fa00d6 --- /dev/null +++ b/src/main/java/com/wrj/driver/server/vo/UserQuestionPracticeVo.java @@ -0,0 +1,70 @@ +package com.wrj.driver.server.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.experimental.Accessors; + +import java.io.Serializable; +import java.util.List; + +/** + *

+ * 用户答题练习参数 + *

+ * + * @author Automated procedures + * @since 2025-06-29 + */ +@Data +@EqualsAndHashCode(callSuper = false) +@Accessors(chain = true) +@ApiModel("用户答题练习出参") +public class UserQuestionPracticeVo implements Serializable { + + private static final long serialVersionUID = 1L; + + /** + * 题目标识 + */ + @ApiModelProperty("题目标识") + private Long questionId; + + /** + * 用户标识 + */ + @ApiModelProperty("用户标识") + private Long userId; + + /** + * 用户选择的答案 + */ + @ApiModelProperty("用户选择的答案") + private String answer; + + /** + * 答题结果 1-正确 2-错误 + */ + @ApiModelProperty("答题结果 1-正确 2-错误") + private String answerResult; + + /** + * 练习时间 + */ + @ApiModelProperty("答题时间") + private String practiceTime; + + /** + * 用户答题次数 + */ + @ApiModelProperty("用户答题次数") + private Long userAnswerNumbr; + + /** + * 用户答题正确次数 + */ + @ApiModelProperty("用户答题正确次数") + private Long userRightNumber; + +} diff --git a/src/main/resources/mapper/WrjQuestionMapper.xml b/src/main/resources/mapper/WrjQuestionMapper.xml index 9df6a77..b8e5fac 100644 --- a/src/main/resources/mapper/WrjQuestionMapper.xml +++ b/src/main/resources/mapper/WrjQuestionMapper.xml @@ -203,5 +203,66 @@ MAX(tq.show_order) from wrj_question tq + diff --git a/src/main/resources/mapper/WrjQuestionPracticeMapper.xml b/src/main/resources/mapper/WrjQuestionPracticeMapper.xml index 4eea353..ae8430d 100644 --- a/src/main/resources/mapper/WrjQuestionPracticeMapper.xml +++ b/src/main/resources/mapper/WrjQuestionPracticeMapper.xml @@ -28,6 +28,7 @@ wq.choose_d, wq.choose_e, wq.choose_f, + wq.type, wq.true_answer from wrj_question_practice wqp left join wrj_question wq on wqp.question_id = wq.question_id @@ -58,4 +59,34 @@ group by wqp.practice_id desc + + diff --git a/src/main/resources/mapper/WrjQuestionTestMapper.xml b/src/main/resources/mapper/WrjQuestionTestMapper.xml index c1ff81c..f9ff1e7 100644 --- a/src/main/resources/mapper/WrjQuestionTestMapper.xml +++ b/src/main/resources/mapper/WrjQuestionTestMapper.xml @@ -15,6 +15,9 @@ from wrj_question_test a inner join wrj_driver_type b on b.type_id = a.type_id + + and a.test_id = #{param.testId} + and a.type_id = #{param.driverTypeId} diff --git a/src/main/resources/mapper/WrjUserCollectQuestionMapper.xml b/src/main/resources/mapper/WrjUserCollectQuestionMapper.xml index 1cef249..cfb8940 100644 --- a/src/main/resources/mapper/WrjUserCollectQuestionMapper.xml +++ b/src/main/resources/mapper/WrjUserCollectQuestionMapper.xml @@ -10,6 +10,15 @@ where question_id = #{questionId} and user_id = #{userId} + + delete from wrj_user_collect_question where question_id = #{questionId} and user_id = #{userId}