From 0e9b9152f815763e0809a3d58b447a87aa917cdd Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Wed, 19 Jun 2024 11:13:40 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=8C=BB=E5=AD=A6-=E7=AB=A0=E8=8A=82?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=B7=BB=E5=8A=A0=E6=98=AF=E5=90=A6=E5=AD=A6?= =?UTF-8?q?=E8=BF=87=20=E5=9B=BD=E5=AD=A6-=E6=88=91=E7=9A=84=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B-=E6=AD=A3=E5=9C=A8=E5=AD=A6=E4=B9=A0-=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=20=E5=8E=BB=E6=8E=89=E6=88=91=E7=9A=84=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E5=AE=8C=E6=88=90=E5=BA=A6=E3=80=81=E4=B8=8A=E6=AC=A1?= =?UTF-8?q?=E5=AD=A6=E4=B9=A0=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../entity/CourseCatalogueChapterEntity.java | 3 ++ .../controller/CourseController.java | 4 +-- .../sociology/service/CourseService.java | 2 +- .../CourseCatalogueChapterServiceImpl.java | 14 ++++++++ .../service/impl/CourseServiceImpl.java | 34 ++++++++++++++----- 5 files changed, 46 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/peanut/modules/common/entity/CourseCatalogueChapterEntity.java b/src/main/java/com/peanut/modules/common/entity/CourseCatalogueChapterEntity.java index 9ea79ef6..b28972d8 100644 --- a/src/main/java/com/peanut/modules/common/entity/CourseCatalogueChapterEntity.java +++ b/src/main/java/com/peanut/modules/common/entity/CourseCatalogueChapterEntity.java @@ -36,4 +36,7 @@ public class CourseCatalogueChapterEntity { //视频列表 @TableField(exist = false) private List videoList; + //是否学过 + @TableField(exist = false) + private int isLearned; } 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 71be7022..4bbce2b8 100644 --- a/src/main/java/com/peanut/modules/sociology/controller/CourseController.java +++ b/src/main/java/com/peanut/modules/sociology/controller/CourseController.java @@ -212,8 +212,8 @@ public class CourseController { //我的课程-正在学习(收藏) @RequestMapping("/getUserCourseStudying") - public R getUserCourseStudying(@RequestBody Map param){ - List courseList = courseService.getUserCourseStudying(param); + public R getUserCourseStudying(){ + List courseList = courseService.getUserCourseStudying(); 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 e52c3250..11185255 100644 --- a/src/main/java/com/peanut/modules/sociology/service/CourseService.java +++ b/src/main/java/com/peanut/modules/sociology/service/CourseService.java @@ -32,7 +32,7 @@ public interface CourseService extends IService { boolean delUserCourseStudying(Map param); - List getUserCourseStudying(Map param); + List getUserCourseStudying(); List getUserCourseBuy(Map param); diff --git a/src/main/java/com/peanut/modules/sociology/service/impl/CourseCatalogueChapterServiceImpl.java b/src/main/java/com/peanut/modules/sociology/service/impl/CourseCatalogueChapterServiceImpl.java index 3572f641..893df155 100644 --- a/src/main/java/com/peanut/modules/sociology/service/impl/CourseCatalogueChapterServiceImpl.java +++ b/src/main/java/com/peanut/modules/sociology/service/impl/CourseCatalogueChapterServiceImpl.java @@ -2,13 +2,16 @@ package com.peanut.modules.sociology.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.github.yulichang.wrapper.MPJLambdaWrapper; import com.peanut.common.utils.ShiroUtils; import com.peanut.modules.common.dao.CourseCatalogueChapterDao; import com.peanut.modules.common.dao.CourseCatalogueChapterVideoDao; import com.peanut.modules.common.dao.UserCourseBuyDao; +import com.peanut.modules.common.dao.UserCourseVideoPositionDao; import com.peanut.modules.common.entity.CourseCatalogueChapterEntity; import com.peanut.modules.common.entity.CourseCatalogueChapterVideoEntity; import com.peanut.modules.common.entity.UserCourseBuyEntity; +import com.peanut.modules.common.entity.UserCourseVideoPositionEntity; import com.peanut.modules.sociology.service.CourseCatalogueChapterService; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -25,12 +28,23 @@ public class CourseCatalogueChapterServiceImpl extends ServiceImpl getCourseCatalogueChapterList(int id) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); wrapper.eq(CourseCatalogueChapterEntity::getCatalogueId,id); wrapper.orderByAsc(CourseCatalogueChapterEntity::getSort); List list = this.list(wrapper); + if (list!=null&&list.size() > 0) { + for (CourseCatalogueChapterEntity courseCatalogueChapterEntity : list) { + MPJLambdaWrapper videoPositionWrapper = new MPJLambdaWrapper(); + videoPositionWrapper.leftJoin(CourseCatalogueChapterVideoEntity.class,CourseCatalogueChapterVideoEntity::getId,UserCourseVideoPositionEntity::getVideoId); + videoPositionWrapper.eq(CourseCatalogueChapterVideoEntity::getChapterId,courseCatalogueChapterEntity.getId()); + int count = userCourseVideoPositionDao.selectCount(videoPositionWrapper); + courseCatalogueChapterEntity.setIsLearned(count>0?1:0); + } + } return list; } 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 67ce0f1d..0d288fb5 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 @@ -270,18 +270,36 @@ public class CourseServiceImpl extends ServiceImpl impl } @Override - public List getUserCourseStudying(Map param) { + public List getUserCourseStudying() { 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::getCourseId,CourseEntity::getId); - wrapper.eq(UserCourseStudying::getUserId,param.get("userId")); + wrapper.eq(UserCourseStudying::getUserId,ShiroUtils.getUId()); wrapper.selectAll(CourseEntity.class); - wrapper.selectAs(CourseCatalogueEntity::getId,"catalogueId"); - wrapper.selectAs(CourseCatalogueEntity::getTitle,"catalogueTitle"); wrapper.orderByAsc(CourseEntity::getSort); - List courseEntities = this.getBaseMapper().selectMaps(wrapper); + List courseEntities = this.getBaseMapper().selectList(wrapper); + if(courseEntities!=null&&courseEntities.size()>0){ + for (CourseEntity co:courseEntities){ + List courseCatalogueEntities = courseCatalogueDao.selectList(new MPJLambdaWrapper().eq(CourseCatalogueEntity::getCourseId, co.getId()).orderByAsc(CourseCatalogueEntity::getSort)); + if (courseCatalogueEntities.size() > 0) { + //查询目录添加,购买的课程目录详细信息 + for (CourseCatalogueEntity courseCatalogueEntity : courseCatalogueEntities) { + List userCourseBuyList = userCourseBuyDao.selectList(new LambdaQueryWrapper().eq(UserCourseBuyEntity::getUserId, ShiroUtils.getUId()).eq(UserCourseBuyEntity::getCatalogueId, courseCatalogueEntity.getId())); + //完成度、上次学习时间 + catalogueCompletion(courseCatalogueEntity); + //是否购买,生效时间 + if (userCourseBuyList.size() > 0) { + courseCatalogueEntity.setIsBuy(1); + courseCatalogueEntity.setStartTime(userCourseBuyList.get(0).getStartTime()); + courseCatalogueEntity.setEndTime(userCourseBuyList.get(0).getEndTime()); + }else { + courseCatalogueEntity.setIsBuy(0); + } + } + } + co.setCourseCatalogueEntityList(courseCatalogueEntities); + } + } return courseEntities; } @@ -360,7 +378,7 @@ public class CourseServiceImpl extends ServiceImpl impl for (CourseCatalogueEntity courseCatalogueEntity : courseCatalogueEntities) { List userCourseBuyList = userCourseBuyDao.selectList(new LambdaQueryWrapper().eq(UserCourseBuyEntity::getUserId, user.getId()).eq(UserCourseBuyEntity::getCatalogueId, courseCatalogueEntity.getId())); //完成度、上次学习时间 - catalogueCompletion(courseCatalogueEntity); +// catalogueCompletion(courseCatalogueEntity); //是否购买,生效时间 if (userCourseBuyList.size() > 0) { courseCatalogueEntity.setIsBuy(1); From ea66a4fac10f9cb2f97f654bfbaf07178288a411 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Wed, 19 Jun 2024 18:02:14 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=88=91=E7=9A=84=E8=AF=BE=E7=A8=8B-?= =?UTF-8?q?=E6=AD=A3=E5=9C=A8=E5=AD=A6=E4=B9=A0-=E4=BF=AE=E6=94=B9=20?= =?UTF-8?q?=E6=88=91=E7=9A=84=E8=AF=BE=E7=A8=8B-=E5=85=A8=E9=83=A8-?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/impl/CourseServiceImpl.java | 102 ++++++++++++++++-- 1 file changed, 91 insertions(+), 11 deletions(-) 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 0d288fb5..4c5e5921 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 @@ -26,6 +26,8 @@ public class CourseServiceImpl extends ServiceImpl impl @Autowired private CourseToSociologyDao courseToSociologyDao; @Autowired + private CourseToMedicineDao courseToMedicineDao; + @Autowired private CourseCatalogueDao courseCatalogueDao; @Autowired private UserCourseBuyDao userCourseBuyDao; @@ -43,6 +45,8 @@ public class CourseServiceImpl extends ServiceImpl impl private MyUserDao userDao; @Autowired private ShopProductDao shopProductDao; + @Autowired + private UserVipDao userVipDao; //根据标签获取课程列表 @@ -271,6 +275,7 @@ public class CourseServiceImpl extends ServiceImpl impl @Override public List getUserCourseStudying() { + MyUserEntity user = ShiroUtils.getUser(); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.leftJoin(CourseToSociologyEntity.class,CourseToSociologyEntity::getCourseId,CourseEntity::getId); wrapper.leftJoin(UserCourseStudying.class,UserCourseStudying::getCourseId,CourseEntity::getId); @@ -284,16 +289,45 @@ public class CourseServiceImpl extends ServiceImpl impl if (courseCatalogueEntities.size() > 0) { //查询目录添加,购买的课程目录详细信息 for (CourseCatalogueEntity courseCatalogueEntity : courseCatalogueEntities) { + List userVipList = userVipDao.selectList(new LambdaQueryWrapper().eq(UserVip::getUserId, user.getId())); List userCourseBuyList = userCourseBuyDao.selectList(new LambdaQueryWrapper().eq(UserCourseBuyEntity::getUserId, ShiroUtils.getUId()).eq(UserCourseBuyEntity::getCatalogueId, courseCatalogueEntity.getId())); //完成度、上次学习时间 catalogueCompletion(courseCatalogueEntity); //是否购买,生效时间 - if (userCourseBuyList.size() > 0) { + if ("1".equals(user.getVip())||"3".equals(user.getVip())){ + //是超级会员或者国学会员 + if (userVipList.size() > 0) { + courseCatalogueEntity.setStartTime(userVipList.get(0).getStartTime()); + courseCatalogueEntity.setEndTime(userVipList.get(0).getEndTime()); + } courseCatalogueEntity.setIsBuy(1); - courseCatalogueEntity.setStartTime(userCourseBuyList.get(0).getStartTime()); - courseCatalogueEntity.setEndTime(userCourseBuyList.get(0).getEndTime()); - }else { - courseCatalogueEntity.setIsBuy(0); + }else if ("0".equals(user.getVip())){ + //普通用户 + if (userCourseBuyList.size() > 0) { + courseCatalogueEntity.setIsBuy(1); + courseCatalogueEntity.setStartTime(userCourseBuyList.get(0).getStartTime()); + courseCatalogueEntity.setEndTime(userCourseBuyList.get(0).getEndTime()); + }else { + courseCatalogueEntity.setIsBuy(0); + } + }else if ("2".equals(user.getVip())){ + //医学会员 + //买的国学课程 + if (userCourseBuyList.size() > 0) { + courseCatalogueEntity.setIsBuy(1); + courseCatalogueEntity.setStartTime(userCourseBuyList.get(0).getStartTime()); + courseCatalogueEntity.setEndTime(userCourseBuyList.get(0).getEndTime()); + }else { + //医学课程会员免费 + List courseToMedicineList = courseToMedicineDao.selectList(new LambdaQueryWrapper().eq(CourseToMedicine::getCourseId, courseCatalogueEntity.getCourseId())); + if (courseToMedicineList.size() > 0) { + courseCatalogueEntity.setIsBuy(1); + courseCatalogueEntity.setStartTime(userVipList.get(0).getStartTime()); + courseCatalogueEntity.setEndTime(userVipList.get(0).getEndTime()); + }else { + courseCatalogueEntity.setIsBuy(0); + } + } } } } @@ -356,7 +390,7 @@ public class CourseServiceImpl extends ServiceImpl impl wrapper.eq(CourseToSociologyEntity::getSociologyId,c.getId()); wrapper.orderByAsc(CourseEntity::getSort); courseEntities = courseToSociologyDao.selectJoinList(CourseEntity.class, wrapper); - }else if ("0".equals(user.getVip())||"2".equals(user.getVip())){ + }else if ("0".equals(user.getVip())){ MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.leftJoin(CourseCatalogueEntity.class,CourseCatalogueEntity::getId,UserCourseBuyEntity::getCatalogueId); wrapper.leftJoin(CourseEntity.class,CourseEntity::getId,CourseCatalogueEntity::getCourseId); @@ -366,6 +400,23 @@ public class CourseServiceImpl extends ServiceImpl impl wrapper.eq(CourseToSociologyEntity::getSociologyId,c.getId()); wrapper.orderByAsc(CourseEntity::getSort); courseEntities = userCourseBuyDao.selectJoinList(CourseEntity.class, wrapper); + }else if ("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); + //添加 国学医学都有的课程 + MPJLambdaWrapper vipWrapper = new MPJLambdaWrapper<>(); + vipWrapper.leftJoin(CourseToSociologyEntity.class,CourseToSociologyEntity::getCourseId,CourseEntity::getId); + vipWrapper.exists("select * from course_to_medicine where del_flag = 0 and course_id = t.id"); + vipWrapper.eq(CourseToSociologyEntity::getSociologyId,c.getId()); + vipWrapper.selectAll(CourseEntity.class); + courseEntities.addAll(this.getBaseMapper().selectList(vipWrapper)); } if(courseEntities!=null&&courseEntities.size()>0){ for (CourseEntity co:courseEntities){ @@ -377,15 +428,44 @@ public class CourseServiceImpl extends ServiceImpl impl //查询目录添加,购买的课程目录详细信息 for (CourseCatalogueEntity courseCatalogueEntity : courseCatalogueEntities) { List userCourseBuyList = userCourseBuyDao.selectList(new LambdaQueryWrapper().eq(UserCourseBuyEntity::getUserId, user.getId()).eq(UserCourseBuyEntity::getCatalogueId, courseCatalogueEntity.getId())); + List userVipList = userVipDao.selectList(new LambdaQueryWrapper().eq(UserVip::getUserId, user.getId())); //完成度、上次学习时间 // catalogueCompletion(courseCatalogueEntity); //是否购买,生效时间 - if (userCourseBuyList.size() > 0) { + if ("1".equals(user.getVip())||"3".equals(user.getVip())){ + //是超级会员或者国学会员 + if (userVipList.size() > 0) { + courseCatalogueEntity.setStartTime(userVipList.get(0).getStartTime()); + courseCatalogueEntity.setEndTime(userVipList.get(0).getEndTime()); + } courseCatalogueEntity.setIsBuy(1); - courseCatalogueEntity.setStartTime(userCourseBuyList.get(0).getStartTime()); - courseCatalogueEntity.setEndTime(userCourseBuyList.get(0).getEndTime()); - }else { - courseCatalogueEntity.setIsBuy(0); + }else if ("0".equals(user.getVip())){ + //普通用户 + if (userCourseBuyList.size() > 0) { + courseCatalogueEntity.setIsBuy(1); + courseCatalogueEntity.setStartTime(userCourseBuyList.get(0).getStartTime()); + courseCatalogueEntity.setEndTime(userCourseBuyList.get(0).getEndTime()); + }else { + courseCatalogueEntity.setIsBuy(0); + } + }else if ("2".equals(user.getVip())){ + //医学会员 + //买的国学课程 + if (userCourseBuyList.size() > 0) { + courseCatalogueEntity.setIsBuy(1); + courseCatalogueEntity.setStartTime(userCourseBuyList.get(0).getStartTime()); + courseCatalogueEntity.setEndTime(userCourseBuyList.get(0).getEndTime()); + }else { + //医学课程会员免费 + List courseToMedicineList = courseToMedicineDao.selectList(new LambdaQueryWrapper().eq(CourseToMedicine::getCourseId, courseCatalogueEntity.getCourseId())); + if (courseToMedicineList.size() > 0) { + courseCatalogueEntity.setIsBuy(1); + courseCatalogueEntity.setStartTime(userVipList.get(0).getStartTime()); + courseCatalogueEntity.setEndTime(userVipList.get(0).getEndTime()); + }else { + courseCatalogueEntity.setIsBuy(0); + } + } } } }