答题开发

master
caolin 4 days ago
parent 1b1bbcfe56
commit 31e29202cf
  1. 34
      src/main/java/com/wrj/driver/server/controller/WrjQuestionPracticeController.java
  2. 21
      src/main/java/com/wrj/driver/server/controller/WrjUserCollectQuestionController.java
  3. 19
      src/main/java/com/wrj/driver/server/controller/WrjUserErrorQuestionController.java
  4. 61
      src/main/java/com/wrj/driver/server/dto/QuestionPracticeAddDto.java
  5. 7
      src/main/java/com/wrj/driver/server/dto/SecurityUser.java
  6. 13
      src/main/java/com/wrj/driver/server/entity/WrjQuestion.java
  7. 2
      src/main/java/com/wrj/driver/server/entity/WrjQuestionPractice.java
  8. 2
      src/main/java/com/wrj/driver/server/mapper/SysUserLogMapper.java
  9. 3
      src/main/java/com/wrj/driver/server/mapper/SysUserMapper.java
  10. 3
      src/main/java/com/wrj/driver/server/mapper/WrjChapterMapper.java
  11. 3
      src/main/java/com/wrj/driver/server/mapper/WrjDriverTypeMapper.java
  12. 3
      src/main/java/com/wrj/driver/server/mapper/WrjExamPlaceMapper.java
  13. 3
      src/main/java/com/wrj/driver/server/mapper/WrjModelMapper.java
  14. 19
      src/main/java/com/wrj/driver/server/mapper/WrjQuestionMapper.java
  15. 5
      src/main/java/com/wrj/driver/server/mapper/WrjQuestionPracticeMapper.java
  16. 3
      src/main/java/com/wrj/driver/server/mapper/WrjQuestionTestMapper.java
  17. 3
      src/main/java/com/wrj/driver/server/mapper/WrjSchoolMapper.java
  18. 3
      src/main/java/com/wrj/driver/server/mapper/WrjSchoolModelMapper.java
  19. 3
      src/main/java/com/wrj/driver/server/mapper/WrjSchoolServiceMapper.java
  20. 3
      src/main/java/com/wrj/driver/server/mapper/WrjSchoolTagMapper.java
  21. 2
      src/main/java/com/wrj/driver/server/mapper/WrjSysConfigListMapper.java
  22. 3
      src/main/java/com/wrj/driver/server/mapper/WrjSysConfigMapper.java
  23. 2
      src/main/java/com/wrj/driver/server/mapper/WrjTypeChapterMapper.java
  24. 7
      src/main/java/com/wrj/driver/server/mapper/WrjUserCollectQuestionMapper.java
  25. 7
      src/main/java/com/wrj/driver/server/mapper/WrjUserErrorQuestionMapper.java
  26. 4
      src/main/java/com/wrj/driver/server/service/IWrjQuestionPracticeService.java
  27. 1
      src/main/java/com/wrj/driver/server/service/IWrjUserCollectQuestionService.java
  28. 1
      src/main/java/com/wrj/driver/server/service/IWrjUserErrorQuestionService.java
  29. 65
      src/main/java/com/wrj/driver/server/service/impl/WrjQuestionPracticeServiceImpl.java
  30. 26
      src/main/java/com/wrj/driver/server/service/impl/WrjUserCollectQuestionServiceImpl.java
  31. 12
      src/main/java/com/wrj/driver/server/service/impl/WrjUserErrorQuestionServiceImpl.java
  32. 15
      src/main/java/com/wrj/driver/server/util/SecurityUtil.java
  33. 7
      src/main/resources/mapper/WrjQuestionMapper.xml
  34. 6
      src/main/resources/mapper/WrjQuestionPracticeMapper.xml
  35. 12
      src/main/resources/mapper/WrjUserCollectQuestionMapper.xml
  36. 12
      src/main/resources/mapper/WrjUserErrorQuestionMapper.xml

