|
|
@@ -1,14 +1,18 @@
|
|
|
package com.njuzr.eaibackend.controller;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.metadata.IPage;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
-import com.njuzr.eaibackend.dto.CourseDTO;
|
|
|
-import com.njuzr.eaibackend.dto.EnrollDTO;
|
|
|
+import com.njuzr.eaibackend.dto.course.CourseDTO;
|
|
|
+import com.njuzr.eaibackend.dto.course.CourseQueryDTO;
|
|
|
+import com.njuzr.eaibackend.dto.course.CourseUpdateDTO;
|
|
|
+import com.njuzr.eaibackend.dto.course.EnrollDTO;
|
|
|
import com.njuzr.eaibackend.po.Course;
|
|
|
-import com.njuzr.eaibackend.po.User;
|
|
|
+import com.njuzr.eaibackend.po.MyUserDetails;
|
|
|
import com.njuzr.eaibackend.service.CourseService;
|
|
|
import com.njuzr.eaibackend.vo.CourseVO;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.security.access.prepost.PreAuthorize;
|
|
|
+import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
|
|
import org.springframework.validation.annotation.Validated;
|
|
|
import org.springframework.web.bind.annotation.*;
|
|
|
|
|
|
@@ -30,26 +34,38 @@ public class CourseController {
|
|
|
|
|
|
|
|
|
/**
|
|
|
- * 分页返回所有的课程信息
|
|
|
+ * 创建课程
|
|
|
+ * @param courseDTO
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ @PreAuthorize("hasRole('TEACHER') or hasRole('ADMIN')")
|
|
|
+ @PostMapping
|
|
|
+ public MyResponse createCourse(@Validated @RequestBody CourseDTO courseDTO) {
|
|
|
+ CourseVO courseVO = courseService.createCourse(courseDTO);
|
|
|
+ return MyResponse.success(courseVO);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 管理查询课程,内容查询
|
|
|
+ * @param currentPage
|
|
|
+ * @param pageSize
|
|
|
+ * @param courseQueryDTO
|
|
|
* @return
|
|
|
*/
|
|
|
- @GetMapping("/findAll")
|
|
|
- public MyResponse findAllCourses(
|
|
|
+ @PreAuthorize("hasRole('ADMIN')")
|
|
|
+ @GetMapping
|
|
|
+ public MyResponse findCoursePage(
|
|
|
@RequestParam(value = "page", defaultValue = "1") int currentPage,
|
|
|
- @RequestParam(value = "size", defaultValue = "10") int pageSize
|
|
|
- ) {
|
|
|
+ @RequestParam(value = "size", defaultValue = "10") int pageSize,
|
|
|
+ @RequestBody CourseQueryDTO courseQueryDTO
|
|
|
+ ) {
|
|
|
+ Page<Course> page = new Page<>(currentPage, pageSize);
|
|
|
+ IPage<CourseVO> courses = courseService.findCoursesPage(page, courseQueryDTO);
|
|
|
|
|
|
- return MyResponse.success("");
|
|
|
+ return MyResponse.success(courses);
|
|
|
}
|
|
|
|
|
|
-// @GetMapping()
|
|
|
-// public MyResponse searchCourses(
|
|
|
-// @RequestParam String courseName,
|
|
|
-// @RequestParam String
|
|
|
-// ) {
|
|
|
-//
|
|
|
-// }
|
|
|
-
|
|
|
|
|
|
/**
|
|
|
* 根据学生Id获取其所选的所有课程的信息
|
|
|
@@ -57,12 +73,17 @@ public class CourseController {
|
|
|
* @return
|
|
|
*/
|
|
|
@GetMapping("/byStudent/{studentId}")
|
|
|
- public MyResponse findByStudentId(
|
|
|
+ public MyResponse findCourseByStudentId(
|
|
|
@PathVariable Long studentId,
|
|
|
- @RequestParam(defaultValue = "0") int page,
|
|
|
- @RequestParam(defaultValue = "10") int size
|
|
|
+ @RequestParam(value = "page", defaultValue = "1") int currentPage,
|
|
|
+ @RequestParam(value = "size", defaultValue = "10") int pageSize
|
|
|
) {
|
|
|
- return MyResponse.success("");
|
|
|
+ Page<Course> page = new Page<>(currentPage, pageSize);
|
|
|
+
|
|
|
+ CourseQueryDTO courseQueryDTO = new CourseQueryDTO();
|
|
|
+ courseQueryDTO.setStudentId(studentId);
|
|
|
+
|
|
|
+ return MyResponse.success(courseService.findCoursesPage(page, courseQueryDTO));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -74,10 +95,15 @@ public class CourseController {
|
|
|
@GetMapping("/byTeacher/{teacherId}")
|
|
|
public MyResponse findByTeacherId(
|
|
|
@PathVariable Long teacherId,
|
|
|
- @RequestParam(defaultValue = "0") int page,
|
|
|
- @RequestParam(defaultValue = "10") int size
|
|
|
+ @RequestParam(value = "page", defaultValue = "1") int currentPage,
|
|
|
+ @RequestParam(value = "size", defaultValue = "10") int pageSize
|
|
|
) {
|
|
|
- return MyResponse.success("");
|
|
|
+ Page<Course> page = new Page<>(currentPage, pageSize);
|
|
|
+
|
|
|
+ CourseQueryDTO courseQueryDTO = new CourseQueryDTO();
|
|
|
+ courseQueryDTO.setTeacherId(teacherId);
|
|
|
+
|
|
|
+ return MyResponse.success(courseService.findCoursesPage(page, courseQueryDTO));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
@@ -95,44 +121,96 @@ public class CourseController {
|
|
|
) {
|
|
|
Page<Course> page = new Page<>(currentPage, pageSize);
|
|
|
|
|
|
- return MyResponse.success("");
|
|
|
+ CourseQueryDTO courseQueryDTO = new CourseQueryDTO();
|
|
|
+ courseQueryDTO.setCourseId(courseId);
|
|
|
+
|
|
|
+ return MyResponse.success(courseService.findCoursesPage(page, courseQueryDTO));
|
|
|
+ }
|
|
|
+
|
|
|
+ @GetMapping("/byName")
|
|
|
+ public MyResponse findByCourseName(
|
|
|
+ @RequestParam String courseName,
|
|
|
+ @RequestParam(value = "page", defaultValue = "1") int currentPage,
|
|
|
+ @RequestParam(value = "size", defaultValue = "10") int pageSize
|
|
|
+ ) {
|
|
|
+ Page<Course> page = new Page<>(currentPage, pageSize);
|
|
|
+
|
|
|
+ CourseQueryDTO courseQueryDTO = new CourseQueryDTO();
|
|
|
+ courseQueryDTO.setCourseName(courseName);
|
|
|
+
|
|
|
+ return MyResponse.success(courseService.findCoursesPage(page, courseQueryDTO));
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ @GetMapping("/byTime")
|
|
|
+ public MyResponse findByCourseTime(
|
|
|
+ @RequestParam String courseTime,
|
|
|
+ @RequestParam(value = "page", defaultValue = "1") int currentPage,
|
|
|
+ @RequestParam(value = "size", defaultValue = "10") int pageSize
|
|
|
+ ) {
|
|
|
+ Page<Course> page = new Page<>(currentPage, pageSize);
|
|
|
+
|
|
|
+ CourseQueryDTO courseQueryDTO = new CourseQueryDTO();
|
|
|
+ courseQueryDTO.setSemester(courseTime);
|
|
|
+
|
|
|
+ return MyResponse.success(courseService.findCoursesPage(page, courseQueryDTO));
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 创建课程
|
|
|
- * @param courseDTO
|
|
|
+ * 只有课程老师或管理员可以修改当前课程的信息
|
|
|
+ * @param userId
|
|
|
+ * @param courseId
|
|
|
+ * @param updateDTO
|
|
|
* @return
|
|
|
*/
|
|
|
@PreAuthorize("hasRole('TEACHER') or hasRole('ADMIN')")
|
|
|
- @PostMapping
|
|
|
- public MyResponse createCourse(@Validated @RequestBody CourseDTO courseDTO) {
|
|
|
- CourseVO courseVO = courseService.createCourse(courseDTO);
|
|
|
- return MyResponse.success(courseVO);
|
|
|
- }
|
|
|
-
|
|
|
@PutMapping
|
|
|
- public MyResponse updateCourse(@RequestBody CourseDTO courseDTO) {
|
|
|
- return MyResponse.success("");
|
|
|
+ public MyResponse updateCourse(
|
|
|
+ @AuthenticationPrincipal(expression = "id") Long userId,
|
|
|
+ @RequestParam Long courseId,
|
|
|
+ @RequestBody CourseUpdateDTO updateDTO
|
|
|
+ ) {
|
|
|
+ return MyResponse.success(courseService.updateCourse(userId, courseId, updateDTO));
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ @PreAuthorize("hasRole('TEACHER') or hasRole('ADMIN')")
|
|
|
@PutMapping("/enrollCode")
|
|
|
- public MyResponse updateEnrollCode(@RequestParam String enrollCode) {
|
|
|
- return MyResponse.success("");
|
|
|
+ public MyResponse updateEnrollCode(
|
|
|
+ @AuthenticationPrincipal(expression = "id") Long userId,
|
|
|
+ @RequestParam Long courseId,
|
|
|
+ @RequestParam String enrollCode
|
|
|
+ ) {
|
|
|
+ CourseUpdateDTO updateDTO = new CourseUpdateDTO();
|
|
|
+ updateDTO.setEnrollCode(enrollCode);
|
|
|
+ return MyResponse.success(courseService.updateCourse(userId, courseId, updateDTO));
|
|
|
}
|
|
|
|
|
|
+ @PreAuthorize("hasRole('TEACHER') or hasRole('ADMIN')")
|
|
|
@DeleteMapping
|
|
|
- public MyResponse deleteCourse(@RequestParam Long courseId) {
|
|
|
- return MyResponse.success("");
|
|
|
+ public MyResponse deleteCourse(
|
|
|
+ @AuthenticationPrincipal MyUserDetails user,
|
|
|
+ @RequestParam Long courseId
|
|
|
+ ) {
|
|
|
+ courseService.deleteById(user, courseId);
|
|
|
+ return MyResponse.success("删除课程成功");
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 选课,通过studentId和courseId,完成选课
|
|
|
+ * 选课,通过studentId和courseId,完成选课。其中studentId从Token中获取。
|
|
|
+ * @param studentId
|
|
|
* @param enrollDTO
|
|
|
* @return
|
|
|
*/
|
|
|
+ @PreAuthorize("hasRole('STUDENT')")
|
|
|
@PostMapping("/enroll")
|
|
|
- public MyResponse enroll(@RequestBody EnrollDTO enrollDTO) {
|
|
|
- return MyResponse.success("");
|
|
|
+ public MyResponse enroll(
|
|
|
+ @AuthenticationPrincipal(expression = "id") Long studentId,
|
|
|
+ @RequestBody EnrollDTO enrollDTO
|
|
|
+ ) {
|
|
|
+ enrollDTO.setStudentId(studentId);
|
|
|
+ courseService.enroll(enrollDTO);
|
|
|
+ return MyResponse.success("选课成功");
|
|
|
}
|
|
|
|
|
|
|