CourseController.java 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  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.service.CourseService;
  10. import nju.seec.helper.util.enums.UserType;
  11. import nju.seec.helper.util.exception.HelperException;
  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 java.util.List;
  17. /**
  18. * @author cst
  19. */
  20. @RestController
  21. @RequestMapping("/api/course")
  22. public class CourseController {
  23. private final CourseService courseService;
  24. public CourseController(CourseService courseService) {
  25. this.courseService = courseService;
  26. }
  27. @Auth(roles = UserType.TEACHER, message = "创建课程")
  28. @PostMapping
  29. public ResourceResponse<CourseVO> createCourse(LoginUser user,
  30. @RequestBody CourseDTO courseDTO) {
  31. CourseVO courseVO = courseService.createCourse(user, courseDTO);
  32. return ResourceResponse.of(courseVO);
  33. }
  34. @Auth(roles = UserType.STUDENT, message = "选课")
  35. @PostMapping("/choose")
  36. public EmptyResponse chooseCourse(LoginUser user,
  37. @RequestBody ChooseDTO chooseDTO) {
  38. courseService.chooseCourse(user, chooseDTO);
  39. return EmptyResponse.getInstance();
  40. }
  41. @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "查看课程")
  42. @GetMapping
  43. public PageResourceResponse<CourseVO> teacherGetCourses(LoginUser user,
  44. @RequestParam(required = false, defaultValue = "") String key,
  45. @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
  46. List<CourseVO> courseVOList;
  47. switch (user.getType()) {
  48. case TEACHER:
  49. courseVOList = courseService.teacherGetCourses(user, key, pageable);
  50. break;
  51. case STUDENT:
  52. courseVOList = courseService.studentGetCourses(user, key, pageable);
  53. break;
  54. default:
  55. throw HelperException.of(HelperException.ExceptionType.FORBIDDEN, "您暂时无法查看课程");
  56. }
  57. return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
  58. }
  59. @Auth(roles = UserType.STUDENT, message = "获取所选课程")
  60. @GetMapping("/choose")
  61. public PageResourceResponse<CourseVO> studentGetChooseCourses(LoginUser user,
  62. @RequestParam(required = false, defaultValue = "") String key,
  63. @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
  64. List<CourseVO> courseVOList = courseService.studentGetChooseCourses(user, key, pageable);
  65. return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
  66. }
  67. }