UserQuestionService.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. package com.qxgmat.service;
  2. import com.alibaba.fastjson.JSONObject;
  3. import com.github.pagehelper.Page;
  4. import com.nuliji.tools.AbstractService;
  5. import com.nuliji.tools.PageResult;
  6. import com.nuliji.tools.exception.ParameterException;
  7. import com.nuliji.tools.exception.SystemException;
  8. import com.nuliji.tools.mybatis.Example;
  9. import com.qxgmat.data.constants.enums.module.QuestionModule;
  10. import com.qxgmat.data.dao.UserQuestionMapper;
  11. import com.qxgmat.data.dao.entity.UserQuestion;
  12. import com.qxgmat.data.dao.entity.UserReport;
  13. import com.qxgmat.service.annotation.InitQuestion;
  14. import com.qxgmat.service.inline.QuestionNoService;
  15. import com.qxgmat.service.inline.SentenceQuestionService;
  16. import com.qxgmat.util.annotation.Callback;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19. import org.springframework.stereotype.Service;
  20. import org.springframework.transaction.annotation.Transactional;
  21. import javax.annotation.Resource;
  22. import java.util.Collection;
  23. import java.util.HashMap;
  24. import java.util.List;
  25. import java.util.Map;
  26. @Service
  27. public class UserQuestionService extends AbstractService {
  28. private static final Logger logger = LoggerFactory.getLogger(UserQuestionService.class);
  29. @Resource
  30. private UserQuestionMapper userQuestionMapper;
  31. /**
  32. * 用户错题记录:相同题目的最后一次做题记录及其编号
  33. * @param page
  34. * @param size
  35. * @param userId
  36. * @return
  37. */
  38. public PageResult<UserQuestion> listError(int page, int size, Integer userId){
  39. return new PageResult<>(null, 0);
  40. }
  41. /**
  42. * 获取当前报告最后一题
  43. * @param userId
  44. * @param userReportId
  45. * @return
  46. */
  47. public UserQuestion getLastByReport(Integer userId, Integer userReportId){
  48. Example example = new Example(UserQuestion.class);
  49. example.and(
  50. example.createCriteria()
  51. .andEqualTo("userId", userId)
  52. .andEqualTo("paper_id", userReportId)
  53. );
  54. example.orderBy("id").desc();
  55. return one(userQuestionMapper, example);
  56. }
  57. /**
  58. * 根据用户report创建下一题
  59. * @param report
  60. * @param lastQuestion
  61. * @param IInitQuestion
  62. * @return
  63. */
  64. public UserQuestion addByReport(UserReport report, UserQuestion lastQuestion, InitQuestion IInitQuestion){
  65. UserQuestion question = UserQuestion.builder()
  66. .reportId(report.getId())
  67. .userId(report.getUserId())
  68. // 添加题目序号
  69. .no(lastQuestion != null ? lastQuestion.getNo() + 1: 1)
  70. .build();
  71. // 回调,根据模块更新设置
  72. boolean result = IInitQuestion.callback(question, report, lastQuestion);
  73. if (!result) {
  74. // 做题结束
  75. return null;
  76. }
  77. return add(question);
  78. }
  79. /**
  80. * 获取报告的所有做题记录
  81. * @param userId
  82. * @param userReportId
  83. * @return
  84. */
  85. public List<UserQuestion> listByReport(Integer userId, Integer userReportId){
  86. Example example = new Example(UserQuestion.class);
  87. example.and(
  88. example.createCriteria()
  89. .andEqualTo("userId", userId)
  90. .andEqualTo("paper_id", userReportId)
  91. );
  92. example.orderBy("id").asc();
  93. return select(userQuestionMapper, example);
  94. }
  95. public UserQuestion add(UserQuestion question){
  96. int result = insert(userQuestionMapper, question);
  97. question = one(userQuestionMapper, question.getId());
  98. if(question == null){
  99. throw new SystemException("用户题目添加失败");
  100. }
  101. return question;
  102. }
  103. public UserQuestion edit(UserQuestion question){
  104. UserQuestion in = one(userQuestionMapper, question.getId());
  105. if(in == null){
  106. throw new ParameterException("用户题目不存在");
  107. }
  108. int result = update(userQuestionMapper, question);
  109. return question;
  110. }
  111. public boolean delete(Number id){
  112. UserQuestion in = one(userQuestionMapper, id);
  113. if(in == null){
  114. throw new ParameterException("用户题目不存在");
  115. }
  116. int result = delete(userQuestionMapper, id);
  117. return result > 0;
  118. }
  119. public UserQuestion get(Number id){
  120. UserQuestion in = one(userQuestionMapper, id);
  121. if(in == null){
  122. throw new ParameterException("用户题目不存在");
  123. }
  124. return in;
  125. }
  126. public Page<UserQuestion> select(int page, int pageSize){
  127. return select(userQuestionMapper, page, pageSize);
  128. }
  129. public List<UserQuestion> select(Collection ids){
  130. return select(userQuestionMapper, ids);
  131. }
  132. }