diff --git a/src/main/java/com/peanut/common/utils/SpdbUtil.java b/src/main/java/com/peanut/common/utils/SpdbUtil.java index fb5de3c6..7615fafd 100644 --- a/src/main/java/com/peanut/common/utils/SpdbUtil.java +++ b/src/main/java/com/peanut/common/utils/SpdbUtil.java @@ -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; } } diff --git a/src/main/java/com/peanut/modules/common/dao/UserCourseVideoPositionDao.java b/src/main/java/com/peanut/modules/common/dao/UserCourseVideoPositionDao.java new file mode 100644 index 00000000..d2689091 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/dao/UserCourseVideoPositionDao.java @@ -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 { +} diff --git a/src/main/java/com/peanut/modules/common/entity/CourseCatalogueChapterVideoEntity.java b/src/main/java/com/peanut/modules/common/entity/CourseCatalogueChapterVideoEntity.java index e79fc5fa..c4253b43 100644 --- a/src/main/java/com/peanut/modules/common/entity/CourseCatalogueChapterVideoEntity.java +++ b/src/main/java/com/peanut/modules/common/entity/CourseCatalogueChapterVideoEntity.java @@ -30,4 +30,6 @@ public class CourseCatalogueChapterVideoEntity { @TableField(exist = false) private String playAuth; + @TableField(exist = false) + private UserCourseVideoPositionEntity userCourseVideoPositionEntity; } diff --git a/src/main/java/com/peanut/modules/common/entity/UserCourseVideoPositionEntity.java b/src/main/java/com/peanut/modules/common/entity/UserCourseVideoPositionEntity.java new file mode 100644 index 00000000..e35c3796 --- /dev/null +++ b/src/main/java/com/peanut/modules/common/entity/UserCourseVideoPositionEntity.java @@ -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; +} diff --git a/src/main/java/com/peanut/modules/master/service/impl/CourseCatalogueChapterVideoServiceImpl.java b/src/main/java/com/peanut/modules/master/service/impl/CourseCatalogueChapterVideoServiceImpl.java index e670cea4..085486ab 100644 --- a/src/main/java/com/peanut/modules/master/service/impl/CourseCatalogueChapterVideoServiceImpl.java +++ b/src/main/java/com/peanut/modules/master/service/impl/CourseCatalogueChapterVideoServiceImpl.java @@ -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 wrapper = new LambdaQueryWrapper<>(); @@ -63,9 +62,44 @@ public class CourseCatalogueChapterVideoServiceImpl extends ServiceImpl userCourseVideoPositionEntities = userCourseVideoPositionDao.selectList(new LambdaQueryWrapper().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; + } + } + } } diff --git a/src/main/java/com/peanut/modules/sociology/controller/CourseController.java b/src/main/java/com/peanut/modules/sociology/controller/CourseController.java index 0e686271..768becd1 100644 --- a/src/main/java/com/peanut/modules/sociology/controller/CourseController.java +++ b/src/main/java/com/peanut/modules/sociology/controller/CourseController.java @@ -107,7 +107,8 @@ public class CourseController { @RequestMapping("/getPlayAuth") public R getPlayAuth(@RequestBody Map 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); }