CourseController.java 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package cn.seecoder.courselearning.controller.course;
  2. import cn.seecoder.courselearning.service.course.CourseService;
  3. import cn.seecoder.courselearning.util.Constant;
  4. import cn.seecoder.courselearning.vo.course.CourseVO;
  5. import cn.seecoder.courselearning.vo.ResultVO;
  6. import com.github.pagehelper.PageInfo;
  7. import org.springframework.web.bind.annotation.*;
  8. import javax.annotation.Resource;
  9. import java.util.List;
  10. @RestController
  11. @RequestMapping("/course")
  12. public class CourseController {
  13. @Resource
  14. private CourseService courseService;
  15. /**
  16. * 查询单一课程
  17. * @param uid 用户id
  18. * @param courseId 课程id
  19. */
  20. @GetMapping("/{courseId}")
  21. public CourseVO getCourseById(@RequestParam(required = false, defaultValue = "") Integer uid, @PathVariable Integer courseId) {
  22. return courseService.getCourse(courseId, uid);
  23. }
  24. /**
  25. * 获取课程列表
  26. * 如果带参数uid,则需要判断该用户是否购买过课程
  27. * 如果带参数key,则根据关键字返回分页查询结果
  28. * @param uid 用户id
  29. * @param key 关键字
  30. */
  31. @GetMapping("/all/{page}")
  32. public PageInfo<CourseVO> getCoursesByKey(@RequestParam(required = false, defaultValue = "") Integer uid,
  33. @RequestParam(required = false, defaultValue = "") String key,
  34. @PathVariable Integer page) {
  35. return courseService.getCourses(page, Constant.COURSE_PAGE_SIZE, uid, key);
  36. }
  37. /**
  38. * 根据分类标签,获取课程列表
  39. * 如果带参数uid,则需要判断该用户是否购买过课程、该用户是否为课程的教师
  40. * @param uid 用户id
  41. * @param type 课程类别
  42. */
  43. @GetMapping("/type/{page}")
  44. public PageInfo<CourseVO> getCoursesByType(@RequestParam(required = false, defaultValue = "") Integer uid,
  45. @RequestParam String type,
  46. @PathVariable Integer page) {
  47. return courseService.getCoursesByType(page, Constant.COURSE_PAGE_SIZE, uid, type);
  48. }
  49. /**
  50. * 分页获取热门课程列表
  51. * @param page 页码数
  52. */
  53. @GetMapping("/hot/{page}")
  54. public PageInfo<CourseVO> getHotCourses(@PathVariable Integer page, Integer uid) {
  55. return courseService.getHotCourses(page, Constant.COURSE_PAGE_SIZE,uid);
  56. }
  57. /**
  58. * 获取用户已购买的课程列表
  59. * @param sid 学生id
  60. */
  61. @GetMapping("/sid/{sid}")
  62. public List<CourseVO> getBoughtCourses(@PathVariable Integer sid) {
  63. return courseService.getBoughtCourses(sid);
  64. }
  65. /**
  66. * 获取教师可管理的课程列表
  67. * @param tid 教师id
  68. */
  69. @GetMapping("/tid/{tid}")
  70. public List<CourseVO> getManageableCourses(@PathVariable Integer tid) {
  71. return courseService.getManageableCourses(tid);
  72. }
  73. /**
  74. * 教师创建课程
  75. * @param course 课程VO
  76. */
  77. @PostMapping("/create")
  78. public ResultVO<CourseVO> createCourse(@RequestBody CourseVO course) {
  79. return courseService.createCourse(course);
  80. }
  81. /**
  82. * 用户点赞课程
  83. * @param uid 用户id
  84. * @param courseId 课程id
  85. */
  86. @PostMapping("/like/{courseId}")
  87. public ResultVO<CourseVO> setCourseLike(@RequestParam Integer uid, @PathVariable Integer courseId) {
  88. return courseService.setCourseLike(courseId, uid);
  89. }
  90. /**
  91. * 用户取消点赞课程
  92. * @param uid 用户id
  93. * @param courseId 课程id
  94. */
  95. @PostMapping("/cancel_like/{courseId}")
  96. public ResultVO<CourseVO> cancelCourseLike(@RequestParam Integer uid, @PathVariable Integer courseId) {
  97. return courseService.cancelCourseLike(courseId, uid);
  98. }
  99. }