CourseController.java 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. package com.qxgmat.controller.api;
  2. import com.nuliji.tools.*;
  3. import com.qxgmat.data.constants.enums.module.ProductType;
  4. import com.qxgmat.data.dao.entity.*;
  5. import com.qxgmat.data.relation.entity.UserPreviewPaperRelation;
  6. import com.qxgmat.dto.extend.UserPreviewPaperExtendDto;
  7. import com.qxgmat.dto.response.*;
  8. import com.qxgmat.help.ShiroHelp;
  9. import com.qxgmat.service.extend.PreviewService;
  10. import com.qxgmat.service.inline.*;
  11. import io.swagger.annotations.Api;
  12. import io.swagger.annotations.ApiOperation;
  13. import org.springframework.beans.factory.annotation.Autowired;
  14. import org.springframework.web.bind.annotation.*;
  15. import java.util.Collection;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. @RestController
  20. @RequestMapping("/api/course")
  21. @Api(tags = "课程", description = "课程接口")
  22. public class CourseController {
  23. @Autowired
  24. private ShiroHelp shiroHelp;
  25. @Autowired
  26. private PreviewService previewService;
  27. @Autowired
  28. private PreviewPaperService previewPaperService;
  29. @Autowired
  30. private QuestionNoService questionNoService;
  31. @Autowired
  32. private QuestionService questionService;
  33. @Autowired
  34. private UserCourseService userCourseService;
  35. @Autowired
  36. private UserOrderRecordService userOrderRecordService;
  37. @RequestMapping(value = "/progress", method = RequestMethod.GET)
  38. @ApiOperation(value = "获取课程进度", notes = "获取所有课程及状态进度", httpMethod = "GET")
  39. public Response<List<UserCourseDetailDto>> progress() {
  40. User user = (User) shiroHelp.getLoginUser();
  41. List<UserCourse> userCourseList = userCourseService.getByUser(user.getId());
  42. List<UserCourseDetailDto> dtos = Transform.convert(userCourseList, UserCourseDetailDto.class);
  43. // 获取每个科目的最后2次作业
  44. Map<Object, Collection<UserPreviewPaperRelation>> previewMap = previewService.groupByCategory(user.getId(), 3);
  45. Transform.combine(dtos, previewMap, UserCourseDetailDto.class, "courseId", "previews", UserPreviewPaperExtendDto.class);
  46. // 获取课程状态:已购买未开通
  47. List<UserOrderRecord> records = userOrderRecordService.listUnUse(user.getId(), ProductType.COURSE);
  48. Collection ids = Transform.getIds(userCourseList, UserCourse.class, "courseId");
  49. for(UserOrderRecord record : records){
  50. Integer courseId = record.getProductId();
  51. if (!ids.contains(courseId)){
  52. UserCourseDetailDto dto = new UserCourseDetailDto();
  53. dto.setCourseId(courseId);
  54. dto.setPayed(true);
  55. dtos.add(dto);
  56. }
  57. }
  58. // todo 区分完成状态
  59. return ResponseHelp.success(dtos);
  60. }
  61. @RequestMapping(value = "/preview/list", method = RequestMethod.GET)
  62. @ApiOperation(value = "获取预习作业列表", notes = "获取预习作业列表", httpMethod = "GET")
  63. public Response<PageMessage<UserPreviewPaperExtendDto>> listPreview(
  64. @RequestParam(required = false, defaultValue = "1") int page,
  65. @RequestParam(required = false, defaultValue = "100") int size,
  66. @RequestParam(required = false) Number category,
  67. @RequestParam(required = false) String endTime,
  68. @RequestParam(required = false) Boolean finish
  69. ) {
  70. User user = (User) shiroHelp.getLoginUser();
  71. PageResult<UserPreviewPaperRelation> p = previewService.list(page, size, category, user.getId(), endTime, finish);
  72. List<UserPreviewPaperExtendDto> pr = Transform.convert(p, UserPreviewPaperExtendDto.class);
  73. // 获取试卷统计信息
  74. Map map = Transform.getMap(p, UserPreviewPaperRelation.class, "id", "paper");
  75. Map<Integer, Integer[]> questionNoIdsMap = new HashMap<>();
  76. for(Object value : map.keySet()){
  77. Integer key = (Integer) value;
  78. PreviewPaper preview = (PreviewPaper) map.get(key);
  79. questionNoIdsMap.put(key, preview.getQuestionNoIds());
  80. }
  81. Map statMap = questionNoService.statPaperMap(questionNoIdsMap);
  82. Transform.combine(pr, statMap, UserPreviewPaperExtendDto.class, "id", "stat");
  83. return ResponseHelp.success(pr, page, size, p.getTotal());
  84. }
  85. @RequestMapping(value = "/preview/paper", method = RequestMethod.GET)
  86. @ApiOperation(value = "获取预习作业", notes = "获取预习作业", httpMethod = "GET")
  87. public Response<PaperBaseDto> detailPreview(
  88. @RequestParam(required = true, name="id") Integer paperId
  89. ) {
  90. User user = (User) shiroHelp.getLoginUser();
  91. PreviewPaper preview = previewPaperService.get(paperId);
  92. PaperBaseDto paperDto = Transform.convert(preview, PaperBaseDto.class);
  93. return ResponseHelp.success(paperDto);
  94. }
  95. }