| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- 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.dto.modify.ModifyCourseDTO;
- import nju.seec.helper.service.CourseService;
- import nju.seec.helper.util.enums.UserType;
- 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 javax.validation.Valid;
- 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,
- @Valid @RequestBody CourseDTO courseDTO) {
- CourseVO courseVO = courseService.createCourse(user, courseDTO);
- return ResourceResponse.of(courseVO);
- }
- /**
- * 教师删除课程(伪删除)
- */
- @Auth(roles = UserType.TEACHER, message = "删除课程")
- @DeleteMapping("/{courseId}")
- public EmptyResponse removeCourse(LoginUser user,
- @PathVariable Integer courseId) {
- courseService.removeCourse(user, courseId);
- return EmptyResponse.getInstance();
- }
- /**
- * 教师修改课程
- */
- @Auth(roles = UserType.TEACHER, message = "修改课程")
- @PutMapping
- public ResourceResponse<CourseVO> modifyCourse(LoginUser user,
- @Valid @RequestBody ModifyCourseDTO modifyCourseDTO) {
- CourseVO courseVO = courseService.modifyCourse(user, modifyCourseDTO);
- return ResourceResponse.of(courseVO);
- }
- /**
- * 学生选课
- */
- @Auth(roles = UserType.STUDENT, message = "选课")
- @PostMapping("/choose")
- public EmptyResponse chooseCourse(LoginUser user,
- @Valid @RequestBody ChooseDTO chooseDTO) {
- courseService.chooseCourse(user, chooseDTO);
- return EmptyResponse.getInstance();
- }
- /**
- * 获取课程信息(无需登录)
- */
- @GetMapping
- public PageResourceResponse<CourseVO> getCourses(@RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
- List<CourseVO> courseVOList = courseService.getCourses(key, pageable);
- return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
- }
- /**
- * 教师获取所创课程
- */
- @Auth(roles = UserType.TEACHER, message = "获取所创课程")
- @GetMapping("/teacher")
- public PageResourceResponse<CourseVO> teacherGetCourses(LoginUser user,
- @RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
- List<CourseVO> courseVOList = courseService.teacherGetCourses(user, key, pageable);
- return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
- }
- /**
- * 学生获取所选课程
- */
- @Auth(roles = UserType.STUDENT, message = "获取所选课程")
- @GetMapping("/student")
- public PageResourceResponse<CourseVO> studentGetCourses(LoginUser user,
- @RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
- List<CourseVO> courseVOList = courseService.studentGetCourses(user, key, pageable);
- return PageResourceResponse.of(courseVOList, pageable.getPageNumber(), pageable.getPageSize());
- }
- }
|