CourseExperienceService.java 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.qxgmat.service.inline;
  2. import com.github.pagehelper.Page;
  3. import com.nuliji.tools.AbstractService;
  4. import com.nuliji.tools.Transform;
  5. import com.nuliji.tools.exception.ParameterException;
  6. import com.nuliji.tools.exception.SystemException;
  7. import com.nuliji.tools.mybatis.Example;
  8. import com.qxgmat.data.constants.enums.ExperienceDayRange;
  9. import com.qxgmat.data.constants.enums.ExperienceScoreRange;
  10. import com.qxgmat.data.constants.enums.status.DirectionStatus;
  11. import com.qxgmat.data.constants.enums.user.DataType;
  12. import com.qxgmat.data.dao.CourseDataMapper;
  13. import com.qxgmat.data.dao.CourseExperienceMapper;
  14. import com.qxgmat.data.dao.entity.CourseData;
  15. import com.qxgmat.data.dao.entity.CourseExperience;
  16. import com.qxgmat.data.relation.CourseExperienceRelationMapper;
  17. import org.slf4j.Logger;
  18. import org.slf4j.LoggerFactory;
  19. import org.springframework.stereotype.Service;
  20. import javax.annotation.Resource;
  21. import java.util.Collection;
  22. import java.util.List;
  23. @Service
  24. public class CourseExperienceService extends AbstractService {
  25. private static final Logger logger = LoggerFactory.getLogger(CourseExperienceService.class);
  26. @Resource
  27. private CourseExperienceMapper courseExperienceMapper;
  28. @Resource
  29. private CourseExperienceRelationMapper courseExperienceRelationMapper;
  30. public Page<CourseExperience> listWithUser(int page, int size, Integer userId, String startTime, String endTime, String order, DirectionStatus direction){
  31. if(order == null || order.isEmpty()) order = "id";
  32. if (direction == null){
  33. direction = DirectionStatus.DESC;
  34. }
  35. String finalOrder = order;
  36. DirectionStatus finalDirection = direction;
  37. Page<CourseExperience> p = page(
  38. ()-> courseExperienceRelationMapper.listWithUser(userId, startTime, endTime, finalOrder, finalDirection.key)
  39. , page, size);
  40. Collection ids = Transform.getIds(p, CourseExperience.class, "id");
  41. Transform.replace(p, select(ids), CourseExperience.class, "id");
  42. return p;
  43. }
  44. public Page<CourseExperience> listAdmin(int page, int size, Integer userId, String keyword, String prepareStatus, ExperienceScoreRange experienceScore, ExperienceDayRange experienceDay, String experiencePercent, String order, DirectionStatus direction){
  45. Example example = new Example(CourseExperience.class);
  46. if(userId != null){
  47. example.and(
  48. example.createCriteria()
  49. .andEqualTo("userId", userId)
  50. );
  51. }
  52. if(keyword != null){
  53. example.and(
  54. example.createCriteria()
  55. .orLike("title", "%"+keyword+"%")
  56. .orLike("content", "%"+keyword+"%")
  57. );
  58. }
  59. if (prepareStatus != null){
  60. example.and(
  61. example.createCriteria()
  62. .andEqualTo("prepareStatus", prepareStatus)
  63. );
  64. }
  65. if (experienceScore != null){
  66. example.and(
  67. example.createCriteria()
  68. .andGreaterThanOrEqualTo("experienceScore", experienceScore.min)
  69. .andLessThan("experienceScore", experienceScore.max)
  70. );
  71. }
  72. if (experienceDay != null){
  73. example.and(
  74. example.createCriteria()
  75. .andGreaterThanOrEqualTo("experienceDay", experienceDay.min)
  76. .andLessThan("experienceDay", experienceDay.max)
  77. );
  78. }
  79. if (experiencePercent != null){
  80. example.and(
  81. example.createCriteria()
  82. .andEqualTo("experiencePercent", experiencePercent)
  83. );
  84. }
  85. if(order == null || order.isEmpty()) order = "id";
  86. switch(direction){
  87. case ASC:
  88. example.orderBy(order).asc();
  89. break;
  90. case DESC:
  91. default:
  92. example.orderBy(order).desc();
  93. }
  94. return select(courseExperienceMapper, example, page, size);
  95. }
  96. public Page<CourseExperience> list(int page, int size,String prepareStatus, ExperienceScoreRange experienceScore, ExperienceDayRange experienceDay, String experiencePercent, String order, DirectionStatus direction){
  97. Example example = new Example(CourseExperience.class);
  98. if(prepareStatus != null){
  99. example.and(
  100. example.createCriteria()
  101. .andEqualTo("prepareStatus", prepareStatus)
  102. );
  103. }
  104. if(experienceDay != null){
  105. example.and(
  106. example.createCriteria()
  107. .andGreaterThanOrEqualTo("experienceDay", experienceDay.min)
  108. .andLessThan("experienceDay", experienceDay.max)
  109. );
  110. }
  111. if(experienceScore != null){
  112. example.and(
  113. example.createCriteria()
  114. .andGreaterThanOrEqualTo("experienceScore", experienceScore.min)
  115. .andLessThan("experienceScore", experienceScore.max)
  116. );
  117. }
  118. if(experiencePercent != null){
  119. example.and(
  120. example.createCriteria()
  121. .andEqualTo("experiencePercent", experiencePercent)
  122. );
  123. }
  124. if(order == null || order.isEmpty()) order = "id";
  125. switch(direction){
  126. case ASC:
  127. example.orderBy(order).asc();
  128. break;
  129. case DESC:
  130. default:
  131. example.orderBy(order).desc();
  132. }
  133. return select(courseExperienceMapper, example, page, size);
  134. }
  135. /**
  136. * 累加收藏记录,访问记录
  137. * @param view
  138. * @param collect
  139. */
  140. public void accumulation(Integer experienceId, int view, int collect){
  141. courseExperienceRelationMapper.accumulation(experienceId, view, collect);
  142. }
  143. public CourseExperience add(CourseExperience courseData){
  144. int result = insert(courseExperienceMapper, courseData);
  145. courseData = one(courseExperienceMapper, courseData.getId());
  146. if(courseData == null){
  147. throw new SystemException("心经添加失败");
  148. }
  149. return courseData;
  150. }
  151. public CourseExperience edit(CourseExperience courseData){
  152. CourseExperience in = one(courseExperienceMapper, courseData.getId());
  153. if(in == null){
  154. throw new ParameterException("心经不存在");
  155. }
  156. int result = update(courseExperienceMapper, courseData);
  157. return courseData;
  158. }
  159. public boolean delete(Number id){
  160. CourseExperience in = one(courseExperienceMapper, id);
  161. if(in == null){
  162. throw new ParameterException("心经不存在");
  163. }
  164. int result = delete(courseExperienceMapper, id);
  165. return result > 0;
  166. }
  167. public CourseExperience get(Number id){
  168. CourseExperience in = one(courseExperienceMapper, id);
  169. if(in == null){
  170. throw new ParameterException("心经不存在");
  171. }
  172. return in;
  173. }
  174. public Page<CourseExperience> select(int page, int pageSize){
  175. return select(courseExperienceMapper, page, pageSize);
  176. }
  177. public Page<CourseExperience> select(Integer[] ids){
  178. return page(()->select(courseExperienceMapper, ids), 1, ids.length);
  179. }
  180. public List<CourseExperience> select(Collection ids){
  181. return select(courseExperienceMapper, ids);
  182. }
  183. }