From e3fbbe79224e359a8d096b02654a115fff71c9e6 Mon Sep 17 00:00:00 2001
From: caolin <1149034574@qq.com>
Date: Mon, 14 Aug 2023 01:31:26 +0800
Subject: [PATCH] =?UTF-8?q?=E8=8E=B7=E5=8F=96=E8=80=83=E8=AF=95=E9=A2=98?=
=?UTF-8?q?=E7=9B=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../jwl/driver/server/constant/Constants.java | 21 +++
.../server/controller/TdCarController.java | 25 ++-
.../controller/TdQuestionController.java | 53 ++++++-
.../driver/server/dto/QuestionQueryDto.java | 90 +++++++++++
.../driver/server/entity/TdPointQuestion.java | 4 +-
.../jwl/driver/server/entity/TdQuestion.java | 12 +-
.../server/mapper/TdQuestionMapper.java | 18 +++
.../server/service/ITdQuestionService.java | 32 ++++
.../service/impl/TdQuestionServiceImpl.java | 61 ++++++++
.../com/jwl/driver/server/vo/QusetionVo.java | 147 ++++++++++++++++++
.../resources/mapper/TdQuestionMapper.xml | 100 ++++++++++++
11 files changed, 554 insertions(+), 9 deletions(-)
create mode 100644 src/main/java/com/jwl/driver/server/dto/QuestionQueryDto.java
create mode 100644 src/main/java/com/jwl/driver/server/vo/QusetionVo.java
diff --git a/src/main/java/com/jwl/driver/server/constant/Constants.java b/src/main/java/com/jwl/driver/server/constant/Constants.java
index 8f1cf15..95215c5 100644
--- a/src/main/java/com/jwl/driver/server/constant/Constants.java
+++ b/src/main/java/com/jwl/driver/server/constant/Constants.java
@@ -18,4 +18,25 @@ public class Constants {
//是否有效-无效
public static String IS_ACTIVE_FALSE = "1";
+ //科目一
+ public static String SUBJECT_ONE = "1";
+
+ //科目二
+ public static String SUBJECT_TWO = "2";
+
+ //科目三
+ public static String SUBJECT_THREE = "3";
+
+ //科目四
+ public static String SUBJECT_FOUR = "4";
+
+ //单选题
+ public static String QUESTION_TYPE_ONE = "1";
+
+ //判断题
+ public static String QUESTION_TYPE_TWO = "2";
+
+ //多选题
+ public static String QUESTION_TYPE_THREE = "3";
+
}
diff --git a/src/main/java/com/jwl/driver/server/controller/TdCarController.java b/src/main/java/com/jwl/driver/server/controller/TdCarController.java
index 32b6718..4ef9906 100644
--- a/src/main/java/com/jwl/driver/server/controller/TdCarController.java
+++ b/src/main/java/com/jwl/driver/server/controller/TdCarController.java
@@ -1,9 +1,19 @@
package com.jwl.driver.server.controller;
+import com.jwl.driver.server.dto.QuestionQueryDto;
+import com.jwl.driver.server.response.BaseResponse;
+import com.jwl.driver.server.service.ITdCarService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
/**
*
@@ -13,8 +23,19 @@ import org.springframework.stereotype.Controller;
* @author Automated procedures
* @since 2023-08-10
*/
-@Controller
-@RequestMapping("//tdCar")
+@Api(tags = "车型")
+@RestController
+@RequestMapping("/tdCar")
+@Slf4j
public class TdCarController {
+ @Autowired
+ private ITdCarService carService;
+
+ @ApiOperation("获取车型列表")
+ @GetMapping("/list")
+ public BaseResponse list() {
+ return BaseResponse.success(carService.list());
+ }
+
}
diff --git a/src/main/java/com/jwl/driver/server/controller/TdQuestionController.java b/src/main/java/com/jwl/driver/server/controller/TdQuestionController.java
index d969647..6feea0c 100644
--- a/src/main/java/com/jwl/driver/server/controller/TdQuestionController.java
+++ b/src/main/java/com/jwl/driver/server/controller/TdQuestionController.java
@@ -1,10 +1,20 @@
package com.jwl.driver.server.controller;
-import org.springframework.web.bind.annotation.RequestMapping;
+import com.jwl.driver.server.dto.QuestionQueryDto;
+import com.jwl.driver.server.exception.BusinessException;
+import com.jwl.driver.server.response.BaseResponse;
+import com.jwl.driver.server.service.ITdQuestionService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
import org.springframework.stereotype.Controller;
+import java.util.Objects;
+
/**
*
* 题库; 前端控制器
@@ -13,8 +23,45 @@ import org.springframework.stereotype.Controller;
* @author Automated procedures
* @since 2023-08-10
*/
-@Controller
-@RequestMapping("//tdQuestion")
+@Api(tags = "考试题库")
+@RestController
+@RequestMapping("/tdQuestion")
+@Slf4j
public class TdQuestionController {
+ @Autowired
+ private ITdQuestionService tdQuestionService;
+
+ @ApiOperation("根据id获取题目")
+ @PostMapping("/queryQuestionById")
+ public BaseResponse queryQuestionById(@RequestParam QuestionQueryDto queryDto) {
+ log.info("获取题型======>queryDto:{}", queryDto);
+ return BaseResponse.success(tdQuestionService.queryQuestionById(queryDto));
+ }
+
+
+ @ApiOperation("根据id列表获取题目")
+ @PostMapping("/queryQuestionByIdList")
+ public BaseResponse queryQuestionByIdList(@RequestParam QuestionQueryDto queryDto) {
+ log.info("获取题型======>queryDto:{}", queryDto);
+ return BaseResponse.success(tdQuestionService.queryQuestionByIdList(queryDto));
+ }
+
+
+ @ApiOperation("根据查询条件获取题目")
+ @PostMapping("/queryQuestion")
+ public BaseResponse queryQuestion(@RequestParam QuestionQueryDto queryDto) {
+ log.info("获取题型======>queryDto:{}", queryDto);
+ return BaseResponse.success(tdQuestionService.queryQuestion(queryDto));
+ }
+
+ @ApiOperation("获取模拟考试题目")
+ @PostMapping("/getTestQuestion")
+ public BaseResponse getTestQuestion(@RequestParam QuestionQueryDto queryDto) {
+ log.info("获取模拟考试题目======>queryDto:{}", queryDto);
+ if (Objects.isNull(queryDto.getCarTypeId()) && Objects.isNull(queryDto.getSubject())){
+ throw new BusinessException("缺少必要参数");
+ }
+ return BaseResponse.success(tdQuestionService.getTestQuestion(queryDto));
+ }
}
diff --git a/src/main/java/com/jwl/driver/server/dto/QuestionQueryDto.java b/src/main/java/com/jwl/driver/server/dto/QuestionQueryDto.java
new file mode 100644
index 0000000..ab706b6
--- /dev/null
+++ b/src/main/java/com/jwl/driver/server/dto/QuestionQueryDto.java
@@ -0,0 +1,90 @@
+package com.jwl.driver.server.dto;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+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 2023-08-10
+ */
+@Data
+@Accessors(chain = true)
+@ApiModel("题目查询入参")
+public class QuestionQueryDto implements Serializable {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 题目标识
+ */
+ @ApiModelProperty("题目标识")
+ private Long questionId;
+
+ /**
+ * 题目标识列表
+ */
+ @ApiModelProperty("题目标识列表")
+ private List questionIdList;
+
+ /**
+ * 题型分类
+ */
+ @ApiModelProperty("题型分类")
+ private String category;
+
+ /**
+ * 章节标识
+ */
+ @ApiModelProperty("章节标识")
+ private String chapter;
+
+ /**
+ * 所属科目,1:科目1,2:科目4
+ */
+ @ApiModelProperty("所属科目,1:科目1,2:科目4")
+ private String subject;
+
+ /**
+ * 车型
+ */
+ @ApiModelProperty("车型")
+ private Integer carTypeId;
+
+ /**
+ * 题型: 单选 多选 判断题
+ */
+ @ApiModelProperty("题型: 单选 多选 判断题")
+ private String type;
+
+ /**
+ * 专项练习类型
+ */
+ @ApiModelProperty("专项练习类型")
+ private String cid;
+
+ /**
+ * 考点
+ */
+ @ApiModelProperty("考点")
+ private String point;
+
+ /**
+ * 获取题数
+ */
+ @ApiModelProperty("获取题数")
+ private int Num;
+
+}
diff --git a/src/main/java/com/jwl/driver/server/entity/TdPointQuestion.java b/src/main/java/com/jwl/driver/server/entity/TdPointQuestion.java
index 1c5f96a..bc49cfc 100644
--- a/src/main/java/com/jwl/driver/server/entity/TdPointQuestion.java
+++ b/src/main/java/com/jwl/driver/server/entity/TdPointQuestion.java
@@ -27,8 +27,8 @@ public class TdPointQuestion implements Serializable {
/**
* 考点标识
*/
- @TableId(value = "POINT", type = IdType.AUTO)
- private Integer point;
+ @TableField(value = "POINT")
+ private String point;
/**
* 车型
diff --git a/src/main/java/com/jwl/driver/server/entity/TdQuestion.java b/src/main/java/com/jwl/driver/server/entity/TdQuestion.java
index 06b56f8..efe6ea8 100644
--- a/src/main/java/com/jwl/driver/server/entity/TdQuestion.java
+++ b/src/main/java/com/jwl/driver/server/entity/TdQuestion.java
@@ -4,6 +4,8 @@ import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableField;
import java.io.Serializable;
+
+import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@@ -86,8 +88,8 @@ public class TdQuestion implements Serializable {
/**
* 未知
*/
- @TableField("CID")
- private String cid;
+ @TableField("CIDS")
+ private String cids;
/**
* 题型分类
@@ -137,6 +139,12 @@ public class TdQuestion implements Serializable {
@TableField("TYPE")
private String type;
+ /**
+ * 显示序号
+ */
+ @TableField("SHOW_ORDER")
+ private int showOrder;
+
/**
* 车型
*/
diff --git a/src/main/java/com/jwl/driver/server/mapper/TdQuestionMapper.java b/src/main/java/com/jwl/driver/server/mapper/TdQuestionMapper.java
index 4f36d83..b635b74 100644
--- a/src/main/java/com/jwl/driver/server/mapper/TdQuestionMapper.java
+++ b/src/main/java/com/jwl/driver/server/mapper/TdQuestionMapper.java
@@ -1,7 +1,12 @@
package com.jwl.driver.server.mapper;
+import com.jwl.driver.server.dto.QuestionQueryDto;
import com.jwl.driver.server.entity.TdQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jwl.driver.server.vo.QusetionVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
/**
*
@@ -13,4 +18,17 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface TdQuestionMapper extends BaseMapper {
+ /**
+ * 查询考题
+ * @param queryDto
+ * @return
+ */
+ List queryQuestion(@Param("queryDto") QuestionQueryDto queryDto);
+
+ /**
+ * 随机查询考题
+ * @param queryDto
+ * @return
+ */
+ List queryQuestionByRandom(@Param("queryDto") QuestionQueryDto queryDto);
}
diff --git a/src/main/java/com/jwl/driver/server/service/ITdQuestionService.java b/src/main/java/com/jwl/driver/server/service/ITdQuestionService.java
index bb4ab84..9669d93 100644
--- a/src/main/java/com/jwl/driver/server/service/ITdQuestionService.java
+++ b/src/main/java/com/jwl/driver/server/service/ITdQuestionService.java
@@ -1,7 +1,11 @@
package com.jwl.driver.server.service;
+import com.jwl.driver.server.dto.QuestionQueryDto;
import com.jwl.driver.server.entity.TdQuestion;
import com.baomidou.mybatisplus.extension.service.IService;
+import com.jwl.driver.server.vo.QusetionVo;
+
+import java.util.List;
/**
*
@@ -13,4 +17,32 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface ITdQuestionService extends IService {
+
+ /**
+ * 根据id 获取题目
+ * @param queryDto
+ * @return
+ */
+ TdQuestion queryQuestionById(QuestionQueryDto queryDto);
+
+ /**
+ * 根据id列表 批量获取题目
+ * @param queryDto
+ * @return
+ */
+ List queryQuestionByIdList(QuestionQueryDto queryDto);
+
+ /**
+ * 根据查询条件获取列表
+ * @param queryDto
+ * @return
+ */
+ List queryQuestion(QuestionQueryDto queryDto);
+
+ /**
+ * 获取考试题目
+ * @param queryDto
+ * @return
+ */
+ List getTestQuestion(QuestionQueryDto queryDto);
}
diff --git a/src/main/java/com/jwl/driver/server/service/impl/TdQuestionServiceImpl.java b/src/main/java/com/jwl/driver/server/service/impl/TdQuestionServiceImpl.java
index f4d2859..8eb7cc4 100644
--- a/src/main/java/com/jwl/driver/server/service/impl/TdQuestionServiceImpl.java
+++ b/src/main/java/com/jwl/driver/server/service/impl/TdQuestionServiceImpl.java
@@ -1,11 +1,21 @@
package com.jwl.driver.server.service.impl;
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.jwl.driver.server.constant.Constants;
+import com.jwl.driver.server.dto.QuestionQueryDto;
import com.jwl.driver.server.entity.TdQuestion;
import com.jwl.driver.server.mapper.TdQuestionMapper;
import com.jwl.driver.server.service.ITdQuestionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.jwl.driver.server.service.ITdSysConfigService;
+import com.jwl.driver.server.vo.QusetionVo;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import java.util.ArrayList;
+import java.util.List;
+
/**
*
* 题库; 服务实现类
@@ -17,4 +27,55 @@ import org.springframework.stereotype.Service;
@Service
public class TdQuestionServiceImpl extends ServiceImpl implements ITdQuestionService {
+ @Autowired
+ private ITdSysConfigService configService;
+
+ @Override
+ public TdQuestion queryQuestionById(QuestionQueryDto queryDto) {
+ return this.getBaseMapper().selectById(queryDto.getQuestionId());
+ }
+
+ @Override
+ public List queryQuestionByIdList(QuestionQueryDto queryDto) {
+ LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper()
+ .in(TdQuestion::getQuestionId,queryDto.getQuestionIdList());
+
+ return this.getBaseMapper().selectList(queryWrapper);
+ }
+
+ @Override
+ public List queryQuestion(QuestionQueryDto queryDto) {
+ return this.getBaseMapper().queryQuestion(queryDto);
+ }
+
+ @Override
+ public List getTestQuestion(QuestionQueryDto queryDto) {
+ List resultList = new ArrayList<>();
+
+ if (StrUtil.equals(Constants.SUBJECT_ONE,queryDto.getSubject())){
+ //40道判断题 60道单选 每题1分
+ queryDto.setType(Constants.QUESTION_TYPE_ONE)
+ .setNum(60);
+ resultList.addAll(this.getBaseMapper().queryQuestionByRandom(queryDto));
+
+ queryDto.setType(Constants.QUESTION_TYPE_TWO)
+ .setNum(40);
+ resultList.addAll(this.getBaseMapper().queryQuestionByRandom(queryDto));
+
+ }else if(StrUtil.equals(Constants.SUBJECT_FOUR,queryDto.getSubject())){
+ //20道判断题 20道单选 10道多选,每题2分,如果各车型不统一 可以配在数据库里
+ queryDto.setType(Constants.QUESTION_TYPE_TWO)
+ .setNum(20);
+
+ resultList.addAll(this.getBaseMapper().queryQuestionByRandom(queryDto));
+ queryDto.setType(Constants.QUESTION_TYPE_ONE)
+ .setNum(20);
+
+ resultList.addAll(this.getBaseMapper().queryQuestionByRandom(queryDto));
+ queryDto.setType(Constants.QUESTION_TYPE_THREE)
+ .setNum(10);
+ resultList.addAll(this.getBaseMapper().queryQuestionByRandom(queryDto));
+ }
+ return resultList;
+ }
}
diff --git a/src/main/java/com/jwl/driver/server/vo/QusetionVo.java b/src/main/java/com/jwl/driver/server/vo/QusetionVo.java
new file mode 100644
index 0000000..836224a
--- /dev/null
+++ b/src/main/java/com/jwl/driver/server/vo/QusetionVo.java
@@ -0,0 +1,147 @@
+package com.jwl.driver.server.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @author 曹林
+ * @description 驾考题目出参
+ * @create 2023/8/13 17:13
+ */
+public class QusetionVo {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * 题目标识
+ */
+ @ApiModelProperty("题目标识")
+ private Long questionId;
+
+ /**
+ * 题目内容
+ */
+ @ApiModelProperty("题目内容")
+ private String question;
+
+ /**
+ * 选项A
+ */
+ @ApiModelProperty("选项A")
+ private String chooseA;
+
+ /**
+ * 选项B
+ */
+ @ApiModelProperty("选项B")
+ private String chooseB;
+
+ /**
+ * 选项C
+ */
+ @ApiModelProperty("选项C")
+ private String chooseC;
+
+ /**
+ * 选项D
+ */
+ @ApiModelProperty("选项D")
+ private String chooseD;
+
+ /**
+ * 选项E
+ */
+ @ApiModelProperty("选项E")
+ private String chooseE;
+
+ /**
+ * 选项F
+ */
+ @ApiModelProperty("选项F")
+ private String chooseF;
+
+ /**
+ * 选项G
+ */
+ @ApiModelProperty("选项G")
+ private String chooseG;
+
+ /**
+ * 正确答案
+ */
+ @ApiModelProperty("正确答案")
+ private String trueAnswer;
+
+ /**
+ * 未知
+ */
+ @ApiModelProperty("未知")
+ private String cids;
+
+ /**
+ * 题型分类
+ */
+ @ApiModelProperty("题型分类")
+ private String category;
+
+ /**
+ * 题目图片url
+ */
+ @ApiModelProperty("题目图片url")
+ private String imageUrl;
+
+ /**
+ * 未知
+ */
+ @ApiModelProperty("未知")
+ private String sohuImg;
+
+ /**
+ * 最佳回答
+ */
+ @ApiModelProperty("最佳回答")
+ private String bestAnswer;
+
+ /**
+ * 章节标识
+ */
+ @ApiModelProperty("章节标识")
+ private String chapter;
+
+ /**
+ * 所属科目,1:科目1,2:科目4
+ */
+ @ApiModelProperty("所属科目,1:科目1,2:科目4")
+ private String subject;
+
+ /**
+ * 选择
+ */
+ @ApiModelProperty("选择")
+ private String options;
+
+ /**
+ * 题目类型,1:选择题 2:判断题,3:多选题
+ */
+ @ApiModelProperty("题目类型,1:选择题 2:判断题,3:多选题")
+ private String type;
+
+ /**
+ * 显示序号
+ */
+ @ApiModelProperty("显示序号")
+ private int showOrder;
+
+ /**
+ * 车型
+ */
+ @ApiModelProperty("车型")
+ private Integer carTypeId;
+
+ /**
+ * 是否生效
+ */
+ @ApiModelProperty("是否生效")
+ private String isActive;
+}
diff --git a/src/main/resources/mapper/TdQuestionMapper.xml b/src/main/resources/mapper/TdQuestionMapper.xml
index 52899e1..036d3e0 100644
--- a/src/main/resources/mapper/TdQuestionMapper.xml
+++ b/src/main/resources/mapper/TdQuestionMapper.xml
@@ -2,4 +2,104 @@
+
+
+