PreviewAssignService.java 8.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  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.status.DirectionStatus;
  9. import com.qxgmat.data.constants.enums.status.PreviewStatus;
  10. import com.qxgmat.data.dao.PreviewAssignMapper;
  11. import com.qxgmat.data.dao.PreviewPaperMapper;
  12. import com.qxgmat.data.dao.entity.PreviewAssign;
  13. import com.qxgmat.data.dao.entity.PreviewPaper;
  14. import com.qxgmat.data.relation.PreviewAssignRelationMapper;
  15. import org.slf4j.Logger;
  16. import org.slf4j.LoggerFactory;
  17. import org.springframework.stereotype.Service;
  18. import javax.annotation.Resource;
  19. import java.util.ArrayList;
  20. import java.util.Collection;
  21. import java.util.Date;
  22. import java.util.List;
  23. @Service
  24. public class PreviewAssignService extends AbstractService {
  25. private static final Logger logger = LoggerFactory.getLogger(PreviewAssignService.class);
  26. @Resource
  27. private PreviewAssignMapper previewAssignMapper;
  28. @Resource
  29. private PreviewAssignRelationMapper previewAssignRelationMapper;
  30. public Page<PreviewAssign> listAdmin(int page, int size, Integer paperId, String order, DirectionStatus direction){
  31. Example example = new Example(PreviewAssign.class);
  32. if(paperId != null){
  33. example.and(
  34. example.createCriteria()
  35. .andEqualTo("paperId", paperId)
  36. );
  37. }
  38. if(order == null || order.isEmpty()) order = "id";
  39. switch(direction){
  40. case ASC:
  41. example.orderBy(order).asc();
  42. break;
  43. case DESC:
  44. default:
  45. example.orderBy(order).desc();
  46. }
  47. return select(previewAssignMapper, example, page, size);
  48. }
  49. public PreviewAssign getByCourseNo(Integer courseId, Integer no){
  50. Example example = new Example(PreviewAssign.class);
  51. example.and(
  52. example.createCriteria()
  53. .andEqualTo("courseId", courseId)
  54. .andEqualTo("courseNo", no)
  55. );
  56. return one(previewAssignMapper, example);
  57. }
  58. public PreviewAssign addCourseNo(Integer paperId, Integer courseId, Integer no){
  59. PreviewAssign assign = getByCourseNo(courseId, no);
  60. if (assign != null){
  61. throw new ParameterException("该课时已创建");
  62. }
  63. return add(PreviewAssign.builder()
  64. .courseId(courseId)
  65. .courseNo(no)
  66. .paperId(paperId)
  67. .build());
  68. }
  69. public boolean removeCourseNo(Integer courseId, Integer no){
  70. Example example = new Example(PreviewAssign.class);
  71. example.and(
  72. example.createCriteria()
  73. .andEqualTo("courseId", courseId)
  74. .andEqualTo("courseNo", no)
  75. );
  76. return delete(previewAssignMapper, example) > 0;
  77. }
  78. /**
  79. * 用于查询视频课程所有作业
  80. * @param courseId
  81. * @return
  82. */
  83. public List<PreviewAssign> listByCourse(int page, int size, Integer courseId, Integer userId, Integer times){
  84. Page<PreviewAssign> p = page(()->previewAssignRelationMapper.listByCourse(courseId, userId, times), page, size);
  85. Collection ids = Transform.getIds(p, PreviewAssign.class, "id");
  86. // 获取详细数据
  87. List<PreviewAssign> list = select(ids);
  88. Transform.replace(p, list, PreviewAssign.class, "id");
  89. return p;
  90. }
  91. /**
  92. * 用于查询视频课程指定课时作业
  93. * @param courseId
  94. * @return
  95. */
  96. public List<PreviewAssign> listByCourseNos(Integer courseId, Collection ids){
  97. if(ids == null || ids.size() == 0) return new ArrayList<>();
  98. Example example = new Example(PreviewAssign.class);
  99. example.and(
  100. example.createCriteria()
  101. .andEqualTo("courseId", courseId)
  102. .andIn("courseNo", ids)
  103. );
  104. return select(previewAssignMapper, example);
  105. }
  106. /**
  107. * 用户查询1v1相对的预约作业
  108. * @param appointmentIds
  109. * @return
  110. */
  111. public List<PreviewAssign> listWithAppointment(Collection appointmentIds){
  112. if(appointmentIds == null || appointmentIds.size() == 0) return new ArrayList<>();
  113. Example example = new Example(PreviewAssign.class);
  114. example.and(
  115. example.createCriteria()
  116. .andIn("courseAppointment", appointmentIds)
  117. );
  118. return select(previewAssignMapper, example);
  119. }
  120. /**
  121. * 用户查询1v1相对的预约作业
  122. * @param appointmentIds
  123. * @return
  124. */
  125. public List<PreviewAssign> listByAppointment(int page, int size, Integer courseId, Collection appointmentIds, Integer userId, String endTime, Integer times){
  126. if(appointmentIds==null || appointmentIds.size() == 0) return new ArrayList<>();
  127. Page<PreviewAssign> p = page(()->previewAssignRelationMapper.listByAppointment(courseId, appointmentIds, userId, endTime, times), page, size);
  128. Collection ids = Transform.getIds(p, PreviewAssign.class, "id");
  129. // 获取详细数据
  130. List<PreviewAssign> list = select(ids);
  131. Transform.replace(p, list, PreviewAssign.class, "id");
  132. return p;
  133. }
  134. public boolean removeCourseAppointment(Integer courseId, Integer id){
  135. Example example = new Example(PreviewAssign.class);
  136. example.and(
  137. example.createCriteria()
  138. .andEqualTo("courseId", courseId)
  139. .andEqualTo("courseAppointment", id)
  140. );
  141. return delete(previewAssignMapper, example) > 0;
  142. }
  143. /**
  144. * 用户查询小班课时间段内的预习作业
  145. * @param timeId
  146. * @return
  147. */
  148. public List<PreviewAssign> listByTime(int page, int size, Integer courseId, Integer timeId, Integer userId, String endTime, Integer times){
  149. Page<PreviewAssign> p = page(()->previewAssignRelationMapper.listByTime(courseId, timeId, userId, endTime, times), page, size);
  150. Collection ids = Transform.getIds(p, PreviewAssign.class, "id");
  151. // 获取详细数据
  152. List<PreviewAssign> list = select(ids);
  153. Transform.replace(p, list, PreviewAssign.class, "id");
  154. return p;
  155. }
  156. public boolean removeCourseTime(Integer courseId, Integer timeId){
  157. Example example = new Example(PreviewAssign.class);
  158. example.and(
  159. example.createCriteria()
  160. .andEqualTo("courseId", courseId)
  161. .andEqualTo("courseTime", timeId)
  162. );
  163. return delete(previewAssignMapper, example) > 0;
  164. }
  165. /**
  166. * 查询1v1即将过期的作业
  167. * @param startTime
  168. * @param endTime
  169. * @return
  170. */
  171. public List<PreviewAssign> listAppointmentExpire(String startTime, String endTime){
  172. Example example = new Example(PreviewAssign.class);
  173. example.and(
  174. example.createCriteria()
  175. .andGreaterThan("courseAppointment", 0)
  176. .andGreaterThanOrEqualTo("endTime", startTime)
  177. .andLessThan("endTime", endTime)
  178. );
  179. return select(previewAssignMapper, example);
  180. }
  181. public PreviewAssign add(PreviewAssign assign){
  182. int result = insert(previewAssignMapper, assign);
  183. assign = one(previewAssignMapper, assign.getId());
  184. if(assign == null){
  185. throw new SystemException("预习作业添加失败");
  186. }
  187. return assign;
  188. }
  189. public PreviewAssign edit(PreviewAssign assign){
  190. PreviewAssign in = one(previewAssignMapper, assign.getId());
  191. if(in == null){
  192. throw new ParameterException("预习作业不存在");
  193. }
  194. int result = update(previewAssignMapper, assign);
  195. return assign;
  196. }
  197. public boolean delete(Number id){
  198. PreviewAssign in = one(previewAssignMapper, id);
  199. if(in == null){
  200. throw new ParameterException("预习作业不存在");
  201. }
  202. int result = delete(previewAssignMapper, id);
  203. return result > 0;
  204. }
  205. public PreviewAssign get(Number id){
  206. PreviewAssign in = one(previewAssignMapper, id);
  207. if(in == null){
  208. throw new ParameterException("预习作业不存在");
  209. }
  210. return in;
  211. }
  212. public Page<PreviewAssign> select(int page, int pageSize){
  213. return select(previewAssignMapper, page, pageSize);
  214. }
  215. public Page<PreviewAssign> select(Integer[] ids){
  216. return page(()->select(previewAssignMapper, ids), 1, ids.length);
  217. }
  218. public List<PreviewAssign> select(Collection ids){
  219. return select(previewAssignMapper, ids);
  220. }
  221. }