Browse Source

feat: 完成/api/course/student

mjh 4 years ago
parent
commit
a24af9390f

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/domain/CourseSelectionKey.java → seecoder-portal-common/src/main/java/cn/seecoder/seecoderportalcommon/vo/CourseSelectionKey.java

@@ -1,4 +1,4 @@
-package cn.seecoder.seecoderportalserver.domain;
+package cn.seecoder.seecoderportalcommon.vo;
 
 import java.io.Serializable;
 

+ 2 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/config/SpringSecurityConfiguration.java

@@ -67,7 +67,8 @@ public class SpringSecurityConfiguration extends WebSecurityConfigurerAdapter {
                         "/api/course/update",
                         "/api/course",
                         "/api/course/selection/confirm",
-                        "/api/course/selection/cancel")
+                        "/api/course/selection/cancel",
+                        "/api/course/student")
                 .permitAll() // authenticate
                 .and()
                 .authorizeRequests()

+ 2 - 0
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/domain/CourseSelection.java

@@ -1,5 +1,7 @@
 package cn.seecoder.seecoderportalserver.domain;
 
+import cn.seecoder.seecoderportalcommon.vo.CourseSelectionKey;
+
 import javax.persistence.*;
 import javax.validation.constraints.NotNull;
 

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/mapper/CourseSelectionMapper.java

@@ -3,7 +3,7 @@ package cn.seecoder.seecoderportalserver.mapper;
 
 import cn.seecoder.seecoderportalcommon.vo.CourseSelectionVO;
 import cn.seecoder.seecoderportalserver.domain.CourseSelection;
-import cn.seecoder.seecoderportalserver.domain.CourseSelectionKey;
+import cn.seecoder.seecoderportalcommon.vo.CourseSelectionKey;
 import org.mapstruct.Mapper;
 
 @Mapper(componentModel = "spring")

+ 4 - 2
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/repository/CourseSelectionRepository.java

@@ -1,9 +1,11 @@
 package cn.seecoder.seecoderportalserver.repository;
 
 import cn.seecoder.seecoderportalserver.domain.CourseSelection;
-import cn.seecoder.seecoderportalserver.domain.CourseSelectionKey;
+import cn.seecoder.seecoderportalcommon.vo.CourseSelectionKey;
 import org.springframework.data.jpa.repository.JpaRepository;
 
