From 3634bb77aa8a26ba742dd6eb558d3aa9b275b462 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Tue, 18 Jun 2024 18:15:16 +0800 Subject: [PATCH] =?UTF-8?q?=E6=88=91=E7=9A=84=E8=AF=BE=E7=A8=8B-=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/entity/CourseCatalogueEntity.java | 5 ++ .../controller/CourseController.java | 5 +- .../service/impl/CourseServiceImpl.java | 70 +++++++++++-------- 3 files changed, 49 insertions(+), 31 deletions(-) diff --git a/src/main/java/com/peanut/modules/common/entity/CourseCatalogueEntity.java b/src/main/java/com/peanut/modules/common/entity/CourseCatalogueEntity.java index fb3765d2..fac6a299 100644 --- a/src/main/java/com/peanut/modules/common/entity/CourseCatalogueEntity.java +++ b/src/main/java/com/peanut/modules/common/entity/CourseCatalogueEntity.java @@ -70,5 +70,10 @@ public class CourseCatalogueEntity{ */ @TableField(exist = false) private Date endTime; + /** + * 上次学习时间 + */ + @TableField(exist = false) + private Date lastStudyTime; } 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 c0c48d5f..71be7022 100644 --- a/src/main/java/com/peanut/modules/sociology/controller/CourseController.java +++ b/src/main/java/com/peanut/modules/sociology/controller/CourseController.java @@ -19,6 +19,8 @@ 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.HashMap; import java.util.List; import java.util.Map; @@ -217,8 +219,9 @@ public class CourseController { //我的课程-全部 @RequestMapping("/getUserCourseBuy") - public R getUserCourseBuy(@RequestBody Map param){ + public R getUserCourseBuy(){ List courseSociologyList = courseSociologyService.getCourseSociologyTree(); + Map param = new HashMap<>(); param.put("courseSociologyList",courseSociologyList); List courseList = courseService.getUserCourseBuy(param); return R.ok().put("courseList",courseList); 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 ac0440a7..67ce0f1d 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 @@ -127,7 +127,8 @@ public class CourseServiceImpl extends ServiceImpl impl Integer uId = ShiroUtils.getUId(); for (CourseCatalogueEntity c :courseCatalogueEntities){ List userCourseBuyList = userCourseBuyDao.selectList(new LambdaQueryWrapper().eq(UserCourseBuyEntity::getUserId, uId).eq(UserCourseBuyEntity::getCatalogueId, c.getId())); - c.setCompletion(catalogueCompletion(c)); + //完成度、上次学习时间 + catalogueCompletion(c); if (userCourseBuyList.size() > 0) { c.setIsBuy(1); c.setStartTime(userCourseBuyList.get(0).getStartTime()); @@ -225,21 +226,29 @@ public class CourseServiceImpl extends ServiceImpl impl return R.ok(); } - private Integer catalogueCompletion(CourseCatalogueEntity c){ + private void catalogueCompletion(CourseCatalogueEntity c){ List courseCatalogueChapterEntities = courseCatalogueChapterDao.selectList(new LambdaQueryWrapper().eq(CourseCatalogueChapterEntity::getCatalogueId, c.getId())); Integer act = 0; + Date date = null; for (CourseCatalogueChapterEntity cc : courseCatalogueChapterEntities){ List courseCatalogueChapterVideoEntities = courseCatalogueChapterVideoDao.selectList(new LambdaQueryWrapper().eq(CourseCatalogueChapterVideoEntity::getChapterId, cc.getId())); List collect = courseCatalogueChapterVideoEntities.stream().map(CourseCatalogueChapterVideoEntity::getId).collect(Collectors.toList()); if(collect.size()==0){ continue; } - Integer integer = userCourseVideoPositionDao.selectCount(new LambdaQueryWrapper().eq(UserCourseVideoPositionEntity::getUserId, ShiroUtils.getUId()).in(UserCourseVideoPositionEntity::getVideoId, collect)); - if (integer>0){ + List videoPositionList = userCourseVideoPositionDao.selectList(new LambdaQueryWrapper().eq(UserCourseVideoPositionEntity::getUserId, ShiroUtils.getUId()).in(UserCourseVideoPositionEntity::getVideoId, collect).orderByDesc(UserCourseVideoPositionEntity::getCreateTime)); + if (videoPositionList.size()>0){ act++; + if (date!=null){ + date = date.getTime()>videoPositionList.get(0).getCreateTime().getTime()?date:videoPositionList.get(0).getCreateTime(); + }else { + date = videoPositionList.get(0).getCreateTime(); + } } } - return courseCatalogueChapterEntities.size()==0?0:act * 100 / courseCatalogueChapterEntities.size(); + int completion = courseCatalogueChapterEntities.size()==0?0:act * 100 / courseCatalogueChapterEntities.size(); + c.setCompletion(completion); + c.setLastStudyTime(date); } @Override @@ -278,7 +287,7 @@ public class CourseServiceImpl extends ServiceImpl impl @Override public List getUserCourseBuy(Map param) { - MyUserEntity user = userDao.selectById(param.get("userId").toString()); + MyUserEntity user = ShiroUtils.getUser(); List resultList = new ArrayList<>(); List courseSociologyList = (List)param.get("courseSociologyList"); for (CourseSociologyEntity c : courseSociologyList){ @@ -329,16 +338,6 @@ public class CourseServiceImpl extends ServiceImpl impl 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){ - int i = studyingDao.selectCount(new LambdaQueryWrapper().eq(UserCourseStudying::getCourseId,co.getId()).eq(UserCourseStudying::getUserId,user.getId())); - co.setIsStudying(i>0?1:0); - 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); @@ -349,22 +348,33 @@ public class CourseServiceImpl extends ServiceImpl impl 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){ - int i = studyingDao.selectCount(new LambdaQueryWrapper().eq(UserCourseStudying::getCourseId,co.getId()).eq(UserCourseStudying::getUserId,user.getId())); - co.setIsStudying(i>0?1:0); - 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); + } + if(courseEntities!=null&&courseEntities.size()>0){ + for (CourseEntity co:courseEntities){ + //添加是否加入正在学习 + int i = studyingDao.selectCount(new LambdaQueryWrapper().eq(UserCourseStudying::getCourseId,co.getId()).eq(UserCourseStudying::getUserId,user.getId())); + co.setIsStudying(i>0?1:0); + 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, user.getId()).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); + } + } } - c.setCourseList(courseEntities); - return true; + co.setCourseCatalogueEntityList(courseCatalogueEntities); } + c.setCourseList(courseEntities); + return true; } return false; }