UserCollectQuestionService.java 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172
  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.UserCollectQuestionMapper;
  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.relation.UserCollectQuestionRelationMapper;
  17. import com.qxgmat.data.relation.entity.UserCollectQuestionRelation;
  18. import com.qxgmat.service.inline.QuestionNoService;
  19. import com.qxgmat.service.inline.QuestionService;
  20. import org.slf4j.Logger;
  21. import org.slf4j.LoggerFactory;
  22. import org.springframework.stereotype.Service;
  23. import org.springframework.transaction.annotation.Transactional;
  24. import javax.annotation.Resource;
  25. import java.util.Collection;
  26. import java.util.List;
  27. @Service
  28. public class UserCollectQuestionService extends AbstractService {
  29. private static final Logger logger = LoggerFactory.getLogger(UserCollectQuestionService.class);
  30. @Resource
  31. private UserCollectQuestionMapper userCollectQuestionMapper;
  32. @Resource
  33. private UserCollectQuestionRelationMapper userCollectQuestionRelationMapper;
  34. /**
  35. * 获取用户题目收藏列表
  36. * @param page
  37. * @param size
  38. * @param userId
  39. * @param type
  40. * @return
  41. */
  42. public PageResult<UserCollectQuestionRelation> listQuestion(int page, int size, Integer userId, QuestionModule module, QuestionType type, String startTime, String endTime, String order, DirectionStatus direction){
  43. String moduleKey = module == null ? null : module.key;
  44. String typeKey = type == null ? null : type.key;
  45. Page<UserCollectQuestion> p = page(()->{
  46. userCollectQuestionRelationMapper.list(userId, moduleKey, typeKey, startTime, endTime, order, direction.key);
  47. }, page, size);
  48. Collection ids = Transform.getIds(p, UserCollectQuestion.class, "id");
  49. // 获取详细数据
  50. List<UserCollectQuestion> list = select(ids);
  51. List<UserCollectQuestionRelation> pr = Transform.convert(list, UserCollectQuestionRelation.class);
  52. return new PageResult<>(pr, p.getTotal());
  53. }
  54. /**
  55. * 查询用户收藏情况
  56. * @param userId
  57. * @param questionId
  58. * @return
  59. */
  60. public UserCollectQuestion getByUserAndQuestion(Integer userId, Integer questionId){
  61. Example example = new Example(UserCollectQuestion.class);
  62. example.and(
  63. example.createCriteria()
  64. .andEqualTo("userId", userId)
  65. .andEqualTo("questionId", questionId)
  66. );
  67. UserCollectQuestion in = one(userCollectQuestionMapper, example);
  68. return in;
  69. }
  70. /**
  71. * 收藏题目编号:包含题目id
  72. * @param entity
  73. * @return
  74. */
  75. @Transactional
  76. public UserCollectQuestion addQuestion(UserCollectQuestion entity){
  77. Example example = new Example(UserCollectQuestion.class);
  78. example.and(
  79. example.createCriteria()
  80. .andEqualTo("userId", entity.getUserId())
  81. .andEqualTo("questionModule", entity.getQuestionModule())
  82. .andEqualTo("questionNoId", entity.getQuestionNoId())
  83. );
  84. UserCollectQuestion in = one(userCollectQuestionMapper, example);
  85. if (in != null){
  86. return in;
  87. }
  88. int result = insert(userCollectQuestionMapper, entity);
  89. return entity;
  90. }
  91. /**
  92. * 取消收藏题目编号
  93. * @param userId
  94. * @param questionNoId
  95. * @return
  96. */
  97. @Transactional
  98. public boolean deleteQuestion(Integer userId, QuestionModule module, Integer questionNoId){
  99. Example example = new Example(UserCollectQuestion.class);
  100. example.and(
  101. example.createCriteria()
  102. .andEqualTo("userId", userId)
  103. .andEqualTo("questionModule", module.key)
  104. .andEqualTo("questionNoId", questionNoId)
  105. );
  106. UserCollectQuestion in = one(userCollectQuestionMapper, example);
  107. if (in == null){
  108. return true;
  109. }
  110. int result = delete(userCollectQuestionMapper, example);
  111. return result > 0;
  112. }
  113. public UserCollectQuestion add(UserCollectQuestion collect){
  114. int result = insert(userCollectQuestionMapper, collect);
  115. collect = one(userCollectQuestionMapper, collect.getId());
  116. if(collect == null){
  117. throw new SystemException("收藏添加失败");
  118. }
  119. return collect;
  120. }
  121. public UserCollectQuestion edit(UserCollectQuestion collect){
  122. UserCollectQuestion in = one(userCollectQuestionMapper, collect.getId());
  123. if(in == null){
  124. throw new ParameterException("收藏不存在");
  125. }
  126. int result = update(userCollectQuestionMapper, collect);
  127. return collect;
  128. }
  129. public boolean delete(Number id){
  130. UserCollectQuestion in = one(userCollectQuestionMapper, id);
  131. if(in == null){
  132. throw new ParameterException("收藏不存在");
  133. }
  134. int result = delete(userCollectQuestionMapper, id);
  135. return result > 0;
  136. }
  137. public UserCollectQuestion get(Number id){
  138. UserCollectQuestion in = one(userCollectQuestionMapper, id);
  139. if(in == null){
  140. throw new ParameterException("收藏不存在");
  141. }
  142. return in;
  143. }
  144. public Page<UserCollectQuestion> select(int page, int pageSize){
  145. return select(userCollectQuestionMapper, page, pageSize);
  146. }
  147. public List<UserCollectQuestion> select(Collection ids){
  148. return select(userCollectQuestionMapper, ids);
  149. }
  150. }