-public interface CourseSelectionRepository extends JpaRepository<CourseSelection, CourseSelectionKey> {
+import java.util.List;
 
+public interface CourseSelectionRepository extends JpaRepository<CourseSelection, CourseSelectionKey> {
+    List<CourseSelection> findCourseSelectionsByUserId(Long userId);
 }

+ 1 - 1
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/CourseSelectionService.java

@@ -3,7 +3,7 @@ package cn.seecoder.seecoderportalserver.service;
 import cn.seecoder.seecoderportalcommon.vo.CourseSelectionVO;
 import cn.seecoder.seecoderportalserver.domain.Course;
 import cn.seecoder.seecoderportalserver.domain.CourseSelection;
-import cn.seecoder.seecoderportalserver.domain.CourseSelectionKey;
+import cn.seecoder.seecoderportalcommon.vo.CourseSelectionKey;
 import cn.seecoder.seecoderportalserver.domain.User;
 import cn.seecoder.seecoderportalserver.mapper.CourseSelectionMapper;
 import cn.seecoder.seecoderportalserver.repository.CourseRepository;

+ 24 - 14
seecoder-portal-server/src/main/java/cn/seecoder/seecoderportalserver/service/CourseService.java

@@ -3,9 +3,11 @@ package cn.seecoder.seecoderportalserver.service;
 import cn.seecoder.seecoderportalcommon.vo.CourseState;
 import cn.seecoder.seecoderportalcommon.vo.CourseVO;
 import cn.seecoder.seecoderportalserver.domain.Course;
+import cn.seecoder.seecoderportalserver.domain.CourseSelection;
 import cn.seecoder.seecoderportalserver.domain.User;
 import cn.seecoder.seecoderportalserver.mapper.CourseMapper;
 import cn.seecoder.seecoderportalserver.repository.CourseRepository;
+import cn.seecoder.seecoderportalserver.repository.CourseSelectionRepository;
 import cn.seecoder.seecoderportalserver.repository.UserRepository;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -24,18 +26,20 @@ public class CourseService {
     private final CourseRepository courseRepository;
     private final CourseMapper courseMapper;
     private final UserRepository userRepository;
+    private final CourseSelectionRepository courseSelectionRepository;
 
-    public CourseService(CourseRepository courseRepository, CourseMapper courseMapper, UserRepository userRepository) {
+    public CourseService(CourseRepository courseRepository, CourseMapper courseMapper, UserRepository userRepository, CourseSelectionRepository courseSelectionRepository) {
         this.courseRepository = courseRepository;
         this.courseMapper = courseMapper;
         this.userRepository = userRepository;
+        this.courseSelectionRepository = courseSelectionRepository;
     }
 
-    public CourseVO getCourse(Long courseId){
+    public CourseVO getCourse(Long courseId) {
         Optional<Course> course = courseRepository.findById(courseId);
-        if(course.isPresent()){
+        if (course.isPresent()) {
             return courseMapper.courseToCourseVO(course.get());
-        }else{
+        } else {
             return null;
         }
     }
@@ -43,7 +47,7 @@ public class CourseService {
     public CourseVO createCourse(CourseVO courseVO) {
         Optional<User> teacher = userRepository.findById(courseVO.getTeacher().getId());
         // 确认授课老师ID存在
-        if(!teacher.isPresent()){
+        if (!teacher.isPresent()) {
             return null;
         }
         // todo: evalId, coderId, helperId
@@ -53,36 +57,42 @@ public class CourseService {
         return courseMapper.courseToCourseVO(result);
     }
 
-    public CourseVO updateCourse(CourseVO courseVO){
+    public CourseVO updateCourse(CourseVO courseVO) {
         Course course = courseMapper.courseVOToCourse(courseVO);
         Course result = courseRepository.save(course);
         return courseMapper.courseToCourseVO(result);
     }
 
-    public String deleteCourse(Long courseId){
+    public String deleteCourse(Long courseId) {
         Optional<Course> course = courseRepository.findById(courseId);
-        if(course.isPresent()){
+        if (course.isPresent()) {
             courseRepository.deleteById(courseId);
             return "课程删除成功";
-        }else{
+        } else {
             return "该课程不存在";
         }
     }
 
-    public List<CourseVO> getAllCourses(){
+    public List<CourseVO> getAllCourses() {
         List<Course> courses = courseRepository.findAll();
         List<CourseVO> courseVOs = courses.stream().map(courseMapper::courseToCourseVO).collect(Collectors.toList());
         return courseVOs;
     }
 
-    public List<CourseVO> getTeacherCourses(Long teacherId){
+    public List<CourseVO> getTeacherCourses(Long teacherId) {
         List<Course> courses = courseRepository.findCoursesByTeacherId(teacherId);
         List<CourseVO> courseVOs = courses.stream().map(courseMapper::courseToCourseVO).collect(Collectors.toList());
         return courseVOs;
     }
 
-    // todo
-    public List<CourseVO> getStudentCourses(Long studentId){
-        return null;
+    public List<CourseVO> getStudentCourses(Long studentId) {
+        List<CourseSelection> courseSelections = courseSelectionRepository.findCourseSelectionsByUserId(studentId);
+        List<CourseVO> courseVOs = courseSelections.stream()
+                .map(courseSelection -> courseMapper
+                        .courseToCourseVO(courseRepository
+                                .findById(courseSelection.getCourseId())
+                                .get()))
+                .collect(Collectors.toList());
+        return courseVOs;
     }
 }