diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java index 248dd8b2..751a8c58 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/api/StudyCourseApi.java @@ -1,9 +1,14 @@ package com.xboe.school.study.api; +import java.math.BigDecimal; +import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.function.Function; +import java.util.stream.Collectors; +import cn.hutool.core.collection.CollectionUtil; import com.alibaba.nacos.shaded.com.google.common.util.concurrent.RateLimiter; import com.xboe.api.ThirdApi; import com.xboe.constants.CacheName; @@ -253,6 +258,36 @@ public class StudyCourseApi extends ApiBaseController{ rs.put("progress", sc.getProgress()); //查询上次学习的是什么资源。查询用户的学习情况 List items=studyService.findByStudyId(sc.getId()); + // 和内容匹配,根据内容的视频时长,计算学习进度 + if(CollectionUtil.isNotEmpty(items) && CollectionUtil.isNotEmpty(cclist)){ + // 根据ID转换map + Map contentMap = cclist.stream().collect(Collectors.toMap(CourseContent::getId, Function.identity())); + for (StudyCourseItem item : items) { + CourseContent content = contentMap.get(item.getContentId()); + if(null == content){ + continue; + } + + if(null==item.getLastStudyTime() + || item.getLastStudyTime()<=0 + || null==content.getDuration() + || content.getDuration()<=0){ + continue; + } + + BigDecimal lastStudyTime = new BigDecimal(item.getLastStudyTime()); + BigDecimal duration = new BigDecimal(content.getDuration()); + BigDecimal progress = lastStudyTime.divide(duration, 10, RoundingMode.HALF_UP); + if(progress.compareTo(BigDecimal.ZERO) < 0){ + progress = BigDecimal.ZERO; + }else if(progress.compareTo(BigDecimal.ONE) > 0){ + progress = BigDecimal.ONE; + } + + item.setProgressVideo(progress); + } + } + rs.put("contentStudys",items);//学习的内容 } diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/entity/StudyCourseItem.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/entity/StudyCourseItem.java index 09fad657..7b442d7f 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/entity/StudyCourseItem.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/entity/StudyCourseItem.java @@ -1,5 +1,6 @@ package com.xboe.school.study.entity; +import java.math.BigDecimal; import java.time.LocalDateTime; import javax.persistence.Column; @@ -128,5 +129,11 @@ public class StudyCourseItem extends IdEntity { */ @Column(name = "status",length=1) private Integer status; - + + /** + * 视频播放进度 + * */ +// @Column(name = "progress_video") + private BigDecimal progressVideo; + } diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/IStudyService.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/IStudyService.java index 5dcce229..cc4a66e4 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/IStudyService.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/IStudyService.java @@ -8,7 +8,6 @@ import com.xboe.common.PageList; import com.xboe.school.study.dto.StudyContentDto; import com.xboe.school.study.entity.StudyCourseItem; import com.xboe.school.study.entity.StudyTime; -import com.xboe.system.user.entity.User; /** * 学习情况处理,比较综合一个处理类 @@ -36,11 +35,12 @@ public interface IStudyService { /** * 更新最后的学习时间,及学习时间点 + * * @param studyContentId * @param lastStudyTime * @param aid */ - void updateLastTime(String studyContentId,int lastStudyTime,String aid); + void updateLastTime(String studyContentId, int lastStudyTime, String aid); /** * 资源学习记录 diff --git a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyServiceImpl.java b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyServiceImpl.java index 39aadb6b..589547d3 100644 --- a/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyServiceImpl.java +++ b/servers/boe-server-all/src/main/java/com/xboe/school/study/service/impl/StudyServiceImpl.java @@ -10,10 +10,6 @@ import java.util.Map; import javax.transaction.Transactional; -import com.xboe.module.article.entity.Article; -import com.xboe.module.interaction.entity.Shares; -import com.xboe.school.study.entity.StudyCourse; -import com.xboe.system.user.entity.User; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.StringRedisTemplate;