package nju.seec.helper.service; import nju.seec.helper.aspect.auth.LoginUser; 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.entity.Course; import nju.seec.helper.vo.CourseVO; import nju.seec.helper.vo.UserVO; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; /** * @author cst */ public interface CourseService extends AuthService { /** * 创建课程 * * @param teacher * @param courseDTO * @return */ CourseVO createCourse(LoginUser teacher, CourseDTO courseDTO); /** * 修改课程 * * @param user * @param courseId * @param courseDTO * @return */ CourseVO modifyCourse(LoginUser user, Long courseId, CourseDTO courseDTO); /** * 修改课程知识点 * * @param user * @param courseId * @param courseKnowledgeDTO */ void modifyCourseKnowledgeId(LoginUser user, Long courseId, CourseKnowledgeDTO courseKnowledgeDTO); /** * 删除课程(伪删除) * * @param user * @param courseId */ void deleteCourse(LoginUser user, Long courseId); /** * 学生选课 * * @param student * @param courseId * @param chooseDTO */ void chooseCourse(LoginUser student, Long courseId, ChooseDTO chooseDTO); /** * 退课 * * @param user * @param courseId */ void quitCourse(LoginUser user, Long courseId); /** * 获取课程列表(无需登录) * * @param key * @param pageable * @return */ Page getCourses(String key, Pageable pageable); /** * 获取创建课程列表 * * @param user * @param key * @param pageable * @return */ Page getCreatedCourses(LoginUser user, String key, Pageable pageable); /** * 获取选课列表 * * @param user * @param key * @param pageable * @return */ Page getChosenCourses(LoginUser user, String key, Pageable pageable); /** * 获取课程选课码 * * @param user * @param courseId * @return */ String getCourseCode(LoginUser user, Long courseId); /** * 取得某课程 * * @param courseId * @return */ CourseVO getOneCourse(Long courseId); /** * 获取选课名单 * * @param user * @param courseId * @param key * @param pageable * @return */ Page getChooseStudents(LoginUser user, Long courseId, String key, Pageable pageable); }