SlideController.java 4.6 KB

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