SlideController.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package nju.seec.helper.controller;
  2. import nju.seec.helper.aspect.auth.Auth;
  3. import nju.seec.helper.controller.response.PageResponse;
  4. import nju.seec.helper.dto.*;
  5. import nju.seec.helper.service.SlideService;
  6. import nju.seec.helper.util.enums.UserType;
  7. import nju.seec.helper.vo.SlideVO;
  8. import org.springframework.data.domain.Pageable;
  9. import org.springframework.data.web.PageableDefault;
  10. import org.springframework.http.ResponseEntity;
  11. import org.springframework.validation.annotation.Validated;
  12. import org.springframework.web.bind.annotation.*;
  13. import javax.validation.Valid;
  14. /**
  15. * 课件
  16. *
  17. * @author cst
  18. */
  19. @RestController
  20. @RequestMapping("/api/slide")
  21. public class SlideController {
  22. private final SlideService slideService;
  23. public SlideController(SlideService slideService) {
  24. this.slideService = slideService;
  25. }
  26. /**
  27. * 教师创建课件
  28. */
  29. @Auth(roles = UserType.TEACHER, message = "创建课件")
  30. @PostMapping
  31. public ResponseEntity<SlideVO> createSlide(LoginUser user,
  32. @Valid SlideDTO slideDTO) {
  33. SlideVO slideVO = slideService.createSlide(user, slideDTO);
  34. return ResponseEntity.ok(slideVO);
  35. }
  36. /**
  37. * 教师修改课件
  38. */
  39. @Auth(roles = UserType.TEACHER, message = "修改课件")
  40. @PutMapping
  41. public SlideVO modifySlide(LoginUser user,
  42. @Validated @RequestBody ModifySlideDTO modifySlideDTO) {
  43. return slideService.modifySlide(user, modifySlideDTO);
  44. }
  45. /**
  46. * 教师修改课件状态
  47. */
  48. @Auth(roles = UserType.TEACHER, message = "修改课件状态")
  49. @PutMapping("/state")
  50. public void modifySlideState(LoginUser user,
  51. @Validated @RequestBody SlideStateDTO slideStateDTO) {
  52. slideService.modifySlideState(user, slideStateDTO);
  53. }
  54. /**
  55. * 教师修改课件状态
  56. */
  57. @Auth(roles = UserType.TEACHER, message = "修改课件状态")
  58. @PutMapping("/file")
  59. public void modifySlideFile(LoginUser user,
  60. @Validated SlideFileDTO slideFileDTO) {
  61. slideService.modifySlideFile(user, slideFileDTO);
  62. }
  63. /**
  64. * 教师删除课件
  65. */
  66. @Auth(roles = UserType.TEACHER, message = "删除课件")
  67. @DeleteMapping("/{slideId}")
  68. public void removeSlide(LoginUser user,
  69. @PathVariable Integer slideId) {
  70. slideService.removeSlide(user, slideId);
  71. }
  72. /**
  73. * 教师获取课件
  74. */
  75. @Auth(roles = UserType.TEACHER, message = "获取课件")
  76. @GetMapping("/teacher")
  77. public PageResponse<SlideVO> teacherGetSlides(LoginUser user,
  78. @RequestParam(required = false, defaultValue = "") String key,
  79. @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
  80. return PageResponse.of(slideService.teacherGetSlides(user, key, pageable));
  81. }
  82. /**
  83. * 教师基于课程获取课件
  84. */
  85. @Auth(roles = UserType.TEACHER, message = "获取课件")
  86. @GetMapping("/teacher/course/{courseId}")
  87. public PageResponse<SlideVO> teacherGetSlidesByCourse(LoginUser user,
  88. @PathVariable Integer courseId,
  89. @RequestParam(required = false, defaultValue = "") String key,
  90. @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
  91. return PageResponse.of(slideService.teacherGetSlidesByCourse(user, courseId, key, pageable));
  92. }
  93. /**
  94. * 学生基于课程获取课件
  95. */
  96. @Auth(roles = UserType.STUDENT, message = "获取课件")
  97. @GetMapping("/student/course/{courseId}")
  98. public PageResponse<SlideVO> studentGetSlidesByCourse(LoginUser user,
  99. @PathVariable Integer courseId,
  100. @RequestParam(required = false, defaultValue = "") String key,
  101. @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
  102. return PageResponse.of(slideService.studentGetSlidesByCourse(user, courseId, key, pageable));
  103. }
  104. /**
  105. * 获取课件链接
  106. */
  107. @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取课件链接")
  108. @GetMapping("/{slideId}/url")
  109. public String getSlideUrl(LoginUser user,
  110. @PathVariable Integer slideId) {
  111. return slideService.getSlideUrl(user, slideId);
  112. }
  113. /**
  114. * 获取某课件
  115. */
  116. @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "获取课件")
  117. @GetMapping("/{slideId}")
  118. public SlideVO getOneSlide(LoginUser user, @PathVariable Integer slideId) {
  119. return slideService.getOneSlide(user, slideId);
  120. }
  121. }