@ -1,10 +1,19 @@
package com.wrj.driver.server.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.wrj.driver.server.dto.QuestionPracticeAddDto;
import com.wrj.driver.server.dto.QuestionQueryDto;
import com.wrj.driver.server.response.BaseResponse;
import com.wrj.driver.server.service.IWrjQuestionPracticeService;
import com.wrj.driver.server.util.SecurityUtil;
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 org.springframework.web.bind.annotation.RestController;
import javax.validation.Valid;
/**
* <p>
@ -16,6 +25,27 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/wrjQuestionPractice")
@Slf4j
public class WrjQuestionPracticeController {
@Autowired
private IWrjQuestionPracticeService practiceService;
@ApiOperation("答题练习")
@PostMapping("/insert")
public BaseResponse insertQuestionPractice(@RequestBody @Valid QuestionPracticeAddDto addDto) {
addDto.setUserId(SecurityUtil.getUserId());
log.info("答题练习======>addDto:{}", addDto);
return BaseResponse.success(practiceService.insertQuestionPractice(addDto));
}
@ApiOperation("清空答题练习")
@PostMapping("/clear")
public BaseResponse clear(@RequestParam String practiceType) {
log.info("清空答题练习 userId:{},practiceType:{}", SecurityUtil.getUserId(),practiceType);
return BaseResponse.success(practiceService.clear(SecurityUtil.getUserId(),practiceType));
}
}

@ -1,10 +1,16 @@
package com.wrj.driver.server.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import com.wrj.driver.server.dto.QuestionPracticeAddDto;
import com.wrj.driver.server.response.BaseResponse;
import com.wrj.driver.server.service.IWrjUserCollectQuestionService;
import com.wrj.driver.server.util.SecurityUtil;
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 org.springframework.web.bind.annotation.RestController;
/**
* <p>
@ -16,6 +22,17 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/wrjUserCollectQuestion")
@Slf4j
public class WrjUserCollectQuestionController {
@Autowired
private IWrjUserCollectQuestionService collectQuestionService;
@ApiOperation("更新收藏(没有收藏调用则是收藏,已收藏调用则是取消收藏)")
@PostMapping("/update")
public BaseResponse updateUserCollectQuestion(@RequestParam Long questionId) {
log.info("更新收藏题目id======>questionId:{},userId:{}", questionId, SecurityUtil.getUserId());
return BaseResponse.success(collectQuestionService.updateUserCollectQuestion(questionId, SecurityUtil.getUserId()));
}
}

@ -1,9 +1,17 @@
package com.wrj.driver.server.controller;
import com.wrj.driver.server.response.BaseResponse;
import com.wrj.driver.server.service.IWrjUserErrorQuestionService;
import com.wrj.driver.server.util.SecurityUtil;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
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;
/**
@ -16,6 +24,17 @@ import org.springframework.web.bind.annotation.RestController;
*/
@RestController
@RequestMapping("/wrjUserErrorQuestion")
@Slf4j
public class WrjUserErrorQuestionController {
@Autowired
private IWrjUserErrorQuestionService errorQuestionService;
@ApiOperation("移除错题")
@PostMapping("/remove")
public BaseResponse remove(@RequestParam Long questionId) {
log.info("移除错题题目id======>questionId:{},userId:{}", questionId, SecurityUtil.getUserId());
return BaseResponse.success(errorQuestionService.remove(questionId, SecurityUtil.getUserId()));
}
}

@ -0,0 +1,61 @@
package com.wrj.driver.server.dto;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;
import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.io.Serializable;
/**
* <p>
* 用户答题练习表入参
* </p>
*
* @author Automated procedures
* @since 2025-06-29
*/
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel("答题练习入参")
public class QuestionPracticeAddDto implements Serializable {
private static final long serialVersionUID = 1L;
/**
* 题目标识
*/
@ApiModelProperty(value = "题目标识",required = true)
@NotNull(message = "题目标识不能为空")
private Long questionId;
/**
* 用户标识
*/
@ApiModelProperty("用户标识")
private Long userId;
/**
* 答题类型 1-顺序练习 2-章节练习 3-随机练习 4-模拟考试
*/
@ApiModelProperty(value = "答题类型 1-顺序练习 2-章节练习 3-随机练习 4-模拟考试 5-错题训练 6-收藏训练",required = true)
@NotBlank(message = "答题类型不能为空")
private String practiceType;
/**
* 用户选择的答案
*/
@ApiModelProperty("用户选择的答案")
@NotBlank(message = "答案不能为空")
private String answer;
/**
* 业务标识顺序练习对应顺序练习批次模拟考试对应考试test_id
*/
@ApiModelProperty("业务标识,顺序练习对应顺序练习批次,模拟考试对应考试test_id")
private Long businessCode;
}

