You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
rdrev/backend/src/main/java/rd/controller/course/StudentCourseController.java

76 lines
2.8 KiB

package rd.controller.course;
import cn.dev33.satoken.annotation.SaCheckLogin;
import cn.dev33.satoken.annotation.SaCheckRole;
import cn.dev33.satoken.stp.StpUtil;
import rd.data.dto.course.CourseDTO;
import rd.data.db.table.Course;
import rd.data.model.response.Response;
import rd.service.activity.ActivityService;
import rd.service.activity.ActivityTargetService;
import rd.service.course.CourseService;
import rd.service.user.StudentUserService;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import java.util.ArrayList;
import java.util.List;
@RestController
@RequestMapping("/student/course")
public class StudentCourseController {
private final CourseService courseService;
private final ActivityTargetService activityTargetService;
private final StudentUserService studentUserService;
private final ActivityService activityService;
public StudentCourseController(CourseService courseService,
ActivityTargetService activityTargetService,
StudentUserService studentUserService,
ActivityService activityService) {
this.courseService = courseService;
this.activityTargetService = activityTargetService;
this.studentUserService = studentUserService;
this.activityService = activityService;
}
@SaCheckLogin
@SaCheckRole("STUDENT")
@GetMapping("/candidate")
public Response<List<CourseDTO>> listCandidate(@RequestParam(value = "act", required = false) Long activityId) {
Long uid = StpUtil.getLoginIdAsLong();
var studentInfo = studentUserService.getInfoById(uid);
if (activityId == null) {
var currentActivity = activityService.getCurrentActivity();
if (currentActivity == null) {
return Response.success(new ArrayList<>());
}
activityId = currentActivity.getId();
}
var courseIdList = activityTargetService.getMajorGradeActivityCandidateCourses(
studentInfo.major(), studentInfo.grade(), activityId
);
var courseIdMap = courseService.getCourse(courseIdList);
var courseList = courseIdMap.values().stream()
.map(this::convertCourse)
.toList();
return Response.success(courseList);
}
private CourseDTO convertCourse(Course course) {
CourseDTO courseDTO = new CourseDTO();
courseDTO.setId(course.getId());
courseDTO.setName(course.getName());
courseDTO.setCourseHours(course.getCourseHours());
courseDTO.setSpringTerm(course.getSpringTerm());
return courseDTO;
}
}