题目修改

dev
caolin 2023-08-19 23:36:50 +08:00
parent 22a98befb6
commit dff741a9fd
14 changed files with 181 additions and 71 deletions

View File

@ -6,15 +6,13 @@ 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 com.jwl.driver.server.vo.QusetionVo;
import com.jwl.driver.server.vo.QuestionVo;
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.Collections;
import java.util.HashMap;
import java.util.Map;
@ -92,11 +90,11 @@ public class TdQuestionController {
@ApiOperation("对嘛接口-修改题库")
@PutMapping("/duima/update")
public Map updateQuestion(@RequestBody QusetionVo qusetionVo) {
log.info("修改题库======>qusetionVo:{}", qusetionVo);
public Map updateQuestion(@RequestBody QuestionVo questionVo) {
log.info("修改题库======>questionVo:{}", questionVo);
Map<String, Object> result = new HashMap<>();
result.put("code", 200);
result.put("data", tdQuestionService.updateQuestion(qusetionVo));
result.put("data", tdQuestionService.updateQuestion(questionVo));
return result;
}

View File

@ -1,6 +1,7 @@
package com.jwl.driver.server.controller;
import com.jwl.driver.server.dto.DriverSchoolDto;
import com.jwl.driver.server.dto.LoginUserDto;
import com.jwl.driver.server.exception.BusinessException;
import com.jwl.driver.server.response.BaseResponse;
@ -64,12 +65,9 @@ public class TdSysUserController {
@ApiOperation("用户绑定驾校")
@PostMapping("/bindSchool")
public BaseResponse bindSchool(@RequestBody LoginUserDto userDto) {
log.info("用户绑定驾校======>schoolId{}",userDto.getSchoolId());
if (Objects.isNull(userDto.getSchoolId())){
throw new BusinessException("缺少必要参数");
}
return BaseResponse.success(userService.bindSchool(userDto));
public BaseResponse bindSchool(@RequestBody @Valid DriverSchoolDto schoolDto) {
log.info("用户绑定驾校信息======>schoolDto{}",schoolDto);
return BaseResponse.success(userService.bindSchool(schoolDto));
}

View File

@ -0,0 +1,31 @@
package com.jwl.driver.server.dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
/**
* @author
* @description
* @create 2023/8/11 22:21
*/
@Data
@Accessors(chain = true)
public class DriverSchoolDto {
@ApiModelProperty(value = "驾校id",required = true)
@NotNull(message = "驾校id不能为空")
private Long schoolId;
@ApiModelProperty(value = "驾校名称",required = true)
@NotBlank(message = "驾校名称不能为空")
private String schoolName;
@ApiModelProperty(value = "驾校联系方式",required = false)
private String schoolPhone;
}

View File

@ -22,7 +22,4 @@ public class LoginUserDto {
@ApiModelProperty(value = "登陆验证码",required = true)
@NotBlank(message = "登陆验证码不能为空")
private String code;
@ApiModelProperty(value = "驾校id",required = false)
private Long schoolId;
}

View File

@ -10,6 +10,7 @@ import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;
import com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
@ -65,6 +66,18 @@ public class TdSysUser implements Serializable {
@TableField("SCHOOL_ID")
private Long schoolId;
/**
*
*/
@TableField("SCHOOL_NAME")
private String schoolName;
/**
*
*/
@TableField("SCHOOL_PHONE")
private String schoolPhone;
/**
*
*/

View File

@ -3,7 +3,7 @@ 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 com.jwl.driver.server.vo.QuestionVo;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -23,14 +23,14 @@ public interface TdQuestionMapper extends BaseMapper<TdQuestion> {
* @param queryDto
* @return
*/
List<QusetionVo> queryQuestion(@Param("queryDto") QuestionQueryDto queryDto);
List<QuestionVo> queryQuestion(@Param("queryDto") QuestionQueryDto queryDto);
/**
*
* @param queryDto
* @return
*/
List<QusetionVo> queryQuestionByRandom(@Param("queryDto") QuestionQueryDto queryDto);
List<QuestionVo> queryQuestionByRandom(@Param("queryDto") QuestionQueryDto queryDto);
int updateQuestion(@Param("qusetionVo") QusetionVo qusetionVo);
int updateQuestion(@Param("questionVo") QuestionVo questionVo);
}

View File

@ -3,8 +3,8 @@ 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.QuestionVo;
import com.jwl.driver.server.vo.QusetionCategoryVo;
import com.jwl.driver.server.vo.QusetionVo;
import java.util.List;
@ -24,28 +24,28 @@ public interface ITdQuestionService extends IService<TdQuestion> {
* @param queryDto
* @return
*/
TdQuestion queryQuestionById(QuestionQueryDto queryDto);
QuestionVo queryQuestionById(QuestionQueryDto queryDto);
/**
* id
* @param queryDto
* @return
*/
List<TdQuestion> queryQuestionByIdList(QuestionQueryDto queryDto);
List<QuestionVo> queryQuestionByIdList(QuestionQueryDto queryDto);
/**
*
* @param queryDto
* @return
*/
List<QusetionVo> queryQuestion(QuestionQueryDto queryDto);
List<QuestionVo> queryQuestion(QuestionQueryDto queryDto);
/**
*
* @param queryDto
* @return
*/
List<QusetionVo> getTestQuestion(QuestionQueryDto queryDto);
List<QuestionVo> getTestQuestion(QuestionQueryDto queryDto);
/**
*
@ -56,8 +56,8 @@ public interface ITdQuestionService extends IService<TdQuestion> {
/**
*
* @param qusetionVo
* @param questionVo
* @return
*/
int updateQuestion(QusetionVo qusetionVo);
int updateQuestion(QuestionVo questionVo);
}

View File

@ -1,5 +1,6 @@
package com.jwl.driver.server.service;
import com.jwl.driver.server.dto.DriverSchoolDto;
import com.jwl.driver.server.dto.LoginUserDto;
import com.jwl.driver.server.entity.TdSysUser;
import com.baomidou.mybatisplus.extension.service.IService;
@ -43,8 +44,8 @@ public interface ITdSysUserService extends IService<TdSysUser> {
/**
*
* @param userDto
* @param schoolDto
* @return
*/
Boolean bindSchool(LoginUserDto userDto);
Boolean bindSchool(DriverSchoolDto schoolDto);
}

View File

@ -3,6 +3,7 @@ package com.jwl.driver.server.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.generator.config.IFileCreate;
import com.jwl.driver.server.constant.Constants;
import com.jwl.driver.server.dto.QuestionQueryDto;
import com.jwl.driver.server.entity.TdQuestion;
@ -12,8 +13,8 @@ import com.jwl.driver.server.service.ITdQuestionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.jwl.driver.server.service.ITdSysConfigListService;
import com.jwl.driver.server.service.ITdSysConfigService;
import com.jwl.driver.server.vo.QuestionVo;
import com.jwl.driver.server.vo.QusetionCategoryVo;
import com.jwl.driver.server.vo.QusetionVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -38,26 +39,30 @@ public class TdQuestionServiceImpl extends ServiceImpl<TdQuestionMapper, TdQuest
private ITdSysConfigListService configListService;
@Override
public TdQuestion queryQuestionById(QuestionQueryDto queryDto) {
return this.getBaseMapper().selectById(queryDto.getQuestionId());
public QuestionVo queryQuestionById(QuestionQueryDto queryDto) {
QuestionQueryDto newDto = new QuestionQueryDto()
.setQuestionId(queryDto.getQuestionId());
List<QuestionVo> questionVos = queryQuestion(newDto);
return CollectionUtil.isEmpty(questionVos)? null : questionVos.get(0);
}
@Override
public List<TdQuestion> queryQuestionByIdList(QuestionQueryDto queryDto) {
LambdaQueryWrapper<TdQuestion> queryWrapper = new LambdaQueryWrapper<TdQuestion>()
.in(TdQuestion::getQuestionId,queryDto.getQuestionIdList());
return this.getBaseMapper().selectList(queryWrapper);
public List<QuestionVo> queryQuestionByIdList(QuestionQueryDto queryDto) {
QuestionQueryDto newDto = new QuestionQueryDto()
.setQuestionIdList(queryDto.getQuestionIdList());
return queryQuestion(newDto);
}
@Override
public List<QusetionVo> queryQuestion(QuestionQueryDto queryDto) {
return this.getBaseMapper().queryQuestion(queryDto);
public List<QuestionVo> queryQuestion(QuestionQueryDto queryDto) {
List<QuestionVo> questionVos = this.getBaseMapper().queryQuestion(queryDto);
questionOptionHandler(questionVos);
return questionVos;
}
@Override
public List<QusetionVo> getTestQuestion(QuestionQueryDto queryDto) {
List<QusetionVo> resultList = new ArrayList<>();
public List<QuestionVo> getTestQuestion(QuestionQueryDto queryDto) {
List<QuestionVo> resultList = new ArrayList<>();
if (StrUtil.equals(Constants.SUBJECT_ONE,queryDto.getSubject())){
//40道判断题 60道单选 每题1分
@ -83,6 +88,7 @@ public class TdQuestionServiceImpl extends ServiceImpl<TdQuestionMapper, TdQuest
.setNum(10);
resultList.addAll(this.getBaseMapper().queryQuestionByRandom(queryDto));
}
questionOptionHandler(resultList);
return resultList;
}
@ -91,8 +97,8 @@ public class TdQuestionServiceImpl extends ServiceImpl<TdQuestionMapper, TdQuest
List<QusetionCategoryVo> resultList = new ArrayList<>();
//获取题目
List<TdQuestion> tdQuestions = queryQuestionByIdList(queryDto);
if (CollectionUtil.isEmpty(tdQuestions)){
List<QuestionVo> tdQuestionVos = queryQuestionByIdList(queryDto);
if (CollectionUtil.isEmpty(tdQuestionVos)){
return resultList;
}
//获取分类
@ -100,8 +106,8 @@ public class TdQuestionServiceImpl extends ServiceImpl<TdQuestionMapper, TdQuest
Map<String, String> categoryMap = categoryList.stream().collect(Collectors.toMap(TdSysConfigList::getConfigItemCode, TdSysConfigList::getConfigItemName, (v1, v2) -> v1));
Map<String,Integer> totalMap = new HashMap<>();
for (TdQuestion tdQuestion : tdQuestions) {
String category = tdQuestion.getCategory();
for (QuestionVo tdQuestionVo : tdQuestionVos) {
String category = tdQuestionVo.getCategory();
if (StrUtil.isBlank(category)){
continue;
}
@ -127,7 +133,40 @@ public class TdQuestionServiceImpl extends ServiceImpl<TdQuestionMapper, TdQuest
}
@Override
public int updateQuestion(QusetionVo qusetionVo) {
return this.getBaseMapper().updateQuestion(qusetionVo);
public int updateQuestion(QuestionVo questionVo) {
return this.getBaseMapper().updateQuestion(questionVo);
}
/**
*
*/
private void questionOptionHandler(List<QuestionVo> questionVos){
if (CollectionUtil.isNotEmpty(questionVos)){
for (QuestionVo questionVo : questionVos) {
//如果选项A没有值 则为判断题
List<QuestionVo.QuestionOption> optionList = new ArrayList<>();
if (StrUtil.isBlank(questionVo.getChooseA())){
optionList.add(new QuestionVo.QuestionOption("A","正确","1"));
optionList.add(new QuestionVo.QuestionOption("B","错误","2"));
}else {
//起码ABCD都有
optionList.add(new QuestionVo.QuestionOption("A",questionVo.getChooseA(),"1"));
optionList.add(new QuestionVo.QuestionOption("B",questionVo.getChooseB(),"2"));
optionList.add(new QuestionVo.QuestionOption("C",questionVo.getChooseC(),"3"));
optionList.add(new QuestionVo.QuestionOption("D",questionVo.getChooseD(),"4"));
if (StrUtil.isNotBlank(questionVo.getChooseE())){
optionList.add(new QuestionVo.QuestionOption("E",questionVo.getChooseE(),"5"));
}
if (StrUtil.isNotBlank(questionVo.getChooseF())){
optionList.add(new QuestionVo.QuestionOption("F",questionVo.getChooseF(),"6"));
}
if (StrUtil.isNotBlank(questionVo.getChooseG())){
optionList.add(new QuestionVo.QuestionOption("G",questionVo.getChooseG(),"7"));
}
}
questionVo.setOptionList(optionList);
}
}
}
}

View File

@ -4,6 +4,7 @@ import cn.hutool.core.util.PhoneUtil;
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.DriverSchoolDto;
import com.jwl.driver.server.dto.LoginUserDto;
import com.jwl.driver.server.dto.SecurityUser;
import com.jwl.driver.server.entity.TdSysUser;
@ -136,7 +137,7 @@ public class TdSysUserServiceImpl extends ServiceImpl<TdSysUserMapper, TdSysUser
}
@Override
public Boolean bindSchool(LoginUserDto userDto) {
public Boolean bindSchool(DriverSchoolDto schoolDto) {
SecurityUser loginUser = SecurityUtil.getLoginUser();
LambdaQueryWrapper<TdSysUser> cond = new LambdaQueryWrapper<TdSysUser>()
@ -146,7 +147,9 @@ public class TdSysUserServiceImpl extends ServiceImpl<TdSysUserMapper, TdSysUser
if (Objects.isNull(tdSysUser)){
throw new BusinessException("用户不存在或者已被删除");
}
tdSysUser.setSchoolId(userDto.getSchoolId());
tdSysUser.setSchoolId(schoolDto.getSchoolId())
.setSchoolName(schoolDto.getSchoolName())
.setSchoolPhone(schoolDto.getSchoolPhone());
boolean result = this.updateById(tdSysUser);
if (!result){

View File

@ -60,6 +60,12 @@ public class LoginUserVo {
@ApiModelProperty("驾校名称")
private String schoolName;
/**
*
*/
@ApiModelProperty("驾校电话")
private String schoolPhone;
/**
*
*/

View File

@ -1,12 +1,13 @@
package com.jwl.driver.server.vo;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.experimental.Accessors;
import java.util.List;
/**
* @author
* @description
@ -15,7 +16,7 @@ import lombok.experimental.Accessors;
@Data
@Accessors(chain = true)
@ApiModel("驾考题目出参")
public class QusetionVo {
public class QuestionVo {
private static final long serialVersionUID = 1L;
@ -127,6 +128,9 @@ public class QusetionVo {
@ApiModelProperty("选择")
private String options;
@ApiModelProperty("选项列表")
private List<QuestionOption> optionList;
/**
* 1 23
*/
@ -189,4 +193,19 @@ public class QusetionVo {
*/
@ApiModelProperty("是否密卷2")
private Integer isExam2;
@Data
@Accessors
@AllArgsConstructor
public static class QuestionOption{
@ApiModelProperty("选项")
private String op;
@ApiModelProperty("选项描述")
private String opDesc;
@ApiModelProperty("选项值")
private String opValue;
}
}

View File

@ -1,11 +1,16 @@
spring:
# redis 配置
redis:
host: 127.0.0.1
# host: 127.0.0.1
# port: 6379
# database: 8
# timeout: 5000
# auth: caolin123
host: 118.31.23.45
port: 6379
database: 8
timeout: 5000
auth: caolin123
password: 123456
# 数据库 配置

View File

@ -2,7 +2,7 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.jwl.driver.server.mapper.TdQuestionMapper">
<select id="queryQuestion" resultType="com.jwl.driver.server.vo.QusetionVo">
<select id="queryQuestion" resultType="com.jwl.driver.server.vo.QuestionVo">
select
tq.QUESTION_ID,
tq.QUESTION,
@ -76,7 +76,7 @@
order by tq.SHOW_ORDER asc
</select>
<select id="queryQuestionByRandom" resultType="com.jwl.driver.server.vo.QusetionVo">
<select id="queryQuestionByRandom" resultType="com.jwl.driver.server.vo.QuestionVo">
select
tq.QUESTION_ID,
tq.QUESTION,
@ -123,32 +123,32 @@
order by rand() limit ${queryDto.num};
</select>
<update id="updateQuestion" parameterType="com.jwl.driver.server.vo.QusetionVo">
<update id="updateQuestion" parameterType="com.jwl.driver.server.vo.QuestionVo">
update td_question
<trim prefix="SET" suffixOverrides=",">
<if test="qusetionVo.isVip !=null">
IS_VIP = #{qusetionVo.isVip},
<if test="questionVo.isVip !=null">
IS_VIP = #{questionVo.isVip},
</if>
<if test="qusetionVo.isError !=null">
IS_ERROR = #{qusetionVo.isError},
<if test="questionVo.isError !=null">
IS_ERROR = #{questionVo.isError},
</if>
<if test="qusetionVo.isNew !=null">
IS_NEW = #{qusetionVo.isNew},
<if test="questionVo.isNew !=null">
IS_NEW = #{questionVo.isNew},
</if>
<if test="qusetionVo.examKeys !=null">
EXAM_KEYS = #{qusetionVo.examKeys},
<if test="questionVo.examKeys !=null">
EXAM_KEYS = #{questionVo.examKeys},
</if>
<if test="qusetionVo.isVip2 !=null">
IS_VIP2 = #{qusetionVo.isVip2},
<if test="questionVo.isVip2 !=null">
IS_VIP2 = #{questionVo.isVip2},
</if>
<if test="qusetionVo.isExam1 !=null">
IS_EXAM1 = #{qusetionVo.isExam1},
<if test="questionVo.isExam1 !=null">
IS_EXAM1 = #{questionVo.isExam1},
</if>
<if test="qusetionVo.isExam2 !=null">
IS_EXAM2 = #{qusetionVo.isExam2},
<if test="questionVo.isExam2 !=null">
IS_EXAM2 = #{questionVo.isExam2},
</if>
</trim>
where QUESTION_ID = #{qusetionVo.questionId}
where QUESTION_ID = #{questionVo.questionId}
</update>