初始化视频首次加载的时间
This commit is contained in:
@@ -6,9 +6,11 @@ import com.aliyun.vod20170321.Client;
|
|||||||
import com.aliyun.vod20170321.models.GetVideoPlayAuthRequest;
|
import com.aliyun.vod20170321.models.GetVideoPlayAuthRequest;
|
||||||
import com.aliyun.vod20170321.models.GetVideoPlayAuthResponse;
|
import com.aliyun.vod20170321.models.GetVideoPlayAuthResponse;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
|
||||||
public class SpdbUtil {
|
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()
|
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
|
||||||
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
|
// 必填,请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID。
|
||||||
.setAccessKeyId("LTAI5tMKmWhPfnPsz2J3bfxL")
|
.setAccessKeyId("LTAI5tMKmWhPfnPsz2J3bfxL")
|
||||||
@@ -22,14 +24,15 @@ public class SpdbUtil {
|
|||||||
try {
|
try {
|
||||||
// 复制代码运行请自行打印 API 的返回值
|
// 复制代码运行请自行打印 API 的返回值
|
||||||
GetVideoPlayAuthResponse videoPlayAuthWithOptions = client.getVideoPlayAuthWithOptions(getVideoPlayAuthRequest, runtimeOptions);
|
GetVideoPlayAuthResponse videoPlayAuthWithOptions = client.getVideoPlayAuthWithOptions(getVideoPlayAuthRequest, runtimeOptions);
|
||||||
return videoPlayAuthWithOptions.getBody().getPlayAuth();
|
return videoPlayAuthWithOptions;
|
||||||
|
// return videoPlayAuthWithOptions.getBody().getPlayAuth();
|
||||||
} catch (TeaException error) {
|
} catch (TeaException error) {
|
||||||
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
|
// 此处仅做打印展示,请谨慎对待异常处理,在工程项目中切勿直接忽略异常。
|
||||||
// 错误 message
|
// 错误 message
|
||||||
System.out.println(error.getMessage());
|
System.out.println(error.getMessage());
|
||||||
// 诊断地址
|
// 诊断地址
|
||||||
System.out.println(error.getData().get("Recommend"));
|
System.out.println(error.getData().get("Recommend"));
|
||||||
return "error";
|
return null;
|
||||||
|
|
||||||
} catch (Exception _error) {
|
} catch (Exception _error) {
|
||||||
TeaException error = new TeaException(_error.getMessage(), _error);
|
TeaException error = new TeaException(_error.getMessage(), _error);
|
||||||
@@ -38,7 +41,7 @@ public class SpdbUtil {
|
|||||||
System.out.println(error.getMessage());
|
System.out.println(error.getMessage());
|
||||||
// 诊断地址
|
// 诊断地址
|
||||||
System.out.println(error.getData().get("Recommend"));
|
System.out.println(error.getData().get("Recommend"));
|
||||||
return "error";
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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> {
|
||||||
|
}
|
||||||
@@ -30,4 +30,6 @@ public class CourseCatalogueChapterVideoEntity {
|
|||||||
|
|
||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
private String playAuth;
|
private String playAuth;
|
||||||
|
@TableField(exist = false)
|
||||||
|
private UserCourseVideoPositionEntity userCourseVideoPositionEntity;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -1,18 +1,13 @@
|
|||||||
package com.peanut.modules.master.service.impl;
|
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.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||||
import com.peanut.common.utils.ShiroUtils;
|
import com.peanut.common.utils.ShiroUtils;
|
||||||
import com.peanut.common.utils.SpdbUtil;
|
import com.peanut.common.utils.SpdbUtil;
|
||||||
import com.peanut.modules.common.dao.CourseCatalogueChapterDao;
|
import com.peanut.modules.common.dao.*;
|
||||||
import com.peanut.modules.common.dao.CourseCatalogueChapterVideoDao;
|
import com.peanut.modules.common.entity.*;
|
||||||
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.to.ParamTo;
|
import com.peanut.modules.common.to.ParamTo;
|
||||||
import com.peanut.modules.master.service.CourseCatalogueChapterVideoService;
|
import com.peanut.modules.master.service.CourseCatalogueChapterVideoService;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
@@ -22,6 +17,7 @@ import org.springframework.stereotype.Service;
|
|||||||
import javax.xml.ws.soap.Addressing;
|
import javax.xml.ws.soap.Addressing;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
@Slf4j
|
@Slf4j
|
||||||
@Service("masterCourseCatalogueChapterVideoService")
|
@Service("masterCourseCatalogueChapterVideoService")
|
||||||
@@ -32,6 +28,9 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl<CourseCa
|
|||||||
private CourseCatalogueDao courseCatalogueDao;
|
private CourseCatalogueDao courseCatalogueDao;
|
||||||
@Autowired
|
@Autowired
|
||||||
private UserToCourseDao userToCourseDao;
|
private UserToCourseDao userToCourseDao;
|
||||||
|
@Autowired
|
||||||
|
private UserCourseVideoPositionDao userCourseVideoPositionDao;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Page getCourseCatalogueChapterVideoList(ParamTo param) {
|
public Page getCourseCatalogueChapterVideoList(ParamTo param) {
|
||||||
LambdaQueryWrapper<CourseCatalogueChapterVideoEntity> wrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<CourseCatalogueChapterVideoEntity> wrapper = new LambdaQueryWrapper<>();
|
||||||
@@ -63,9 +62,44 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl<CourseCa
|
|||||||
}
|
}
|
||||||
//加密视频组装playauth
|
//加密视频组装playauth
|
||||||
if(video.getType()==1){
|
if(video.getType()==1){
|
||||||
String playAuth = SpdbUtil.getPlayAuth(video.getVideo());
|
GetVideoPlayAuthResponse p = SpdbUtil.getPlayAuth(video.getVideo());
|
||||||
|
String playAuth = p.getBody().getPlayAuth();
|
||||||
video.setPlayAuth(playAuth);
|
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;
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -107,7 +107,8 @@ public class CourseController {
|
|||||||
|
|
||||||
@RequestMapping("/getPlayAuth")
|
@RequestMapping("/getPlayAuth")
|
||||||
public R getPlayAuth(@RequestBody Map<String,String> map) throws Exception {
|
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);
|
return R.ok().put("playAuth",playAuth);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user