时长信息转到video主体 增加多线程获取时间方法

This commit is contained in:
wangjinlei
2024-04-26 10:44:48 +08:00
parent 6b2e37b29b
commit 5c7d424f5e
11 changed files with 154 additions and 42 deletions

View File

@@ -4,6 +4,7 @@ import com.aliyun.vod20170321.models.GetVideoPlayAuthResponse;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.peanut.common.service.AsyncService;
import com.peanut.common.utils.ShiroUtils;
import com.peanut.common.utils.SpdbUtil;
import com.peanut.modules.common.dao.*;
@@ -30,11 +31,13 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl<CourseCa
private UserToCourseDao userToCourseDao;
@Autowired
private UserCourseVideoPositionDao userCourseVideoPositionDao;
@Autowired
private AsyncService asyncService;
@Override
public Page getCourseCatalogueChapterVideoList(ParamTo param) {
LambdaQueryWrapper<CourseCatalogueChapterVideoEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(CourseCatalogueChapterVideoEntity::getChapterId,param.getId());
wrapper.eq(CourseCatalogueChapterVideoEntity::getChapterId, param.getId());
wrapper.orderByAsc(CourseCatalogueChapterVideoEntity::getSort);
Page<CourseCatalogueChapterVideoEntity> page = this.page(new Page<>(param.getPage(), param.getLimit()), wrapper);
return page;
@@ -42,17 +45,21 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl<CourseCa
@Override
public CourseCatalogueChapterVideoEntity checkVideo(CourseCatalogueChapterVideoEntity video) throws Exception {
public CourseCatalogueChapterVideoEntity checkVideo(CourseCatalogueChapterVideoEntity videoEntity) throws Exception {
CourseCatalogueChapterVideoEntity video = this.getById(videoEntity.getId());
if (video.getDuration() == 0) {
asyncService.pushDurationToVideo(video.getId());
}
CourseCatalogueChapterEntity courseCatalogueChapterEntity = courseCatalogueChapterDao.selectById(video.getChapterId());
CourseCatalogueEntity courseCatalogueEntity = courseCatalogueDao.selectById(courseCatalogueChapterEntity.getCatalogueId());
Integer uId = ShiroUtils.getUId();
List<UserToCourseEntity> userToCourseEntities = userToCourseDao.selectList(new LambdaQueryWrapper<UserToCourseEntity>().eq(UserToCourseEntity::getUserId, uId).eq(UserToCourseEntity::getCourseId, courseCatalogueEntity.getCourseId()));
//用户课程足迹
if(userToCourseEntities.size()!=0){
if (userToCourseEntities.size() != 0) {
UserToCourseEntity userToCourseEntity = userToCourseEntities.get(0);
userToCourseEntity.setUpdateTime(new Date());
userToCourseDao.updateById(userToCourseEntity);
}else{
} else {
UserToCourseEntity userToCourseEntity = new UserToCourseEntity();
userToCourseEntity.setUserId(uId);
userToCourseEntity.setCourseId(courseCatalogueEntity.getCourseId());
@@ -61,61 +68,45 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl<CourseCa
userToCourseDao.insert(userToCourseEntity);
}
//加密视频组装playauth
if(video.getType()==1){
if (video.getType() == 1) {
GetVideoPlayAuthResponse p = SpdbUtil.getPlayAuth(video.getVideo());
String playAuth = p.getBody().getPlayAuth();
video.setPlayAuth(playAuth);
//获取播放记录
UserCourseVideoPositionEntity videoPosition = getVideoPosition(video, uId, p.getBody().getVideoMeta().getDuration().intValue());
video.setUserCourseVideoPositionEntity(videoPosition);
}else{
UserCourseVideoPositionEntity videoPosition = getVideoPosition(video, uId, 0);
video.setUserCourseVideoPositionEntity(videoPosition);
}
UserCourseVideoPositionEntity videoPosition = getVideoPosition(video, uId);
video.setUserCourseVideoPositionEntity(videoPosition);
return video;
}
@Override
public void saveCoursePosition(int uId, int videoId, int position) {
LambdaQueryWrapper<UserCourseVideoPositionEntity> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(UserCourseVideoPositionEntity::getUserId,uId);
wrapper.eq(UserCourseVideoPositionEntity::getVideoId,videoId);
wrapper.eq(UserCourseVideoPositionEntity::getUserId, uId);
wrapper.eq(UserCourseVideoPositionEntity::getVideoId, videoId);
List<UserCourseVideoPositionEntity> userCourseVideoPositionEntities = userCourseVideoPositionDao.selectList(wrapper);
if(userCourseVideoPositionEntities.size()==0){
if (userCourseVideoPositionEntities.size() == 0) {
UserCourseVideoPositionEntity userCourseVideoPositionEntity = new UserCourseVideoPositionEntity();
userCourseVideoPositionEntity.setUserId(uId);
userCourseVideoPositionEntity.setVideoId(videoId);
userCourseVideoPositionDao.insert(userCourseVideoPositionEntity);
}else {
} else {
UserCourseVideoPositionEntity userCourseVideoPositionEntity = userCourseVideoPositionEntities.get(0);
userCourseVideoPositionEntity.setPosition(position);
userCourseVideoPositionDao.updateById(userCourseVideoPositionEntity);
}
}
private UserCourseVideoPositionEntity getVideoPosition(CourseCatalogueChapterVideoEntity video, int userId, int duration){
private UserCourseVideoPositionEntity getVideoPosition(CourseCatalogueChapterVideoEntity video, int userId) {
List<UserCourseVideoPositionEntity> userCourseVideoPositionEntities = userCourseVideoPositionDao.selectList(new LambdaQueryWrapper<UserCourseVideoPositionEntity>().eq(UserCourseVideoPositionEntity::getUserId, userId).eq(UserCourseVideoPositionEntity::getVideoId, video.getId()));
if(video.getType()==0){
if(userCourseVideoPositionEntities.size()>0){
return userCourseVideoPositionEntities.get(0);
}else{
UserCourseVideoPositionEntity userCourseVideoPositionEntity = new UserCourseVideoPositionEntity();
userCourseVideoPositionEntity.setUserId(userId);
userCourseVideoPositionEntity.setVideoId(video.getId());
userCourseVideoPositionDao.insert(userCourseVideoPositionEntity);
return userCourseVideoPositionEntity;
}
}else{//加密视频
if(userCourseVideoPositionEntities.size()>0){
return userCourseVideoPositionEntities.get(0);
}else{
UserCourseVideoPositionEntity userCourseVideoPositionEntity = new UserCourseVideoPositionEntity();
userCourseVideoPositionEntity.setUserId(userId);
userCourseVideoPositionEntity.setVideoId(video.getId());
userCourseVideoPositionEntity.setDuration(duration);
userCourseVideoPositionDao.insert(userCourseVideoPositionEntity);
return userCourseVideoPositionEntity;
}
if (userCourseVideoPositionEntities.size() > 0) {
return userCourseVideoPositionEntities.get(0);
} else {
UserCourseVideoPositionEntity userCourseVideoPositionEntity = new UserCourseVideoPositionEntity();
userCourseVideoPositionEntity.setUserId(userId);
userCourseVideoPositionEntity.setVideoId(video.getId());
userCourseVideoPositionEntity.setPosition(0);
userCourseVideoPositionDao.insert(userCourseVideoPositionEntity);
return userCourseVideoPositionEntity;
}
}
}