@ -28,11 +28,4 @@ public class SecurityUser implements Serializable {
*/
private String token;
/**
* 分下人员id
*/
private String distributionId;
}

@ -184,4 +184,17 @@ public class WrjQuestion implements Serializable {
@TableField("d_words")
private String dWords;
/**
* 答题次数
*/
@TableField("answer_number")
private Long answerNumber;
/**
* 答题正确次数
*/
@TableField("right_number")
private Long rightNumber;
}

@ -46,7 +46,7 @@ public class WrjQuestionPractice implements Serializable {
private Long userId;
/**
* 练习类型 1-顺序练习 2-章节练习 3-随机练习 4-模拟考试
* 练习类型 1-顺序练习 2-章节练习 3-随机练习 4-模拟考试 5-错题训练 6-收藏训练
*/
@TableField("practice_type")
private String practiceType;

@ -2,6 +2,8 @@ package com.wrj.driver.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wrj.driver.server.entity.SysUserLog;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface SysUserLogMapper extends BaseMapper<SysUserLog> {
}

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.SysUser;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,5 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2023-08-10
*/
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {
}

@ -4,6 +4,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wrj.driver.server.dto.ChapterDto;
import com.wrj.driver.server.dto.ChapterQueryDto;
import com.wrj.driver.server.entity.WrjChapter;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -11,6 +12,8 @@ import java.util.List;
/**
* 章节数据层
*/
@Mapper
public interface WrjChapterMapper extends BaseMapper<WrjChapter> {
List<ChapterDto> queryChapter(@Param("param") ChapterQueryDto queryDto);
}

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjDriverType;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2023-08-10
*/
@Mapper
public interface WrjDriverTypeMapper extends BaseMapper<WrjDriverType> {
}

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjExamPlace;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2025-06-29
*/
@Mapper
public interface WrjExamPlaceMapper extends BaseMapper<WrjExamPlace> {
}

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjModel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2025-06-29
*/
@Mapper
public interface WrjModelMapper extends BaseMapper<WrjModel> {
}

@ -4,6 +4,7 @@ import com.wrj.driver.server.dto.QuestionQueryDto;
import com.wrj.driver.server.entity.WrjQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wrj.driver.server.vo.QuestionVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -17,10 +18,13 @@ import java.util.Map;
* @author Automated procedures
* @since 2023-08-10
*/
@Mapper
public interface WrjQuestionMapper extends BaseMapper<WrjQuestion> {
/**
* 查询考题
*
* @param queryDto
* @return
*/
@ -28,6 +32,7 @@ public interface WrjQuestionMapper extends BaseMapper<WrjQuestion> {
/**
* 获取考题id
*
* @param queryDto
* @return
*/
@ -35,6 +40,7 @@ public interface WrjQuestionMapper extends BaseMapper<WrjQuestion> {
/**
* 随机查询考题
*
* @param queryDto
* @return
*/
@ -42,6 +48,7 @@ public interface WrjQuestionMapper extends BaseMapper<WrjQuestion> {
/**
* 随机查询考题Id
*
* @param queryDto
* @return
*/
@ -51,6 +58,7 @@ public interface WrjQuestionMapper extends BaseMapper<WrjQuestion> {
/**
* 获取各类里题目数量目前肯嫩南瓜用不上但暂时保留
*
* @param queryDto
* @return
*/
@ -58,8 +66,19 @@ public interface WrjQuestionMapper extends BaseMapper<WrjQuestion> {
/**
* 获取车型最大排序
*
* @param carTypeId
* @return
*/
Integer queryMaxSort();
/**
* 更新答题信息
*
* @param questionId
* @param answerNum 答题次数
* @param rightNum 正确次数
* @return
*/
int updateAnswerNumber(@Param("questionId") Long questionId, @Param("answerNum") int answerNum, @Param("rightNum") int rightNum);
}

@ -2,6 +2,8 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjQuestionPractice;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
@ -11,6 +13,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2025-06-29
*/
@Mapper
public interface WrjQuestionPracticeMapper extends BaseMapper<WrjQuestionPractice> {
int clearPracticeRecord(@Param("userId") Long userId, @Param("practiceType") String practiceType);
}

@ -4,6 +4,7 @@ import com.wrj.driver.server.dto.TestQueryDto;
import com.wrj.driver.server.vo.TestScoreVO;
import com.wrj.driver.server.entity.WrjQuestionTest;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@ -16,6 +17,8 @@ import java.util.List;
* @author Automated procedures
* @since 2023-08-10
*/
@Mapper
public interface WrjQuestionTestMapper extends BaseMapper<WrjQuestionTest> {
List<TestScoreVO> getTestScore(@Param("param") TestQueryDto queryDto);

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjSchool;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2025-06-29
*/
@Mapper
public interface WrjSchoolMapper extends BaseMapper<WrjSchool> {
}

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjSchoolModel;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2025-06-29
*/
@Mapper
public interface WrjSchoolModelMapper extends BaseMapper<WrjSchoolModel> {
}

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjSchoolService;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2025-06-29
*/
@Mapper
public interface WrjSchoolServiceMapper extends BaseMapper<WrjSchoolService> {
}

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjSchoolTag;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,6 +12,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2025-06-29
*/
@Mapper
public interface WrjSchoolTagMapper extends BaseMapper<WrjSchoolTag> {
}

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjSysConfigList;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
/**
* <p>
@ -11,6 +12,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2023-08-10
*/
@Mapper
public interface WrjSysConfigListMapper extends BaseMapper<WrjSysConfigList> {
}

@ -2,6 +2,7 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjSysConfig;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
@ -12,6 +13,8 @@ import org.apache.ibatis.annotations.Param;
* @author Automated procedures
* @since 2023-08-10
*/
@Mapper
public interface WrjSysConfigMapper extends BaseMapper<WrjSysConfig> {
void updateConfig(@Param("param") WrjSysConfig config);

@ -4,10 +4,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wrj.driver.server.dto.BaseQueryDto;
import com.wrj.driver.server.entity.WrjTypeChapter;
import com.wrj.driver.server.vo.WrjTypeChapterVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
@Mapper
public interface WrjTypeChapterMapper extends BaseMapper<WrjTypeChapter> {
List<WrjTypeChapterVo> queryWrjTypeChapter(@Param("param") BaseQueryDto queryDto1);
}

@ -2,6 +2,8 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjUserCollectQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
@ -11,6 +13,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2025-06-29
*/
@Mapper
public interface WrjUserCollectQuestionMapper extends BaseMapper<WrjUserCollectQuestion> {
WrjUserCollectQuestion selectByUserIdAndQuestionId(@Param("userId") Long userId, @Param("questionId") Long questionId);
int deleteByUserIdAndQuestionId(@Param("userId") Long userId, @Param("questionId") Long questionId);
}

@ -2,6 +2,8 @@ package com.wrj.driver.server.mapper;
import com.wrj.driver.server.entity.WrjUserErrorQuestion;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* <p>
@ -11,6 +13,11 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
* @author Automated procedures
* @since 2025-06-29
*/
@Mapper
public interface WrjUserErrorQuestionMapper extends BaseMapper<WrjUserErrorQuestion> {
WrjUserErrorQuestion selectByUserIdAndQuestionId(@Param("userId") Long userId, @Param("questionId") Long questionId);
int deleteByUserIdAndQuestionId(@Param("userId") Long userId, @Param("questionId") Long questionId);
}

@ -1,5 +1,6 @@
package com.wrj.driver.server.service;
import com.wrj.driver.server.dto.QuestionPracticeAddDto;
import com.wrj.driver.server.entity.WrjQuestionPractice;
import com.baomidou.mybatisplus.extension.service.IService;
@ -13,4 +14,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IWrjQuestionPracticeService extends IService<WrjQuestionPractice> {
Boolean insertQuestionPractice(QuestionPracticeAddDto addDto);
Boolean clear(Long userId, String practiceType);
}

@ -13,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IWrjUserCollectQuestionService extends IService<WrjUserCollectQuestion> {
Boolean updateUserCollectQuestion(Long questionId, Long userId);
}

@ -13,4 +13,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface IWrjUserErrorQuestionService extends IService<WrjUserErrorQuestion> {
Boolean remove(Long questionId, Long userId);
}

@ -1,10 +1,22 @@
package com.wrj.driver.server.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.wrj.driver.server.dto.QuestionPracticeAddDto;
import com.wrj.driver.server.entity.WrjQuestion;
import com.wrj.driver.server.entity.WrjQuestionPractice;
import com.wrj.driver.server.entity.WrjUserErrorQuestion;
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.mapper.WrjUserErrorQuestionMapper;
import com.wrj.driver.server.service.IWrjQuestionPracticeService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
/**
* <p>
@ -17,4 +29,57 @@ import org.springframework.stereotype.Service;
@Service
public class WrjQuestionPracticeServiceImpl extends ServiceImpl<WrjQuestionPracticeMapper, WrjQuestionPractice> implements IWrjQuestionPracticeService {
@Autowired
private WrjQuestionMapper questionMapper;
@Autowired
private WrjQuestionPracticeMapper practiceMapper;
@Autowired
private WrjUserErrorQuestionMapper errorQuestionMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean insertQuestionPractice(QuestionPracticeAddDto addDto) {
WrjQuestion question = questionMapper.selectById(addDto.getQuestionId());
if (question == null) {
throw new BusinessException("题目不存在");
}
WrjQuestionPractice questionPractice = new WrjQuestionPractice();
BeanUtil.copyProperties(addDto, questionPractice);
// 插入练习
questionPractice.setPracticeTime(LocalDateTime.now());
practiceMapper.insert(questionPractice);
// 判断答题是否正确
boolean isTrue = StrUtil.equals(addDto.getAnswer(), question.getTrueAnswer());
questionMapper.updateAnswerNumber(addDto.getQuestionId(),1, (isTrue ? 1 : 0));
if (!isTrue) {
// 判断是否在错题本里(答题错误会加入错题本,答题正确不会移出)
WrjUserErrorQuestion userErrorQuestion = errorQuestionMapper.selectByUserIdAndQuestionId(addDto.getUserId(), addDto.getQuestionId());
if (userErrorQuestion == null) {
userErrorQuestion = new WrjUserErrorQuestion()
.setQuestionId(addDto.getQuestionId())
.setUserId(addDto.getUserId())
.setCreateTime(LocalDateTime.now());
// 将错误的答题加入错题本中
errorQuestionMapper.insert(userErrorQuestion);
}
}
return Boolean.TRUE;
}
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean clear(Long userId, String practiceType) {
practiceMapper.clearPracticeRecord(userId, practiceType);
return Boolean.TRUE;
}
}

@ -1,10 +1,15 @@
package com.wrj.driver.server.service.impl;
import com.wrj.driver.server.entity.WrjUserCollectQuestion;
import com.wrj.driver.server.entity.WrjUserErrorQuestion;
import com.wrj.driver.server.mapper.WrjUserCollectQuestionMapper;
import com.wrj.driver.server.service.IWrjUserCollectQuestionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.time.LocalDateTime;
/**
* <p>
@ -17,4 +22,25 @@ import org.springframework.stereotype.Service;
@Service
public class WrjUserCollectQuestionServiceImpl extends ServiceImpl<WrjUserCollectQuestionMapper, WrjUserCollectQuestion> implements IWrjUserCollectQuestionService {
@Autowired
private WrjUserCollectQuestionMapper collectQuestionMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean updateUserCollectQuestion(Long questionId, Long userId) {
// 判断用户之前是不是收藏了,已经收藏了调用则是取消收藏
WrjUserCollectQuestion userCollectQuestion = collectQuestionMapper.selectByUserIdAndQuestionId(userId, questionId);
if (userCollectQuestion == null){
userCollectQuestion = new WrjUserCollectQuestion()
.setQuestionId(questionId)
.setUserId(userId)
.setCreateTime(LocalDateTime.now());
collectQuestionMapper.insert(userCollectQuestion);
}
collectQuestionMapper.deleteByUserIdAndQuestionId(userId,questionId);
return Boolean.TRUE;
}
}

@ -4,7 +4,9 @@ import com.wrj.driver.server.entity.WrjUserErrorQuestion;
import com.wrj.driver.server.mapper.WrjUserErrorQuestionMapper;
import com.wrj.driver.server.service.IWrjUserErrorQuestionService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
/**
* <p>
@ -17,4 +19,14 @@ import org.springframework.stereotype.Service;
@Service
public class WrjUserErrorQuestionServiceImpl extends ServiceImpl<WrjUserErrorQuestionMapper, WrjUserErrorQuestion> implements IWrjUserErrorQuestionService {
@Autowired
private WrjUserErrorQuestionMapper errorQuestionMapper;
@Override
@Transactional(rollbackFor = Exception.class)
public Boolean remove(Long questionId, Long userId) {
errorQuestionMapper.deleteByUserIdAndQuestionId(userId,questionId);
}
}

@ -54,19 +54,4 @@ public class SecurityUtil {
return userId;
}
/**
* 获取当前登录人用户的分销人员信息
* @return
*/
public static String getDistributionId() {
SecurityUser loginUser = SecurityUtil.getLoginUser();
if (null != loginUser) {
return loginUser.getDistributionId();
}
return null;
}
}

@ -122,6 +122,13 @@
where question_id = #{questionVo.questionId}
</update>
<update id="updateAnswerNumber">
update wrj_question
set answer_number = answer_number + #{answerNum},
right_number = right_number + #{rightNum}
where question_id = #{questionId}
</update>
<select id="querySpecialNum" resultType="java.util.Map">
select
count(IF(TYPE = '1', tq.type, NULL)) as judgeQuestionNum,

@ -2,4 +2,10 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wrj.driver.server.mapper.WrjQuestionPracticeMapper">
<update id="clearPracticeRecord">
update
wrj_question_practice
set is_clear = 1
where user_id = #{userId} and practice_type = #{practiceType}
</update>
</mapper>

@ -2,4 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wrj.driver.server.mapper.WrjUserCollectQuestionMapper">
<select id="selectByUserIdAndQuestionId"
resultType="com.wrj.driver.server.entity.WrjUserCollectQuestion">
select
*
from wrj_user_collect_question
where user_id = #{userId} and question_id = #{questionId}
</select>
<delete id="deleteByUserIdAndQuestionId">
delete from wrj_user_collect_question
where user_id = #{userId} and question_id = #{questionId}
</delete>
</mapper>

@ -2,4 +2,16 @@
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.wrj.driver.server.mapper.WrjUserErrorQuestionMapper">
<select id="selectByUserIdAndQuestionId" resultType="com.wrj.driver.server.entity.WrjUserErrorQuestion">
select
*
from wrj_user_error_question
where user_id = #{userId} and question_id = #{questionId}
</select>
<delete id="deleteByUserIdAndQuestionId">
delete from wrj_user_error_question
where user_id = #{userId} and question_id = #{questionId}
</delete>
</mapper>

Loading…
Cancel
Save