SlideController.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. package nju.seec.helper.controller;
  2. import nju.seec.helper.aspect.auth.Auth;
  3. import nju.seec.helper.controller.response.PageResourceResponse;
  4. import nju.seec.helper.controller.response.ResourceResponse;
  5. import nju.seec.helper.dto.LoginUser;
  6. import nju.seec.helper.dto.SlideDTO;
  7. import nju.seec.helper.dto.modify.ModifySlideDTO;
  8. import nju.seec.helper.service.SlideService;
  9. import nju.seec.helper.util.enums.UserType;
  10. import nju.seec.helper.vo.SlideVO;
  11. import org.springframework.data.domain.Pageable;
  12. import org.springframework.data.web.PageableDefault;
  13. import org.springframework.web.bind.annotation.*;
  14. import javax.validation.Valid;
  15. import java.util.List;
  16. /**
  17. * 幻灯片
  18. *
  19. * @author cst
  20. */
  21. @RestController
  22. @RequestMapping("/api/slide")
  23. public class SlideController {
  24. private final SlideService slideService;
  25. public SlideController(SlideService slideService) {
  26. this.slideService = slideService;
  27. }
  28. /**
  29. * 教师创建幻灯片
  30. */
  31. @Auth(roles = UserType.TEACHER, message = "创建幻灯片")
  32. @PostMapping
  33. public ResourceResponse<SlideVO> createSlide(LoginUser user,
  34. @Valid SlideDTO slideDTO) {
  35. SlideVO slideVO = slideService.createSlide(user, slideDTO);
  36. return ResourceResponse.of(slideVO);
  37. }
  38. /**
  39. * 教师修改幻灯片
  40. */
  41. @Auth(roles = UserType.TEACHER, message = "修改幻灯片")
  42. @PutMapping
  43. public ResourceResponse<SlideVO> modifySlide(LoginUser user,
  44. @Valid @RequestBody ModifySlideDTO modifySlideDTO) {
  45. SlideVO slideVO = slideService.modifySlide(user, modifySlideDTO);
  46. return ResourceResponse.of(slideVO);
  47. }
  48. /**
  49. * 教师获取幻灯片
  50. */
  51. @Auth(roles = UserType.TEACHER, message = "获取幻灯片列表")
  52. @GetMapping("/teacher")
  53. public PageResourceResponse<SlideVO> teacherGetSlides(LoginUser user,
  54. @RequestParam(required = false, defaultValue = "") String key,
  55. @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
  56. List<SlideVO> slideVOList = slideService.teacherGetSlides(user, key, pageable);
  57. return PageResourceResponse.of(slideVOList, pageable.getPageNumber(), pageable.getPageSize());
  58. }
  59. /**
  60. * 教师基于课程获取幻灯片
  61. */
  62. @Auth(roles = UserType.TEACHER, message = "获取幻灯片列表")
  63. @GetMapping("/teacher/course/{courseId}")
  64. public PageResourceResponse<SlideVO> teacherGetSlidesByCourse(LoginUser user,
  65. @PathVariable Integer courseId,
  66. @RequestParam(required = false, defaultValue = "") String key,
  67. @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
  68. List<SlideVO> slideVOList = slideService.teacherGetSlidesByCourse(user, courseId, key, pageable);
  69. return PageResourceResponse.of(slideVOList, pageable.getPageNumber(), pageable.getPageSize());
  70. }
  71. /**
  72. * 学生基于课程获取幻灯片
  73. */
  74. @Auth(roles = UserType.STUDENT, message = "获取幻灯片列表")
  75. @GetMapping("/student/course/{courseId}")
  76. public PageResourceResponse<SlideVO> studentGetSlidesByCourse(LoginUser user,
  77. @PathVariable Integer courseId,
  78. @RequestParam(required = false, defaultValue = "") String key,
  79. @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
  80. List<SlideVO> slideVOList = slideService.studentGetSlidesByCourse(user, courseId, key, pageable);
  81. return PageResourceResponse.of(slideVOList, pageable.getPageNumber(), pageable.getPageSize());
  82. }
  83. /**
  84. * 获取幻灯片链接
  85. */
  86. @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取幻灯片链接")
  87. @GetMapping("/{slideId}/url")
  88. public ResourceResponse<String> getSlideUrl(LoginUser user,
  89. @PathVariable Integer slideId) {
  90. String slideUrl = slideService.getSlideUrl(user, slideId);
  91. return ResourceResponse.of(slideUrl);
  92. }
  93. }