CourseController.java 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. package nju.seec.helper.controller;
  2. import nju.seec.helper.aspect.auth.Auth;
  3. import nju.seec.helper.controller.response.EmptyResponse;
  4. import nju.seec.helper.controller.response.PageResourceResponse;
  5. import nju.seec.helper.controller.response.ResourceResponse;
  6. import nju.seec.helper.dto.ChooseDTO;
  7. import nju.seec.helper.dto.CourseDTO;
  8. import nju.seec.helper.dto.LoginUser;
  9. import nju.seec.helper.dto.modify.ModifyCourseDTO;
  10. import nju.seec.helper.service.CourseService;
  11. import nju.seec.helper.util.enums.UserType;
  12. import nju.seec.helper.vo.CourseVO;
  13. import org.springframework.data.domain.Pageable;
  14. import org.springframework.data.web.PageableDefault;
  15. import org.springframework.web.bind.annotation.*;
  16. import javax.validation.Valid;
  17. import java.util.List;
  18. /**
  19. * 课程
  20. *
  21. * @author cst
  22. */
  23. @RestController
  24. @RequestMapping("/api/course")
  25. public class CourseController {
  26. private final CourseService courseService;
  27. public CourseController(CourseService courseService) {
  28. this.courseService = courseService;
  29. }
  30. /**
  31. * 教师创建课程
  32. */
  33. @Auth(roles = UserType.TEACHER, message = "创建课程")
  34. @PostMapping
  35. public ResourceResponse<CourseVO> createCourse(LoginUser user,
  36. @Valid @RequestBody CourseDTO courseDTO) {
  37. CourseVO courseVO = courseService.createCourse(user, courseDTO);
  38. return ResourceResponse.of(courseVO);
  39. }
  40. /**
  41. * 教师删除课程(伪删除)
  42. */
  43. @Auth(roles = UserType.TEACHER, message = "删除课程")
  44. @DeleteMapping("/{courseId}")
  45. public EmptyResponse removeCourse(LoginUser user,
  46. @PathVariable Integer courseId) {
  47. courseService.removeCourse(user, courseId);
  48. return EmptyResponse.getInstance();
  49. }
  50. /**
  51. * 教师修改课程
  52. */
  53. @Auth(roles = UserType.TEACHER, message = "修改课程")
  54. @PutMapping
  55. public ResourceResponse<CourseVO> modifyCourse(LoginUser user,
  56. @Valid @RequestBody ModifyCourseDTO modifyCourseDTO) {
  57. CourseVO courseVO = courseService.modifyCourse(user, modifyCourseDTO);
  58. return ResourceResponse.of(courseVO);
  59. }
  60. /**
  61. * 学生选课
  62. */
  63. @Auth(roles = UserType.STUDENT, message = "选课")
  64. @PostMapping("/choose")
  65. public EmptyResponse chooseCourse(LoginUser user,
  66. @Valid @RequestBody ChooseDTO chooseDTO) {
  67. courseService.chooseCourse(user, chooseDTO);
  68. return EmptyResponse.getInstance();
  69. }
  70. /**
  71. * 获取课程信息(无需登录)
  72. */
  73. @GetMapping
  74. public PageResourceResponse<CourseVO> getCourses(@RequestParam(required = false, defaultValue = "") String key,
  75. @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
  76. List<CourseVO> courseVOList = courseService.getCourses(key, pageable);
  77. return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
  78. }
  79. /**
  80. * 教师获取所创课程
  81. */
  82. @Auth(roles = UserType.TEACHER, message = "获取所创课程")
  83. @GetMapping("/teacher")
  84. public PageResourceResponse<CourseVO> teacherGetCourses(LoginUser user,
  85. @RequestParam(required = false, defaultValue = "") String key,
  86. @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
  87. List<CourseVO> courseVOList = courseService.teacherGetCourses(user, key, pageable);
  88. return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
  89. }
  90. /**
  91. * 学生获取所选课程
  92. */
  93. @Auth(roles = UserType.STUDENT, message = "获取所选课程")
  94. @GetMapping("/student")
  95. public PageResourceResponse<CourseVO> studentGetCourses(LoginUser user,
  96. @RequestParam(required = false, defaultValue = "") String key,
  97. @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
  98. List<CourseVO> courseVOList = courseService.studentGetCourses(user, key, pageable);
  99. return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
  100. }
  101. }