| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159 |
- package nju.seec.helper.controller;
- import nju.seec.helper.aspect.auth.Auth;
- import nju.seec.helper.aspect.auth.LoginUser;
- import nju.seec.helper.aspect.event.Event;
- import nju.seec.helper.controller.response.PageResponse;
- import nju.seec.helper.dto.course.ChooseDTO;
- import nju.seec.helper.dto.course.CourseDTO;
- import nju.seec.helper.dto.course.CourseKnowledgeDTO;
- import nju.seec.helper.dto.groups.Create;
- import nju.seec.helper.dto.groups.Modify;
- import nju.seec.helper.enums.UserRole;
- import nju.seec.helper.service.CourseService;
- import nju.seec.helper.sys.dataanalysis.constant.EventAction;
- import nju.seec.helper.sys.dataanalysis.constant.EventType;
- import nju.seec.helper.vo.CourseVO;
- import nju.seec.helper.vo.UserVO;
- import org.springframework.data.domain.Pageable;
- import org.springframework.data.web.PageableDefault;
- import org.springframework.validation.annotation.Validated;
- import org.springframework.web.bind.annotation.*;
- /**
- * 课程
- *
- * @author cst
- */
- @RestController
- @RequestMapping("/api/course")
- public class CourseController {
- private final CourseService courseService;
- public CourseController(CourseService courseService) {
- this.courseService = courseService;
- }
- /**
- * 教师创建课程
- */
- @Auth(roles = UserRole.TEACHER, message = "创建课程")
- @PostMapping
- public CourseVO createCourse(LoginUser user,
- @Validated(Create.class) @RequestBody CourseDTO courseDTO) {
- return courseService.createCourse(user, courseDTO);
- }
- /**
- * 教师删除课程(伪删除)
- */
- @Auth(roles = UserRole.TEACHER, message = "删除课程")
- @DeleteMapping("/{courseId}")
- public void deleteCourse(LoginUser user,
- @PathVariable Long courseId) {
- courseService.deleteCourse(user, courseId);
- }
- /**
- * 教师修改课程
- */
- @Auth(roles = UserRole.TEACHER, message = "修改课程")
- @PutMapping("/{courseId}")
- public CourseVO modifyCourse(LoginUser user,
- @PathVariable Long courseId,
- @Validated(Modify.class) @RequestBody CourseDTO courseDTO) {
- return courseService.modifyCourse(user, courseId, courseDTO);
- }
- /**
- * 教师修改课程知识点
- */
- @Auth(roles = UserRole.TEACHER, message = "修改课程知识点")
- @PutMapping("/{courseId}/knowledge")
- public void modifyCourseKnowledgeId(LoginUser user, @PathVariable Long courseId, @Validated @RequestBody CourseKnowledgeDTO courseKnowledgeDTO) {
- courseService.modifyCourseKnowledgeId(user, courseId, courseKnowledgeDTO);
- }
- /**
- * 学生选课
- */
- @Event(type = EventType.LESSON, action = EventAction.PARTICIPATE)
- @Auth(roles = UserRole.STUDENT, message = "选课")
- @PostMapping("/{courseId}/choose")
- public void chooseCourse(LoginUser user,
- @PathVariable Long courseId,
- @Validated @RequestBody ChooseDTO chooseDTO) {
- courseService.chooseCourse(user, courseId, chooseDTO);
- }
- /**
- * 学生退课
- */
- @Auth(roles = UserRole.STUDENT, message = "退课")
- @PostMapping("/{courseId}/quit")
- public void quitCourse(LoginUser user,
- @PathVariable Long courseId) {
- courseService.quitCourse(user, courseId);
- }
- /**
- * 获取课程列表(无需登录)
- */
- @GetMapping
- public PageResponse<CourseVO> getCourses(@RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(courseService.getCourses(key, pageable));
- }
- /**
- * 获取创建课程列表
- */
- @Auth(roles = UserRole.TEACHER, message = "获取创建课程列表")
- @GetMapping("/created")
- public PageResponse<CourseVO> getCreatedCourses(LoginUser user,
- @RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(courseService.getCreatedCourses(user, key, pageable));
- }
- /**
- * 获取选课列表
- */
- @Auth(roles = UserRole.STUDENT, message = "获取选课列表")
- @GetMapping("/chosen")
- public PageResponse<CourseVO> getChosenCourses(LoginUser user,
- @RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(courseService.getChosenCourses(user, key, pageable));
- }
- /**
- * 获取课程选课码
- */
- @Auth(roles = UserRole.TEACHER, message = "获取选课码")
- @GetMapping("/{courseId}/code")
- public String getCourseCode(LoginUser user,
- @PathVariable Long courseId) {
- return courseService.getCourseCode(user, courseId);
- }
- /**
- * 获取某课程
- */
- @GetMapping("/{courseId}")
- public CourseVO getOneCourse(@PathVariable Long courseId) {
- return courseService.getOneCourse(courseId);
- }
- /**
- * 获取选课名单
- */
- @Auth(roles = UserRole.TEACHER, message = "获取选课名单")
- @GetMapping("/{courseId}/students")
- public PageResponse<UserVO> getChooseStudents(LoginUser user,
- @PathVariable Long courseId,
- @RequestParam(required = false, defaultValue = "") String key,
- @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
- return PageResponse.of(courseService.getChooseStudents(user, courseId, key, pageable));
- }
- }
|