소스 검색

feat: 增加教师通过课程获取幻灯片功能

ChenSiTong 6 년 전
부모
커밋
27a7630932

+ 21 - 8
src/main/java/nju/seec/helper/controller/SlideController.java

@@ -4,8 +4,8 @@ import nju.seec.helper.aspect.auth.Auth;
 import nju.seec.helper.controller.response.PageResourceResponse;
 import nju.seec.helper.controller.response.ResourceResponse;
 import nju.seec.helper.dto.LoginUser;
-import nju.seec.helper.dto.modify.ModifySlideDTO;
 import nju.seec.helper.dto.SlideDTO;
+import nju.seec.helper.dto.modify.ModifySlideDTO;
 import nju.seec.helper.service.SlideService;
 import nju.seec.helper.util.enums.UserType;
 import nju.seec.helper.vo.SlideVO;
@@ -56,7 +56,7 @@ public class SlideController {
      * 教师获取幻灯片
      */
     @Auth(roles = UserType.TEACHER, message = "获取幻灯片列表")
-    @GetMapping
+    @GetMapping("/teacher")
     public PageResourceResponse<SlideVO> teacherGetSlides(LoginUser user,
                                                           @RequestParam(required = false, defaultValue = "") String key,
                                                           @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
@@ -64,16 +64,29 @@ public class SlideController {
         return PageResourceResponse.of(slideVOList, pageable.getPageNumber(), pageable.getPageSize());
     }
 
+    /**
+     * 教师基于课程获取幻灯片
+     */
+    @Auth(roles = UserType.TEACHER, message = "获取幻灯片列表")
+    @GetMapping("/teacher/course/{courseId}")
+    public PageResourceResponse<SlideVO> teacherGetSlidesByCourse(LoginUser user,
+                                                                  @PathVariable Integer courseId,
+                                                                  @RequestParam(required = false, defaultValue = "") String key,
+                                                                  @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
+        List<SlideVO> slideVOList = slideService.teacherGetSlidesByCourse(user, courseId, key, pageable);
+        return PageResourceResponse.of(slideVOList, pageable.getPageNumber(), pageable.getPageSize());
+    }
+
     /**
      * 学生基于课程获取幻灯片
      */
     @Auth(roles = UserType.STUDENT, message = "获取幻灯片列表")
-    @GetMapping("/course/{courseId}")
-    public PageResourceResponse<SlideVO> studentGetSlides(LoginUser user,
-                                                          @PathVariable Integer courseId,
-                                                          @RequestParam(required = false, defaultValue = "") String key,
-                                                          @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
-        List<SlideVO> slideVOList = slideService.studentGetSlides(user, courseId, key, pageable);
+    @GetMapping("/student/course/{courseId}")
+    public PageResourceResponse<SlideVO> studentGetSlidesByCourse(LoginUser user,
+                                                                  @PathVariable Integer courseId,
+                                                                  @RequestParam(required = false, defaultValue = "") String key,
+                                                                  @PageableDefault(size = Integer.MAX_VALUE) Pageable pageable) {
+        List<SlideVO> slideVOList = slideService.studentGetSlidesByCourse(user, courseId, key, pageable);
         return PageResourceResponse.of(slideVOList, pageable.getPageNumber(), pageable.getPageSize());
     }
 

+ 11 - 0
src/main/java/nju/seec/helper/dao/SlideDAO.java

@@ -36,6 +36,17 @@ public interface SlideDAO extends JpaRepository<Slide, Integer> {
      */
     Page<Slide> findByTeacherIdAndNameContains(Integer teacherId, String key, Pageable pageable);
 
+    /**
+     * 查询教师创建的该课程的幻灯片
+     *
+     * @param courseId
+     * @param teacherId
+     * @param key
+     * @param pageable
+     * @return
+     */
+    Page<Slide> findByCourseIdAndTeacherIdAndNameContains(Integer courseId, Integer teacherId, String key, Pageable pageable);
+
     /**
      * 根据课程和幻灯片状态查询
      *

+ 7 - 2
src/main/java/nju/seec/helper/service/SlideService.java

@@ -1,8 +1,8 @@
 package nju.seec.helper.service;
 
 import nju.seec.helper.dto.LoginUser;
-import nju.seec.helper.dto.modify.ModifySlideDTO;
 import nju.seec.helper.dto.SlideDTO;
+import nju.seec.helper.dto.modify.ModifySlideDTO;
 import nju.seec.helper.vo.SlideVO;
 import org.springframework.data.domain.Pageable;
 
@@ -40,6 +40,11 @@ public interface SlideService {
      */
     List<SlideVO> teacherGetSlides(LoginUser teacher, String key, Pageable pageable);
 
+    /**
+     * 教师基于课程获取幻灯片
+     */
+    List<SlideVO> teacherGetSlidesByCourse(LoginUser teacher, Integer courseId, String key, Pageable pageable);
+
     /**
      * 教师获取幻灯片
      *
@@ -49,7 +54,7 @@ public interface SlideService {
      * @param pageable
      * @return
      */
-    List<SlideVO> studentGetSlides(LoginUser student, Integer courseId, String key, Pageable pageable);
+    List<SlideVO> studentGetSlidesByCourse(LoginUser student, Integer courseId, String key, Pageable pageable);
 
     /**
      * 获取幻灯片链接

+ 11 - 1
src/main/java/nju/seec/helper/service/impl/SlideServiceImpl.java

@@ -113,7 +113,17 @@ public class SlideServiceImpl implements SlideService {
 
     @Transactional(readOnly = true)
     @Override
-    public List<SlideVO> studentGetSlides(LoginUser student, Integer courseId, String key, Pageable pageable) {
+    public List<SlideVO> teacherGetSlidesByCourse(LoginUser teacher, Integer courseId, String key, Pageable pageable) {
+        return slideDAO
+                .findByCourseIdAndTeacherIdAndNameContains(courseId, teacher.getId(), key, pageable)
+                .stream()
+                .map(SlideVO::new)
+                .collect(Collectors.toList());
+    }
+
+    @Transactional(readOnly = true)
+    @Override
+    public List<SlideVO> studentGetSlidesByCourse(LoginUser student, Integer courseId, String key, Pageable pageable) {
         if (!chooseDAO.existsByStudentIdAndCourseId(student.getId(), courseId)) {
             throw HelperException.of(HelperException.ExceptionType.FORBIDDEN, "你无权查看该课程下的幻灯片");
         }