初始化视频首次加载的时间

This commit is contained in:
wangjinlei
2024-04-24 19:12:30 +08:00
parent 872b9939f9
commit 0764d8dce4
6 changed files with 92 additions and 14 deletions

View File

@@ -0,0 +1,9 @@
package com.peanut.modules.common.dao;
import com.github.yulichang.base.MPJBaseMapper;
import com.peanut.modules.common.entity.UserCourseVideoPositionEntity;
import org.apache.ibatis.annotations.Mapper;
@Mapper
public interface UserCourseVideoPositionDao extends MPJBaseMapper<UserCourseVideoPositionEntity> {
}

View File

@@ -30,4 +30,6 @@ public class CourseCatalogueChapterVideoEntity {
@TableField(exist = false)
private String playAuth;
@TableField(exist = false)
private UserCourseVideoPositionEntity userCourseVideoPositionEntity;
}

View File

@@ -0,0 +1,29 @@
package com.peanut.modules.common.entity;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableLogic;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import java.util.Date;
@Data
@TableName("user_course_video_position")
public class UserCourseVideoPositionEntity {
@TableId
private Integer id;
private Integer userId;
private Integer videoId;
private Integer position;
private Integer duration;
private Date createTime;
@TableLogic
private Integer delFlag;
}

View File

@@ -1,18 +1,13 @@
package com.peanut.modules.master.service.impl;
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.utils.ShiroUtils;
import com.peanut.common.utils.SpdbUtil;
import com.peanut.modules.common.dao.CourseCatalogueChapterDao;
import com.peanut.modules.common.dao.CourseCatalogueChapterVideoDao;
import com.peanut.modules.common.dao.CourseCatalogueDao;
import com.peanut.modules.common.dao.UserToCourseDao;
import com.peanut.modules.common.entity.CourseCatalogueChapterEntity;
import com.peanut.modules.common.entity.CourseCatalogueChapterVideoEntity;
import com.peanut.modules.common.entity.CourseCatalogueEntity;
import com.peanut.modules.common.entity.UserToCourseEntity;
import com.peanut.modules.common.dao.*;
import com.peanut.modules.common.entity.*;
import com.peanut.modules.common.to.ParamTo;
import com.peanut.modules.master.service.CourseCatalogueChapterVideoService;
import lombok.extern.slf4j.Slf4j;
@@ -22,6 +17,7 @@ import org.springframework.stereotype.Service;
import javax.xml.ws.soap.Addressing;
import java.util.Date;
import java.util.List;
import java.util.Map;
@Slf4j
@Service("masterCourseCatalogueChapterVideoService")
@@ -32,6 +28,9 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl<CourseCa
private CourseCatalogueDao courseCatalogueDao;
@Autowired
private UserToCourseDao userToCourseDao;
@Autowired
private UserCourseVideoPositionDao userCourseVideoPositionDao;
@Override
public Page getCourseCatalogueChapterVideoList(ParamTo param) {
LambdaQueryWrapper<CourseCatalogueChapterVideoEntity> wrapper = new LambdaQueryWrapper<>();
@@ -63,9 +62,44 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl<CourseCa
}
//加密视频组装playauth
if(video.getType()==1){
String playAuth = SpdbUtil.getPlayAuth(video.getVideo());
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);
}
return video;
}
private UserCourseVideoPositionEntity getVideoPosition(CourseCatalogueChapterVideoEntity video,int userId,int duration){
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;
}
}
}
}

View File

@@ -107,7 +107,8 @@ public class CourseController {
@RequestMapping("/getPlayAuth")
public R getPlayAuth(@RequestBody Map<String,String> map) throws Exception {
String playAuth = SpdbUtil.getPlayAuth(map.get("vid"));
GetVideoPlayAuthResponse vid = SpdbUtil.getPlayAuth(map.get("vid"));
String playAuth = vid.getBody().getPlayAuth();
return R.ok().put("playAuth",playAuth);
}