| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- package nju.seec.helper.controller;
- import nju.seec.helper.aspect.auth.Auth;
- import nju.seec.helper.controller.response.EmptyResponse;
- import nju.seec.helper.controller.response.PageResourceResponse;
- import nju.seec.helper.controller.response.ResourceResponse;
- import nju.seec.helper.dto.ChooseDTO;
- import nju.seec.helper.dto.CourseDTO;
- import nju.seec.helper.dto.LoginUser;
- import nju.seec.helper.service.CourseService;
- import nju.seec.helper.util.enums.UserType;
- import nju.seec.helper.util.exception.HelperException;
- import nju.seec.helper.vo.CourseVO;
- import org.springframework.data.domain.Pageable;
- import org.springframework.data.web.PageableDefault;
- import org.springframework.web.bind.annotation.*;
- import java.util.List;
- /**
- * @author cst
- */
- @RestController
- @RequestMapping("/api/course")
- public class CourseController {
- private final CourseService courseService;
- public CourseController(CourseService courseService) {
- this.courseService = courseService;
- }
- @Auth(roles = UserType.TEACHER, message = "创建课程")
- @PostMapping
- public ResourceResponse<CourseVO> createCourse(LoginUser user,
- @RequestBody CourseDTO courseDTO) {
- CourseVO courseVO = courseService.createCourse(user, courseDTO);
- return ResourceResponse.of(courseVO);
- }
- @Auth(roles = UserType.STUDENT, message = "选课")
- @PostMapping("/choose")
- public EmptyResponse chooseCourse(LoginUser user,
- @RequestBody ChooseDTO chooseDTO) {
- courseService.chooseCourse(user, chooseDTO);
- return EmptyResponse.getInstance();
- }
- @Auth(roles = {UserType.TEACHER, UserType.STUDENT}, message = "查看课程")
- @GetMapping
- public PageResourceResponse<CourseVO> teacherGetCourses(LoginUser user,
- @RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
- List<CourseVO> courseVOList;
- switch (user.getType()) {
- case TEACHER:
- courseVOList = courseService.teacherGetCourses(user, key, pageable);
- break;
- case STUDENT:
- courseVOList = courseService.studentGetCourses(user, key, pageable);
- break;
- default:
- throw HelperException.of(HelperException.ExceptionType.FORBIDDEN, "您暂时无法查看课程");
- }
- return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
- }
- @Auth(roles = UserType.STUDENT, message = "获取所选课程")
- @GetMapping("/choose")
- public PageResourceResponse<CourseVO> studentGetChooseCourses(LoginUser user,
- @RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
- List<CourseVO> courseVOList = courseService.studentGetChooseCourses(user, key, pageable);
- return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
- }
- }
|