package cn.seecoder.courselearning.serviceimpl; import cn.seecoder.courselearning.mapperservice.CourseMapper; import cn.seecoder.courselearning.mapperservice.CourseOrderMapper; import cn.seecoder.courselearning.po.Course; import cn.seecoder.courselearning.po.CourseOrder; import cn.seecoder.courselearning.service.CourseService; import cn.seecoder.courselearning.util.Constant; import cn.seecoder.courselearning.util.PageInfoUtil; import cn.seecoder.courselearning.vo.CourseVO; import cn.seecoder.courselearning.vo.ResultVO; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; @Service public class CourseServiceImpl implements CourseService { @Resource private CourseMapper courseMapper; @Resource private CourseOrderMapper orderMapper; @Override public PageInfo getCourses(Integer currPage, Integer pageSize, Integer uid, String key) { if(currPage==null || currPage<1) currPage=1; PageHelper.startPage(currPage, pageSize); PageInfo po = new PageInfo<>(courseMapper.queryAll(key)); return getCourseVOPageInfo(uid, po); } @Override public PageInfo getCoursesByType(Integer currPage, Integer pageSize, Integer uid, String type) { if(currPage==null || currPage<1) currPage=1; PageHelper.startPage(currPage, pageSize); PageInfo po = new PageInfo<>(courseMapper.selectByType(type)); return getCourseVOPageInfo(uid, po); } @Override public List getBoughtCourses(Integer uid) { List ret = new ArrayList<>(); List courseList = courseMapper.selectByStudentId(uid); for(Course course: courseList){ ret.add(new CourseVO(course, true, false)); } return ret; } @Override public List getManageableCourses(Integer uid) { List ret = new ArrayList<>(); List courseList = courseMapper.selectByTeacherId(uid); for(Course course: courseList){ ret.add(new CourseVO(course, false, true)); } return ret; } @Override public CourseVO getCourse(Integer courseId, Integer uid) { Course course = courseMapper.selectByPrimaryKey(courseId); boolean bought = false; boolean manageable = false; if(uid != null && uid > 0) { CourseOrder order = orderMapper.queryMostRecentOrder(uid, courseId); if(order != null) bought = order.getStatus().equals(Constant.ORDER_STATUS_SUCCESS); manageable = uid.equals(course.getTeacherId()); } return new CourseVO(course, bought, manageable); } @Override public ResultVO createCourse(CourseVO courseVO) { courseVO.setCreateTime(new Date()); for(Course course: courseMapper.selectByTeacherId(courseVO.getTeacherId())){ if (course.getName().equals(courseVO.getName())) return new ResultVO<>(Constant.REQUEST_FAIL, "已存在同名课程!"); } Course course = new Course(courseVO); if(courseMapper.insert(course) > 0){ return new ResultVO(Constant.REQUEST_SUCCESS, "课程创建成功。", new CourseVO(course, false, true)); } return new ResultVO<>(Constant.REQUEST_FAIL, "服务器错误"); } private PageInfo getCourseVOPageInfo(Integer uid, PageInfo po) { PageInfo result = PageInfoUtil.convert(po, CourseVO.class); if(uid != null && uid > 0){ List voList = result.getList(); for(CourseVO vo: voList){ CourseOrder order = orderMapper.queryMostRecentOrder(uid, vo.getId()); if(order != null) vo.setBought(order.getStatus().equals(Constant.ORDER_STATUS_SUCCESS)); vo.setManageable(uid.equals(vo.getTeacherId())); } } return result; } }