CourseServiceImpl.java 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129
  1. package cn.seecoder.courselearning.serviceimpl.course;
  2. import cn.seecoder.courselearning.mapperservice.course.CourseLikesMapper;
  3. import cn.seecoder.courselearning.mapperservice.course.CourseMapper;
  4. import cn.seecoder.courselearning.po.course.Course;
  5. import cn.seecoder.courselearning.po.order.CourseOrder;
  6. import cn.seecoder.courselearning.service.course.CourseService;
  7. import cn.seecoder.courselearning.service.order.QueryOrderService;
  8. import cn.seecoder.courselearning.util.Constant;
  9. import cn.seecoder.courselearning.util.PageInfoUtil;
  10. import cn.seecoder.courselearning.vo.course.CourseVO;
  11. import cn.seecoder.courselearning.vo.ResultVO;
  12. import com.github.pagehelper.PageHelper;
  13. import com.github.pagehelper.PageInfo;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Service;
  16. import javax.annotation.Resource;
  17. import java.util.ArrayList;
  18. import java.util.Date;
  19. import java.util.List;
  20. @Service
  21. public class CourseServiceImpl implements CourseService {
  22. @Resource
  23. private CourseMapper courseMapper;
  24. @Resource
  25. private CourseLikesMapper courseLikesMapper;
  26. private QueryOrderService orderService;
  27. @Autowired
  28. public void setOrderService(QueryOrderService orderService) {
  29. this.orderService = orderService;
  30. }
  31. @Override
  32. public PageInfo<CourseVO> getCourses(Integer currPage, Integer pageSize, Integer uid, String key) {
  33. if(currPage==null || currPage<1) currPage=1;
  34. PageHelper.startPage(currPage, pageSize);
  35. PageInfo<Course> po = new PageInfo<>(courseMapper.queryAll(key));
  36. return getCourseVOPageInfo(uid, po);
  37. }
  38. @Override
  39. public PageInfo<CourseVO> getCoursesByType(Integer currPage, Integer pageSize, Integer uid, String type) {
  40. if(currPage==null || currPage<1) currPage=1;
  41. PageHelper.startPage(currPage, pageSize);
  42. PageInfo<Course> po = new PageInfo<>(courseMapper.selectByType(type));
  43. return getCourseVOPageInfo(uid, po);
  44. }
  45. @Override
  46. public PageInfo<CourseVO> getHotCourses(Integer currPage, Integer pageSize) {
  47. if(currPage==null || currPage<1) currPage=1;
  48. PageHelper.startPage(currPage, pageSize);
  49. PageInfo<Course> po = new PageInfo<>(courseMapper.selectHotCourses());
  50. return getCourseVOPageInfo(null, po);
  51. }
  52. @Override
  53. public List<CourseVO> getBoughtCourses(Integer uid) {
  54. List<CourseVO> ret = new ArrayList<>();
  55. List<Course> courseList = courseMapper.selectByStudentId(uid);
  56. for(Course course: courseList){
  57. ret.add(new CourseVO(course, true, false));
  58. }
  59. return ret;
  60. }
  61. @Override
  62. public List<CourseVO> getManageableCourses(Integer uid) {
  63. List<CourseVO> ret = new ArrayList<>();
  64. List<Course> courseList = courseMapper.selectByTeacherId(uid);
  65. for(Course course: courseList){
  66. ret.add(new CourseVO(course, false, true));
  67. }
  68. return ret;
  69. }
  70. @Override
  71. public CourseVO getCourse(Integer courseId, Integer uid) {
  72. Course course = courseMapper.selectByPrimaryKey(courseId);
  73. boolean bought = false;
  74. boolean manageable = false;
  75. if(uid != null && uid > 0) {
  76. CourseOrder order = orderService.queryMostRecentOrder(uid, courseId);
  77. if(order != null)
  78. bought = order.getStatus().equals(Constant.ORDER_STATUS_SUCCESS);
  79. manageable = uid.equals(course.getTeacherId());
  80. }
  81. return new CourseVO(course, bought, manageable);
  82. }
  83. @Override
  84. public ResultVO<CourseVO> createCourse(CourseVO courseVO) {
  85. courseVO.setCreateTime(new Date());
  86. for(Course course: courseMapper.selectByTeacherId(courseVO.getTeacherId())){
  87. if (course.getName().equals(courseVO.getName()))
  88. return new ResultVO<>(Constant.REQUEST_FAIL, "已存在同名课程!");
  89. }
  90. Course course = new Course(courseVO);
  91. if(courseMapper.insert(course) > 0){
  92. return new ResultVO<CourseVO>(Constant.REQUEST_SUCCESS, "课程创建成功。", new CourseVO(course, false, true));
  93. }
  94. return new ResultVO<>(Constant.REQUEST_FAIL, "服务器错误");
  95. }
  96. @Override
  97. public Course getByPrimaryKey(Integer courseId) {
  98. return courseMapper.selectByPrimaryKey(courseId);
  99. }
  100. private PageInfo<CourseVO> getCourseVOPageInfo(Integer uid, PageInfo<Course> po) {
  101. PageInfo<CourseVO> result = PageInfoUtil.convert(po, CourseVO.class);
  102. if(uid != null && uid > 0){
  103. List<CourseVO> voList = result.getList();
  104. for(CourseVO vo: voList){
  105. CourseOrder order = orderService.queryMostRecentOrder(uid, vo.getId());
  106. if(order != null)
  107. vo.setBought(order.getStatus().equals(Constant.ORDER_STATUS_SUCCESS));
  108. vo.setManageable(uid.equals(vo.getTeacherId()));
  109. }
  110. }
  111. return result;
  112. }
  113. }