From 923c83290fb1abd8e6862456beb237d4075892d7 Mon Sep 17 00:00:00 2001 From: wangjinlei <751475802@qq.com> Date: Fri, 21 Jun 2024 15:15:43 +0800 Subject: [PATCH] bug --- .../entity/UserCourseVideoPositionEntity.java | 2 + ...ourseCatalogueChapterVideoServiceImpl.java | 1 + .../medical/controller/CourseController.java | 11 +++ .../medical/service/CourseService.java | 2 + .../service/impl/CourseServiceImpl.java | 92 ++++++++++++++++++- 5 files changed, 105 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/peanut/modules/common/entity/UserCourseVideoPositionEntity.java b/src/main/java/com/peanut/modules/common/entity/UserCourseVideoPositionEntity.java index d37ebd27..d367c0e2 100644 --- a/src/main/java/com/peanut/modules/common/entity/UserCourseVideoPositionEntity.java +++ b/src/main/java/com/peanut/modules/common/entity/UserCourseVideoPositionEntity.java @@ -22,6 +22,8 @@ public class UserCourseVideoPositionEntity { private Date createTime; + private Date updateTime; + @TableLogic private Integer delFlag; } diff --git a/src/main/java/com/peanut/modules/master/service/impl/CourseCatalogueChapterVideoServiceImpl.java b/src/main/java/com/peanut/modules/master/service/impl/CourseCatalogueChapterVideoServiceImpl.java index bb5db54f..f3eb8aae 100644 --- a/src/main/java/com/peanut/modules/master/service/impl/CourseCatalogueChapterVideoServiceImpl.java +++ b/src/main/java/com/peanut/modules/master/service/impl/CourseCatalogueChapterVideoServiceImpl.java @@ -145,6 +145,7 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl courseDetail = courseService.getCourseDetail(param.getId()); + return R.ok().put("data",courseDetail); + } + } diff --git a/src/main/java/com/peanut/modules/medical/service/CourseService.java b/src/main/java/com/peanut/modules/medical/service/CourseService.java index 0a96f3f1..e23ca04e 100644 --- a/src/main/java/com/peanut/modules/medical/service/CourseService.java +++ b/src/main/java/com/peanut/modules/medical/service/CourseService.java @@ -27,4 +27,6 @@ public interface CourseService extends IService { List getCourseExpire(Map param); + Map getCourseDetail(Integer id); + } 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 0442797e..3e28556c 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 @@ -14,9 +14,8 @@ import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; @Slf4j @Service("medicalCourseService") @@ -32,6 +31,22 @@ public class CourseServiceImpl extends ServiceImpl impl private CourseCatalogueDao courseCatalogueDao; @Autowired private UserCourseBuyDao courseBuyDao; + @Autowired + private ShopProductDao shopProductDao; + @Autowired + private UserVipDao userVipDao; + @Autowired + private UserCourseBuyDao userCourseBuyDao; + @Autowired + private CourseCatalogueChapterDao courseCatalogueChapterDao; + @Autowired + private CourseCatalogueChapterVideoDao courseCatalogueChapterVideoDao; + @Autowired + private UserCourseVideoPositionDao userCourseVideoPositionDao; + @Autowired + private MyUserDao myUserDao; + @Autowired + private CourseToSociologyDao courseToSociologyDao; @Override public Page getMedicalCourseList(ParamTo param) { @@ -168,4 +183,75 @@ public class CourseServiceImpl extends ServiceImpl impl return null; } } + + + @Override + public Map getCourseDetail(Integer id) { + Map flag = new HashMap<>(); + Integer uId = ShiroUtils.getUId(); + //基础信息 + CourseEntity course = this.getById(id); + flag.put("course",course); + //课程相关商品 + if (StringUtils.isNotEmpty(course.getRelationProductIds())){ + String[] ids = course.getRelationProductIds().split(","); + List shopProductList = shopProductDao.selectList(new LambdaQueryWrapper() + .in(ShopProduct::getProductId, ids) + .orderByAsc(ShopProduct::getSort)); + flag.put("shopProductList",shopProductList); + } + //获取用户身份和此课程的关系 + MyUserEntity userEntity = myUserDao.selectById(uId); + HashMap userVip = new HashMap<>(); + userVip.put("vip",userEntity.getVip()); + if (userEntity.getVip().equals("3")){ + Integer integer = courseToSociologyDao.selectCount(new LambdaQueryWrapper().eq(CourseToSociologyEntity::getCourseId, id)); + userVip.put("vipCan",integer>0?"1":"0"); + } + flag.put("vip",userVip); + //目录信息 + List courseCatalogueEntities = courseCatalogueDao.selectList(new LambdaQueryWrapper().eq(CourseCatalogueEntity::getCourseId, id).orderByAsc(CourseCatalogueEntity::getSort)); + + for (CourseCatalogueEntity c :courseCatalogueEntities){ + List userCourseBuyList = userCourseBuyDao.selectList(new LambdaQueryWrapper().eq(UserCourseBuyEntity::getUserId, uId).eq(UserCourseBuyEntity::getCatalogueId, c.getId())); + //完成度、上次学习时间 + catalogueCompletion(c); + if (userCourseBuyList.size() > 0) { + c.setIsBuy(1); + c.setStartTime(userCourseBuyList.get(0).getStartTime()); + c.setEndTime(userCourseBuyList.get(0).getEndTime()); + }else { + c.setIsBuy(0); + } + } + flag.put("catalogues",courseCatalogueEntities); + return flag; + } + + 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; + } + 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).getUpdateTime().getTime()?date:videoPositionList.get(0).getUpdateTime(); + }else { + date = videoPositionList.get(0).getUpdateTime(); + } + } + } + int completion = courseCatalogueChapterEntities.size()==0?0:act * 100 / courseCatalogueChapterEntities.size(); + c.setCompletion(completion); + c.setLastStudyTime(date); + } + + }