| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147 |
- package cn.seecoder.courselearning.serviceimpl.course;
- import cn.seecoder.courselearning.mapperservice.CourseLikesMapper;
- import cn.seecoder.courselearning.mapperservice.CourseMapper;
- import cn.seecoder.courselearning.po.Course;
- import cn.seecoder.courselearning.po.CourseOrder;
- import cn.seecoder.courselearning.service.course.CourseService;
- import cn.seecoder.courselearning.service.order.CourseOrderService;
- import cn.seecoder.courselearning.service.order.QueryOrderService;
- 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.beans.factory.annotation.Autowired;
- 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 CourseLikesMapper courseLikesMapper;
- private QueryOrderService orderService;
- @Autowired
- public void setOrderService(QueryOrderService orderService) {
- this.orderService = orderService;
- }
- @Override
- public PageInfo<CourseVO> getCourses(Integer currPage, Integer pageSize, Integer uid, String key) {
- if(currPage==null || currPage<1) currPage=1;
- PageHelper.startPage(currPage, pageSize);
- PageInfo<Course> po = new PageInfo<>(courseMapper.queryAll(key));
- return getCourseVOPageInfo(uid, po);
- }
- @Override
- public PageInfo<CourseVO> getCoursesByType(Integer currPage, Integer pageSize, Integer uid, String type) {
- if(currPage==null || currPage<1) currPage=1;
- PageHelper.startPage(currPage, pageSize);
- PageInfo<Course> po = new PageInfo<>(courseMapper.selectByType(type));
- return getCourseVOPageInfo(uid, po);
- }
- @Override
- public PageInfo<CourseVO> getHotCourses(Integer currPage, Integer pageSize) {
- if(currPage==null || currPage<1) currPage=1;
- PageHelper.startPage(currPage, pageSize);
- PageInfo<Course> po = new PageInfo<>(courseMapper.selectHotCourses());
- return getCourseVOPageInfo(null, po);
- }
- @Override
- public List<CourseVO> getBoughtCourses(Integer uid) {
- List<CourseVO> ret = new ArrayList<>();
- List<Course> courseList = courseMapper.selectByStudentId(uid);
- for(Course course: courseList){
- ret.add(new CourseVO(course, true, false));
- }
- return ret;
- }
- @Override
- public List<CourseVO> getManageableCourses(Integer uid) {
- List<CourseVO> ret = new ArrayList<>();
- List<Course> 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 = orderService.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<CourseVO> 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<CourseVO>(Constant.REQUEST_SUCCESS, "课程创建成功。", new CourseVO(course, false, true));
- }
- return new ResultVO<>(Constant.REQUEST_FAIL, "服务器错误");
- }
- @Override
- public ResultVO<CourseVO> setCourseLike(Integer courseId, Integer userId) {
- if (courseLikesMapper.count(courseId, userId) > 0) {
- return new ResultVO<>(Constant.REQUEST_FAIL, "您已经为当前课程点赞过,请勿重复操作!");
- }
- courseLikesMapper.insert(courseId, userId);
- return new ResultVO<>(Constant.REQUEST_SUCCESS, "操作成功", getCourse(courseId, userId));
- }
- @Override
- public ResultVO<CourseVO> cancelCourseLike(Integer courseId, Integer userId) {
- if (courseLikesMapper.count(courseId, userId) == 0) {
- return new ResultVO<>(Constant.REQUEST_FAIL, "您已经为当前课程取消点赞了,请勿重复操作!");
- }
- courseLikesMapper.deleteByPrimaryKey(courseId, userId);
- return new ResultVO<>(Constant.REQUEST_SUCCESS, "操作成功", getCourse(courseId, userId));
- }
- @Override
- public Course getByPrimaryKey(Integer courseId) {
- return courseMapper.selectByPrimaryKey(courseId);
- }
- private PageInfo<CourseVO> getCourseVOPageInfo(Integer uid, PageInfo<Course> po) {
- PageInfo<CourseVO> result = PageInfoUtil.convert(po, CourseVO.class);
- if(uid != null && uid > 0){
- List<CourseVO> voList = result.getList();
- for(CourseVO vo: voList){
- CourseOrder order = orderService.queryMostRecentOrder(uid, vo.getId());
- if(order != null)
- vo.setBought(order.getStatus().equals(Constant.ORDER_STATUS_SUCCESS));
- vo.setManageable(uid.equals(vo.getTeacherId()));
- }
- }
- return result;
- }
- }
|