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

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

@@ -6,9 +6,11 @@ import com.aliyun.vod20170321.Client;
import com.aliyun.vod20170321.models.GetVideoPlayAuthRequest;
import com.aliyun.vod20170321.models.GetVideoPlayAuthResponse;
import java.util.HashMap;
public class SpdbUtil {
public static String getPlayAuth(String vid) throws Exception {
public static GetVideoPlayAuthResponse getPlayAuth(String vid) throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
.setAccessKeyId("LTAI5tMKmWhPfnPsz2J3bfxL")
@@ -22,14 +24,15 @@ public class SpdbUtil {
try {
// 复制代码运行请自行打印 API 的返回值
GetVideoPlayAuthResponse videoPlayAuthWithOptions = client.getVideoPlayAuthWithOptions(getVideoPlayAuthRequest, runtimeOptions);
return videoPlayAuthWithOptions.getBody().getPlayAuth();
return videoPlayAuthWithOptions;
// return videoPlayAuthWithOptions.getBody().getPlayAuth();
} catch (TeaException error) {
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
return "error";
return null;
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
@@ -38,7 +41,7 @@ public class SpdbUtil {
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
return "error";
return null;
}
}

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);
}