diff --git a/src/main/java/com/peanut/modules/common/entity/CourseSociologyEntity.java b/src/main/java/com/peanut/modules/common/entity/CourseSociologyEntity.java index 63314cbd..5057faf4 100644 --- a/src/main/java/com/peanut/modules/common/entity/CourseSociologyEntity.java +++ b/src/main/java/com/peanut/modules/common/entity/CourseSociologyEntity.java @@ -38,4 +38,6 @@ public class CourseSociologyEntity { @TableField(exist = false) private List children; + @TableField(exist = false) + private List courseList; } diff --git a/src/main/java/com/peanut/modules/medical/service/impl/CourseServiceImpl.java b/src/main/java/com/peanut/modules/medical/service/impl/CourseServiceImpl.java index 0e27ebc3..f6566b6b 100644 --- a/src/main/java/com/peanut/modules/medical/service/impl/CourseServiceImpl.java +++ b/src/main/java/com/peanut/modules/medical/service/impl/CourseServiceImpl.java @@ -121,8 +121,8 @@ public class CourseServiceImpl extends ServiceImpl impl wrapper.distinct(); wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getCourseId,CourseEntity::getId); //关掉本次查询del_flg = 0的条件,查询过期课程 - wrapper.disableSubLogicDel().leftJoin(UserCourseBuyEntity.class,UserCourseBuyEntity::getCatalogueId,CourseCatalogueEntity::getId); - wrapper.leftJoin(CourseToMedicine.class,CourseToMedicine::getCourseId,CourseEntity::getId); + wrapper.disableSubLogicDel().rightJoin(UserCourseBuyEntity.class,UserCourseBuyEntity::getCatalogueId,CourseCatalogueEntity::getId); + wrapper.rightJoin(CourseToMedicine.class,CourseToMedicine::getCourseId,CourseEntity::getId); wrapper.eq(UserCourseBuyEntity::getUserId,param.get("userId")); wrapper.eq(UserCourseBuyEntity::getDelFlag,-1); wrapper.selectAll(CourseEntity.class); @@ -174,6 +174,7 @@ public class CourseServiceImpl extends ServiceImpl impl new MPJLambdaWrapper() .selectAll(CourseCatalogueEntity.class) .leftJoin(UserCourseBuyEntity.class, UserCourseBuyEntity::getCatalogueId,CourseCatalogueEntity::getId) + .eq(CourseCatalogueEntity::getCourseId, co.getId()) .eq(UserCourseBuyEntity::getUserId, user.getId()) .orderByAsc(CourseCatalogueEntity::getSort)); co.setCourseCatalogueEntityList(courseCatalogueEntities); diff --git a/src/main/java/com/peanut/modules/sociology/controller/CourseController.java b/src/main/java/com/peanut/modules/sociology/controller/CourseController.java index b6ee5dd0..3ca01056 100644 --- a/src/main/java/com/peanut/modules/sociology/controller/CourseController.java +++ b/src/main/java/com/peanut/modules/sociology/controller/CourseController.java @@ -1,31 +1,22 @@ package com.peanut.modules.sociology.controller; -import com.aliyun.tea.TeaException; -import com.aliyun.teautil.models.RuntimeOptions; -import com.aliyun.vod20170321.Client; import com.aliyun.vod20170321.models.*; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.peanut.common.utils.R; import com.peanut.common.utils.ShiroUtils; import com.peanut.common.utils.SpdbUtil; -import com.peanut.modules.common.dao.CourseCatalogueChapterVideoDao; -import com.peanut.modules.common.entity.CourseCatalogueChapterEntity; -import com.peanut.modules.common.entity.CourseCatalogueChapterVideoEntity; -import com.peanut.modules.common.entity.CourseEntity; -import com.peanut.modules.common.entity.SysCourseDirectEntity; +import com.peanut.modules.common.entity.*; import com.peanut.modules.common.to.ParamTo; import com.peanut.modules.master.service.CourseCatalogueChapterVideoService; import com.peanut.modules.master.service.SysCourseDirectService; import com.peanut.modules.sociology.service.CourseCatalogueChapterService; import com.peanut.modules.sociology.service.CourseService; +import com.peanut.modules.sociology.service.CourseSociologyService; import lombok.extern.slf4j.Slf4j; -//import org.bytedeco.javacv.FFmpegFrameGrabber; -//import org.bytedeco.javacv.FrameGrabber; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; - import java.util.List; import java.util.Map; @@ -42,6 +33,8 @@ public class CourseController { private CourseCatalogueChapterVideoService courseCatalogueChapterVideoService; @Autowired private SysCourseDirectService sysCourseDirectService; + @Autowired + private CourseSociologyService courseSociologyService; /** * 获取用户最近学习课程列表 @@ -173,4 +166,39 @@ public class CourseController { return R.ok().put("courses",courses); } + //添加正在学习(收藏) + @RequestMapping("/addUserCourseStudying") + public R addUserCourseStudying(@RequestBody UserCourseStudying userCourseStudying){ + return R.ok().put("success",courseService.addUserCourseStudying(userCourseStudying)); + } + + //移除正在学习(收藏) + @RequestMapping("/delUserCourseStudying") + public R delUserCourseStudying(@RequestBody Map param){ + return R.ok().put("success",courseService.delUserCourseStudying(param)); + } + + //我的课程-正在学习(收藏) + @RequestMapping("/getUserCourseStudying") + public R getUserCourseStudying(@RequestBody Map param){ + List courseList = courseService.getUserCourseStudying(param); + return R.ok().put("courseList",courseList); + } + + //我的课程-全部 + @RequestMapping("/getUserCourseBuy") + public R getUserCourseBuy(@RequestBody Map param){ + List courseSociologyList = courseSociologyService.getCourseSociologyTree(); + param.put("courseSociologyList",courseSociologyList); + List courseList = courseService.getUserCourseBuy(param); + return R.ok().put("courseList",courseList); + } + + //我的课程-过期课程 + @RequestMapping("/getCourseExpire") + public R getCourseExpire(@RequestBody Map param){ + List courseList = courseService.getCourseExpire(param); + return R.ok().put("courseList",courseList); + } + } diff --git a/src/main/java/com/peanut/modules/sociology/service/CourseService.java b/src/main/java/com/peanut/modules/sociology/service/CourseService.java index 279af71e..e52c3250 100644 --- a/src/main/java/com/peanut/modules/sociology/service/CourseService.java +++ b/src/main/java/com/peanut/modules/sociology/service/CourseService.java @@ -3,10 +3,9 @@ package com.peanut.modules.sociology.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.IService; import com.peanut.common.utils.R; -import com.peanut.modules.common.entity.CourseCatalogueChapterEntity; import com.peanut.modules.common.entity.CourseEntity; +import com.peanut.modules.common.entity.UserCourseStudying; import com.peanut.modules.common.to.ParamTo; - import java.util.List; import java.util.Map; @@ -28,4 +27,14 @@ public interface CourseService extends IService { List getCoursePrice(); R startStudyForMF(int catalogueId); + + boolean addUserCourseStudying(UserCourseStudying userCourseStudying); + + boolean delUserCourseStudying(Map param); + + List getUserCourseStudying(Map param); + + List getUserCourseBuy(Map param); + + List getCourseExpire(Map param); } diff --git a/src/main/java/com/peanut/modules/sociology/service/CourseSociologyService.java b/src/main/java/com/peanut/modules/sociology/service/CourseSociologyService.java index ad49b0be..afc7425c 100644 --- a/src/main/java/com/peanut/modules/sociology/service/CourseSociologyService.java +++ b/src/main/java/com/peanut/modules/sociology/service/CourseSociologyService.java @@ -8,4 +8,6 @@ import java.util.List; public interface CourseSociologyService extends IService { List getSociologyLabels(Integer id); + + List getCourseSociologyTree(); } diff --git a/src/main/java/com/peanut/modules/sociology/service/impl/CourseServiceImpl.java b/src/main/java/com/peanut/modules/sociology/service/impl/CourseServiceImpl.java index 30453596..7aa792f3 100644 --- a/src/main/java/com/peanut/modules/sociology/service/impl/CourseServiceImpl.java +++ b/src/main/java/com/peanut/modules/sociology/service/impl/CourseServiceImpl.java @@ -1,7 +1,6 @@ package com.peanut.modules.sociology.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.baomidou.mybatisplus.core.enums.SqlKeyword; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.github.yulichang.wrapper.MPJLambdaWrapper; @@ -15,7 +14,6 @@ import com.peanut.modules.sociology.service.CourseService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; - import java.util.*; import java.util.stream.Collectors; @@ -40,6 +38,10 @@ public class CourseServiceImpl extends ServiceImpl impl private UserCourseVideoPositionDao userCourseVideoPositionDao; @Autowired private CourseSociologyDao courseSociologyDao; + @Autowired + private UserCourseStudyingDao studyingDao; + @Autowired + private MyUserDao userDao; //根据标签获取课程列表 @@ -207,5 +209,121 @@ public class CourseServiceImpl extends ServiceImpl impl return courseCatalogueChapterEntities.size()==0?0:act * 100 / courseCatalogueChapterEntities.size(); } + @Override + public boolean addUserCourseStudying(UserCourseStudying userCourseStudying) { + if (studyingDao.insert(userCourseStudying)>0){ + return true; + }else { + return false; + } + } + @Override + public boolean delUserCourseStudying(Map param) { + if (studyingDao.deleteById(param.get("id").toString())>0){ + return true; + }else { + return false; + } + } + + @Override + public List getUserCourseStudying(Map param) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.distinct(); + wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getCourseId,CourseEntity::getId); + wrapper.leftJoin(CourseToSociologyEntity.class,CourseToSociologyEntity::getCourseId,CourseEntity::getId); + wrapper.leftJoin(UserCourseStudying.class,UserCourseStudying::getCatalogueId,CourseCatalogueEntity::getId); + wrapper.eq(UserCourseStudying::getUserId,param.get("userId")); + wrapper.selectAll(CourseEntity.class); + wrapper.selectAs(CourseCatalogueEntity::getId,"catalogueId"); + wrapper.selectAs(CourseCatalogueEntity::getTitle,"catalogueTitle"); + wrapper.orderByAsc(CourseEntity::getSort); + List courseEntities = this.getBaseMapper().selectMaps(wrapper); + return courseEntities; + } + + @Override + public List getUserCourseBuy(Map param) { + MyUserEntity user = userDao.selectById(param.get("userId").toString()); + List resultList = new ArrayList<>(); + List courseSociologyList = (List)param.get("courseSociologyList"); + for (CourseSociologyEntity c : courseSociologyList){ + if (getCourseBySociology(c,user)){ + resultList.add(c); + } + } + return resultList; + } + + @Override + public List getCourseExpire(Map param) { + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.distinct(); + wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getCourseId,CourseEntity::getId); + //关掉本次查询del_flg = 0的条件,查询过期课程 + wrapper.disableSubLogicDel().rightJoin(UserCourseBuyEntity.class,UserCourseBuyEntity::getCatalogueId,CourseCatalogueEntity::getId); + wrapper.rightJoin(CourseToSociologyEntity.class,CourseToSociologyEntity::getCourseId,CourseEntity::getId); + wrapper.eq(UserCourseBuyEntity::getUserId,param.get("userId")); + wrapper.eq(UserCourseBuyEntity::getDelFlag,-1); + wrapper.selectAll(CourseEntity.class); + wrapper.selectAs(CourseCatalogueEntity::getId,"catalogueId"); + wrapper.selectAs(CourseCatalogueEntity::getTitle,"catalogueTitle"); + wrapper.orderByAsc(CourseEntity::getSort); + wrapper.orderByAsc(CourseCatalogueEntity::getSort); + List courseEntities = this.getBaseMapper().selectMaps(wrapper); + return courseEntities; + } + + + private boolean getCourseBySociology(CourseSociologyEntity c,MyUserEntity user){ + if (c.getChildren()!=null&&c.getChildren().size() > 0){ + for (CourseSociologyEntity child : c.getChildren()){ + return getCourseBySociology(child,user); + } + } + List courseEntities = null; + //0-普通 1超级vip 2医学vip 3国学vip + if ("1".equals(user.getVip())||"3".equals(user.getVip())){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.leftJoin(CourseEntity.class,CourseEntity::getId,CourseToSociologyEntity::getCourseId); + wrapper.selectAll(CourseEntity.class); + wrapper.eq(CourseToSociologyEntity::getSociologyId,c.getId()); + wrapper.orderByAsc(CourseEntity::getSort); + courseEntities = courseToSociologyDao.selectJoinList(CourseEntity.class, wrapper); + if(courseEntities!=null&&courseEntities.size()>0){ + for (CourseEntity co:courseEntities){ + List courseCatalogueEntities = courseCatalogueDao.selectList(new LambdaQueryWrapper().eq(CourseCatalogueEntity::getCourseId, co.getId()).orderByAsc(CourseCatalogueEntity::getSort)); + co.setCourseCatalogueEntityList(courseCatalogueEntities); + } + c.setCourseList(courseEntities); + return true; + } + }else if ("0".equals(user.getVip())||"2".equals(user.getVip())){ + MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); + wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getId,UserCourseBuyEntity::getCatalogueId); + wrapper.leftJoin(CourseEntity.class,CourseEntity::getId,CourseCatalogueEntity::getCourseId); + wrapper.leftJoin(CourseToSociologyEntity.class,CourseToSociologyEntity::getCourseId,UserCourseBuyEntity::getCourseId); + wrapper.selectAll(CourseEntity.class); + wrapper.eq(UserCourseBuyEntity::getUserId,user.getId()); + wrapper.eq(CourseToSociologyEntity::getSociologyId,c.getId()); + wrapper.orderByAsc(CourseEntity::getSort); + courseEntities = userCourseBuyDao.selectJoinList(CourseEntity.class, wrapper); + if(courseEntities!=null&&courseEntities.size()>0){ + for (CourseEntity co:courseEntities){ + List courseCatalogueEntities = courseCatalogueDao.selectList( + new MPJLambdaWrapper() + .selectAll(CourseCatalogueEntity.class) + .leftJoin(UserCourseBuyEntity.class, UserCourseBuyEntity::getCatalogueId,CourseCatalogueEntity::getId) + .eq(CourseCatalogueEntity::getCourseId, co.getId()) + .eq(UserCourseBuyEntity::getUserId, user.getId()) + .orderByAsc(CourseCatalogueEntity::getSort)); + co.setCourseCatalogueEntityList(courseCatalogueEntities); + } + c.setCourseList(courseEntities); + return true; + } + } + return false; + } } diff --git a/src/main/java/com/peanut/modules/sociology/service/impl/CourseSociologyServiceImpl.java b/src/main/java/com/peanut/modules/sociology/service/impl/CourseSociologyServiceImpl.java index aebdcf87..b8ed0301 100644 --- a/src/main/java/com/peanut/modules/sociology/service/impl/CourseSociologyServiceImpl.java +++ b/src/main/java/com/peanut/modules/sociology/service/impl/CourseSociologyServiceImpl.java @@ -1,6 +1,7 @@ package com.peanut.modules.sociology.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.peanut.modules.common.dao.CourseSociologyDao; import com.peanut.modules.common.entity.CourseSociologyEntity; @@ -9,6 +10,7 @@ import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; import java.util.List; +import java.util.stream.Collectors; @Slf4j @Service("sociologyCourseSociologyService") @@ -22,4 +24,30 @@ public class CourseSociologyServiceImpl extends ServiceImpl list = this.list(wrapper); return list; } + + @Override + public List getCourseSociologyTree() { + List sociologys = this.list(new QueryWrapper<>()); + List sociologyTree = sociologys.stream().filter((courseSociology) -> + courseSociology.getPid() == 0 + ).map((sociology)->{ + sociology.setChildren(getSociologyChildrens(sociology,sociologys)); + return sociology; + }).sorted((sort1,sort2)->{ + return (sort1.getSort() == null? 0 : sort1.getSort()) - (sort2.getSort()==null?0:sort2.getSort()); + }).collect(Collectors.toList()); + return sociologyTree; + } + + private List getSociologyChildrens(CourseSociologyEntity root, List all){ + List children = all.stream().filter(courseSociology -> { + return root.getId().equals(courseSociology.getPid()); + }).map(courseSociology -> { + courseSociology.setChildren(getSociologyChildrens(courseSociology, all)); + return courseSociology; + }).sorted((sort1,sort2)->{ + return (sort1.getSort()==null?0:sort1.getSort()) - (sort2.getSort()==null?0:sort2.getSort()); + }).collect(Collectors.toList()); + return children; + } }