|
|
@@ -10,19 +10,24 @@ import cn.reghao.tnb.content.api.dto.VideoUrl;
|
|
|
import cn.reghao.tnb.content.api.dto.VideoUrls;
|
|
|
import cn.reghao.tnb.content.app.vod.db.mapper.PlayRecordMapper;
|
|
|
import cn.reghao.tnb.content.app.vod.db.mapper.VideoPostMapper;
|
|
|
+import cn.reghao.tnb.content.app.vod.db.mapper.VideoPostTagMapper;
|
|
|
import cn.reghao.tnb.content.app.vod.db.repository.VideoRepository;
|
|
|
import cn.reghao.tnb.content.app.vod.model.po.PlayRecord;
|
|
|
import cn.reghao.tnb.content.app.vod.model.po.VideoPost;
|
|
|
import cn.reghao.tnb.content.api.dto.VideoRecordCard;
|
|
|
+import cn.reghao.tnb.content.app.vod.service.ContentPermission;
|
|
|
import cn.reghao.tnb.content.app.vod.service.VideoPlayService;
|
|
|
+import cn.reghao.tnb.content.app.vod.service.rcmd.UserInterestBased;
|
|
|
import cn.reghao.tnb.message.api.dto.MediaProgress;
|
|
|
import cn.reghao.tnb.user.api.dto.UserCard;
|
|
|
import cn.reghao.tnb.user.api.iface.UserService;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
+import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Objects;
|
|
|
+import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
@@ -40,12 +45,19 @@ public class VideoPlayServiceImpl implements VideoPlayService {
|
|
|
private final VideoPostMapper videoPostMapper;
|
|
|
private final PlayRecordMapper playRecordMapper;
|
|
|
private final VideoRepository videoRepository;
|
|
|
+ private final VideoPostTagMapper videoPostTagMapper;
|
|
|
+ private final UserInterestBased userInterestBased;
|
|
|
+ private final ContentPermission contentPermission;
|
|
|
|
|
|
public VideoPlayServiceImpl(VideoPostMapper videoPostMapper, PlayRecordMapper playRecordMapper,
|
|
|
- VideoRepository videoRepository) {
|
|
|
+ VideoRepository videoRepository, VideoPostTagMapper videoPostTagMapper,
|
|
|
+ UserInterestBased userInterestBased, ContentPermission contentPermission) {
|
|
|
this.videoPostMapper = videoPostMapper;
|
|
|
this.playRecordMapper = playRecordMapper;
|
|
|
this.videoRepository = videoRepository;
|
|
|
+ this.videoPostTagMapper = videoPostTagMapper;
|
|
|
+ this.userInterestBased = userInterestBased;
|
|
|
+ this.contentPermission = contentPermission;
|
|
|
}
|
|
|
|
|
|
public VideoUrls getVideoPlayData(String videoId) {
|
|
|
@@ -55,7 +67,6 @@ public class VideoPlayServiceImpl implements VideoPlayService {
|
|
|
currentTime = getCurrentTime(loginUser, videoId);
|
|
|
}
|
|
|
|
|
|
- // TODO 判断当前请求是否具备访问 video 需要的权限
|
|
|
VideoPost videoPost = videoPostMapper.findByVideoId(videoId);
|
|
|
String videoFileId = videoPost.getVideoFileId();
|
|
|
List<VideoUrlDto> list = videoRepository.findVideoUrls(videoFileId);
|
|
|
@@ -65,6 +76,12 @@ public class VideoPlayServiceImpl implements VideoPlayService {
|
|
|
|
|
|
String urlType = list.get(0).getType();
|
|
|
int scope = videoPost.getScope();
|
|
|
+ Set<Integer> userScopes = new HashSet<>(contentPermission.getUserScopes());
|
|
|
+ // 判断当前请求是否具备访问 video 需要的权限
|
|
|
+ if (!userScopes.contains(scope)) {
|
|
|
+ return new VideoUrls();
|
|
|
+ }
|
|
|
+
|
|
|
if (scope != PostScope.PUBLIC.getCode()) {
|
|
|
int channelId = videoPost.getChannelId();
|
|
|
try {
|
|
|
@@ -93,27 +110,6 @@ public class VideoPlayServiceImpl implements VideoPlayService {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /*public VideoUrls getVideoPlayData1(String videoId) {
|
|
|
- double currentTime = 0.0;
|
|
|
- long loginUser = UserContext.getUser();
|
|
|
- if (loginUser != -1) {
|
|
|
- currentTime = getCurrentTime(loginUser, videoId);
|
|
|
- }
|
|
|
-
|
|
|
- VideoPost videoPost = videoPostMapper.findByVideoId(videoId);
|
|
|
- Integer channelId = videoPost.getChannelId();
|
|
|
- String videoFileId = videoPost.getVideoFileId();
|
|
|
- String signedUrl = aliService.getSignedUrl(videoFileId);
|
|
|
- if (signedUrl == null) {
|
|
|
- return new VideoUrls();
|
|
|
- }
|
|
|
-
|
|
|
- String quality = "720p";
|
|
|
- List<VideoUrl> videoUrls = List.of(new VideoUrl(quality, signedUrl));
|
|
|
- VideoUrls videoUrlsRet = new VideoUrls(currentTime, VideoUrlType.mp4.name(), videoUrls);
|
|
|
- return videoUrlsRet;
|
|
|
- }*/
|
|
|
-
|
|
|
private Double getCurrentTime(long userId, String videoId) {
|
|
|
Double currentTime = playRecordMapper.findCurrentTime(userId, videoId);
|
|
|
return currentTime != null ? currentTime : 0.0;
|
|
|
@@ -136,6 +132,13 @@ public class VideoPlayServiceImpl implements VideoPlayService {
|
|
|
playRecord.setEnded(ended);
|
|
|
playRecordMapper.update(playRecord);
|
|
|
}
|
|
|
+
|
|
|
+ addUserInterest(userId, videoId);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void addUserInterest(long userId, String videoId) {
|
|
|
+ List<String> tagIds = videoPostTagMapper.findVideoTags(videoId);
|
|
|
+ tagIds.forEach(tagId -> userInterestBased.addUserInterests(userId, tagId));
|
|
|
}
|
|
|
|
|
|
public PageScroll<VideoRecordCard> getPlayRecord(long nextId, long userId) {
|