CourseServiceImpl.java 5.8 KB

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