UserNoteQuestionService.java 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237
  1. package com.qxgmat.service;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.AbstractService;
  4. import com.nuliji.tools.PageResult;
  5. import com.nuliji.tools.Transform;
  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.QuestionType;
  10. import com.qxgmat.data.constants.enums.module.QuestionModule;
  11. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  12. import com.qxgmat.data.dao.UserNoteQuestionMapper;
  13. import com.qxgmat.data.dao.entity.Question;
  14. import com.qxgmat.data.dao.entity.QuestionNo;
  15. import com.qxgmat.data.dao.entity.UserCollectQuestion;
  16. import com.qxgmat.data.dao.entity.UserNoteQuestion;
  17. import com.qxgmat.data.relation.UserNoteQuestionRelationMapper;
  18. import com.qxgmat.data.relation.entity.UserNoteQuestionRelation;
  19. import com.qxgmat.service.inline.QuestionNoService;
  20. import com.qxgmat.service.inline.QuestionService;
  21. import org.slf4j.Logger;
  22. import org.slf4j.LoggerFactory;
  23. import org.springframework.stereotype.Service;
  24. import org.springframework.transaction.annotation.Transactional;
  25. import javax.annotation.Resource;
  26. import java.util.Collection;
  27. import java.util.Date;
  28. import java.util.List;
  29. @Service
  30. public class UserNoteQuestionService extends AbstractService {
  31. private static final Logger logger = LoggerFactory.getLogger(UserNoteQuestionService.class);
  32. @Resource
  33. private UserNoteQuestionMapper userNoteQuestionMapper;
  34. @Resource
  35. private UserNoteQuestionRelationMapper userNoteQuestionRelationMapper;
  36. /**
  37. * 获取用户笔记列表
  38. * @param page
  39. * @param size
  40. * @param userId
  41. * @param questionTypes
  42. * @param structIds
  43. * @param startTime
  44. * @param endTime
  45. * @param order
  46. * @param direction
  47. * @return
  48. */
  49. public Page<UserNoteQuestion> listExercise(int page, int size, Integer userId, String keyword, String[] questionTypes, Integer[] structIds, String startTime, String endTime, String order){
  50. Page<UserNoteQuestion> p = page(()->{
  51. userNoteQuestionRelationMapper.listExercise(userId, keyword, questionTypes, structIds, startTime, endTime, order);
  52. }, page, size);
  53. Collection ids = Transform.getIds(p, UserNoteQuestion.class, "id");
  54. // 获取详细数据
  55. List<UserNoteQuestion> list = select(ids);
  56. Transform.replace(p, list, UserNoteQuestion.class, "id");
  57. return p;
  58. }
  59. /**
  60. * 获取用户笔记列表
  61. * @param page
  62. * @param size
  63. * @param userId
  64. * @param questionTypes
  65. * @param structIds
  66. * @param startTime
  67. * @param endTime
  68. * @param order
  69. * @param direction
  70. * @return
  71. */
  72. public Page<UserNoteQuestion> listExamination(int page, int size, Integer userId, String keyword, String[] questionTypes, Integer[] structIds, Integer libraryId, String year, String startTime, String endTime, String order){
  73. Page<UserNoteQuestion> p = page(()->{
  74. userNoteQuestionRelationMapper.listExamination(userId, keyword, questionTypes, structIds, libraryId, year, startTime, endTime, order);
  75. }, page, size);
  76. Collection ids = Transform.getIds(p, UserNoteQuestion.class, "id");
  77. // 获取详细数据
  78. List<UserNoteQuestion> list = select(ids);
  79. Transform.replace(p, list, UserNoteQuestion.class, "id");
  80. return p;
  81. }
  82. /**
  83. * 查询用户笔记情况
  84. * @param userId
  85. * @param questionId
  86. * @return
  87. */
  88. public UserNoteQuestion getByUserAndQuestion(Integer userId, Integer questionId){
  89. Example example = new Example(UserNoteQuestion.class);
  90. example.and(
  91. example.createCriteria()
  92. .andEqualTo("userId", userId)
  93. .andEqualTo("questionId", questionId)
  94. );
  95. UserNoteQuestion in = one(userNoteQuestionMapper, example);
  96. return in;
  97. }
  98. /**
  99. * 查询用户笔记情况:批量
  100. * @param userId
  101. * @param ids
  102. * @return
  103. */
  104. public List<UserNoteQuestion> listByUserAndQuestions(Integer userId, Collection ids){
  105. Example example = new Example(UserNoteQuestion.class);
  106. example.and(
  107. example.createCriteria()
  108. .andEqualTo("userId", userId)
  109. .andEqualTo("questionId", ids)
  110. );
  111. return select(userNoteQuestionMapper, example);
  112. }
  113. /**
  114. * 更新用户笔记:没有则添加
  115. * @param note
  116. * @return
  117. */
  118. @Transactional
  119. public UserNoteQuestion update(UserNoteQuestion note){
  120. Example example = new Example(UserNoteQuestion.class);
  121. example.and(
  122. example.createCriteria()
  123. .andEqualTo("userId", note.getUserId())
  124. .andEqualTo("questionModule", note.getQuestionModule())
  125. );
  126. example.and(
  127. example.createCriteria()
  128. .orEqualTo("questionId", note.getQuestionId())
  129. .orEqualTo("questionNoId", note.getQuestionNoId())
  130. );
  131. UserNoteQuestion in = one(userNoteQuestionMapper, example);
  132. Date now = new Date();
  133. if(in == null){
  134. // 按实际更新更改更新时间
  135. if (!note.getQuestionContent().isEmpty()){
  136. note.setQuestionTime(now);
  137. }
  138. if (!note.getOfficialContent().isEmpty()){
  139. note.setOfficialTime(now);
  140. }
  141. if (!note.getQxContent().isEmpty()){
  142. note.setQxTime(now);
  143. }
  144. if (!note.getAssociationContent().isEmpty()){
  145. note.setAssociationTime(now);
  146. }
  147. if (!note.getQaContent().isEmpty()){
  148. note.setQaTime(now);
  149. }
  150. return add(note);
  151. }else{
  152. note.setId(in.getId());
  153. // 按实际更新更改更新时间
  154. if (!note.getQuestionContent().equals(in.getQuestionContent())){
  155. note.setQuestionTime(now);
  156. }
  157. if (!note.getOfficialContent().equals(in.getOfficialContent())){
  158. note.setOfficialTime(now);
  159. }
  160. if (!note.getQxContent().equals(in.getQxContent())){
  161. note.setQxTime(now);
  162. }
  163. if (!note.getAssociationContent().equals(in.getAssociationContent())){
  164. note.setAssociationTime(now);
  165. }
  166. if (!note.getQaContent().equals(in.getQaContent())){
  167. note.setQaTime(now);
  168. }
  169. return edit(note);
  170. }
  171. }
  172. public UserNoteQuestion add(UserNoteQuestion note){
  173. int result = insert(userNoteQuestionMapper, note);
  174. note = one(userNoteQuestionMapper, note.getId());
  175. if(note == null){
  176. throw new SystemException("笔记添加失败");
  177. }
  178. return note;
  179. }
  180. public UserNoteQuestion edit(UserNoteQuestion note){
  181. UserNoteQuestion in = one(userNoteQuestionMapper, note.getId());
  182. if(in == null){
  183. throw new ParameterException("笔记不存在");
  184. }
  185. int result = update(userNoteQuestionMapper, note);
  186. return note;
  187. }
  188. public boolean delete(Number id){
  189. UserNoteQuestion in = one(userNoteQuestionMapper, id);
  190. if(in == null){
  191. throw new ParameterException("笔记不存在");
  192. }
  193. int result = delete(userNoteQuestionMapper, id);
  194. return result > 0;
  195. }
  196. public UserNoteQuestion get(Number id){
  197. UserNoteQuestion in = one(userNoteQuestionMapper, id);
  198. if(in == null){
  199. throw new ParameterException("笔记不存在");
  200. }
  201. return in;
  202. }
  203. public Page<UserNoteQuestion> select(int page, int pageSize){
  204. return select(userNoteQuestionMapper, page, pageSize);
  205. }
  206. public Page<UserNoteQuestion> select(Integer[] ids){
  207. return page(()->select(userNoteQuestionMapper, ids), 1, ids.length);
  208. }
  209. public List<UserNoteQuestion> select(Collection ids){
  210. return select(userNoteQuestionMapper, ids);
  211. }
  212. }