|
@@ -1,32 +1,27 @@
|
|
|
package cn.reghao.tnb.content.app.vod.service.impl;
|
|
package cn.reghao.tnb.content.app.vod.service.impl;
|
|
|
|
|
|
|
|
import cn.reghao.jutil.web.WebResult;
|
|
import cn.reghao.jutil.web.WebResult;
|
|
|
-import cn.reghao.jutil.jdk.thread.ThreadPoolWrapper;
|
|
|
|
|
import cn.reghao.tnb.common.db.PageScroll;
|
|
import cn.reghao.tnb.common.db.PageScroll;
|
|
|
import cn.reghao.tnb.content.api.dto.VideoCard;
|
|
import cn.reghao.tnb.content.api.dto.VideoCard;
|
|
|
import cn.reghao.tnb.content.api.dto.VideoPostCard;
|
|
import cn.reghao.tnb.content.api.dto.VideoPostCard;
|
|
|
import cn.reghao.tnb.content.app.util.redis.ds.RedisList;
|
|
import cn.reghao.tnb.content.app.util.redis.ds.RedisList;
|
|
|
import cn.reghao.tnb.content.app.vod.db.mapper.VideoPostMapper;
|
|
import cn.reghao.tnb.content.app.vod.db.mapper.VideoPostMapper;
|
|
|
import cn.reghao.tnb.content.app.vod.model.po.VideoPost;
|
|
import cn.reghao.tnb.content.app.vod.model.po.VideoPost;
|
|
|
-import cn.reghao.tnb.content.api.dto.BannerVideo;
|
|
|
|
|
import cn.reghao.tnb.content.app.vod.model.query.VideoQuery;
|
|
import cn.reghao.tnb.content.app.vod.model.query.VideoQuery;
|
|
|
|
|
+import cn.reghao.tnb.content.app.vod.model.vo.BannerVideoVO;
|
|
|
import cn.reghao.tnb.content.app.vod.service.ContentPermission;
|
|
import cn.reghao.tnb.content.app.vod.service.ContentPermission;
|
|
|
import cn.reghao.tnb.content.app.vod.service.RecommendService;
|
|
import cn.reghao.tnb.content.app.vod.service.RecommendService;
|
|
|
import cn.reghao.tnb.content.app.vod.service.VideoPostQuery;
|
|
import cn.reghao.tnb.content.app.vod.service.VideoPostQuery;
|
|
|
import cn.reghao.tnb.content.app.vod.service.rcmd.task.RcmdData;
|
|
import cn.reghao.tnb.content.app.vod.service.rcmd.task.RcmdData;
|
|
|
import cn.reghao.tnb.content.app.vod.service.rcmd.task.RcmdProducer;
|
|
import cn.reghao.tnb.content.app.vod.service.rcmd.task.RcmdProducer;
|
|
|
import cn.reghao.tnb.content.app.vod.service.rcmd.RedisKeys;
|
|
import cn.reghao.tnb.content.app.vod.service.rcmd.RedisKeys;
|
|
|
-import cn.reghao.tnb.content.app.vod.service.rcmd.UserInterestBased;
|
|
|
|
|
-import cn.reghao.tnb.content.app.util.redis.ds.RedisHash;
|
|
|
|
|
import cn.reghao.tnb.content.app.util.redis.ds.RedisSet;
|
|
import cn.reghao.tnb.content.app.util.redis.ds.RedisSet;
|
|
|
-import cn.reghao.tnb.content.app.util.redis.ds.RedisSortedSet;
|
|
|
|
|
import cn.reghao.tnb.user.api.iface.UserService;
|
|
import cn.reghao.tnb.user.api.iface.UserService;
|
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
import org.apache.dubbo.config.annotation.DubboReference;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
|
|
import java.time.LocalDateTime;
|
|
import java.time.LocalDateTime;
|
|
|
import java.util.*;
|
|
import java.util.*;
|
|
|
-import java.util.concurrent.ExecutorService;
|
|
|
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -38,29 +33,20 @@ public class RecommendServiceImpl implements RecommendService {
|
|
|
@DubboReference(check = false, retries = 0, timeout = 3000)
|
|
@DubboReference(check = false, retries = 0, timeout = 3000)
|
|
|
private UserService userService;
|
|
private UserService userService;
|
|
|
|
|
|
|
|
- private final ExecutorService threadPool = ThreadPoolWrapper.threadPool("rcmd-task", 20);
|
|
|
|
|
private final int pageSize = 12;
|
|
private final int pageSize = 12;
|
|
|
- private final String bannerKey = "tnb:content:video:banner";
|
|
|
|
|
- private final RedisSortedSet sortedSet;
|
|
|
|
|
- private final RedisHash<VideoCard> redisHash;
|
|
|
|
|
private final ContentPermission contentPermission;
|
|
private final ContentPermission contentPermission;
|
|
|
private final VideoPostMapper videoPostMapper;
|
|
private final VideoPostMapper videoPostMapper;
|
|
|
private final VideoPostQuery videoPostQuery;
|
|
private final VideoPostQuery videoPostQuery;
|
|
|
- private final UserInterestBased userInterestBased;
|
|
|
|
|
private final RedisSet redisSet;
|
|
private final RedisSet redisSet;
|
|
|
private final RedisList redisList;
|
|
private final RedisList redisList;
|
|
|
private final RcmdProducer rcmdProducer;
|
|
private final RcmdProducer rcmdProducer;
|
|
|
|
|
|
|
|
- public RecommendServiceImpl(RedisSortedSet sortedSet, RedisHash<VideoCard> redisHash,
|
|
|
|
|
- ContentPermission contentPermission, VideoPostMapper videoPostMapper,
|
|
|
|
|
- VideoPostQuery videoPostQuery, UserInterestBased userInterestBased,
|
|
|
|
|
- RedisSet redisSet, RedisList redisList, RcmdProducer rcmdProducer) {
|
|
|
|
|
- this.sortedSet = sortedSet;
|
|
|
|
|
- this.redisHash = redisHash;
|
|
|
|
|
|
|
+ public RecommendServiceImpl(ContentPermission contentPermission, VideoPostMapper videoPostMapper,
|
|
|
|
|
+ VideoPostQuery videoPostQuery, RedisSet redisSet, RedisList redisList,
|
|
|
|
|
+ RcmdProducer rcmdProducer) {
|
|
|
this.contentPermission = contentPermission;
|
|
this.contentPermission = contentPermission;
|
|
|
this.videoPostMapper = videoPostMapper;
|
|
this.videoPostMapper = videoPostMapper;
|
|
|
this.videoPostQuery = videoPostQuery;
|
|
this.videoPostQuery = videoPostQuery;
|
|
|
- this.userInterestBased = userInterestBased;
|
|
|
|
|
this.redisSet = redisSet;
|
|
this.redisSet = redisSet;
|
|
|
this.redisList = redisList;
|
|
this.redisList = redisList;
|
|
|
this.rcmdProducer = rcmdProducer;
|
|
this.rcmdProducer = rcmdProducer;
|
|
@@ -92,6 +78,7 @@ public class RecommendServiceImpl implements RecommendService {
|
|
|
rcmdProducer.put(rcmdData);
|
|
rcmdProducer.put(rcmdData);
|
|
|
} catch (InterruptedException e) {
|
|
} catch (InterruptedException e) {
|
|
|
e.printStackTrace();
|
|
e.printStackTrace();
|
|
|
|
|
+ Thread.currentThread().interrupt();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
@@ -147,8 +134,6 @@ public class RecommendServiceImpl implements RecommendService {
|
|
|
nextId = videoPost.getId();
|
|
nextId = videoPost.getId();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- List<Integer> scopes = contentPermission.getUserScopes();
|
|
|
|
|
- VideoQuery videoQuery = new VideoQuery.Builder().scope(scopes).categoryId(20).build();
|
|
|
|
|
List<VideoPostCard> list = videoPostMapper.findByUserIds(followings, pageSize, nextId);
|
|
List<VideoPostCard> list = videoPostMapper.findByUserIds(followings, pageSize, nextId);
|
|
|
if (list.isEmpty()) {
|
|
if (list.isEmpty()) {
|
|
|
return PageScroll.empty();
|
|
return PageScroll.empty();
|
|
@@ -161,14 +146,7 @@ public class RecommendServiceImpl implements RecommendService {
|
|
|
return PageScroll.pageList(0, nextIdStr, nextIdStr, list1);
|
|
return PageScroll.pageList(0, nextIdStr, nextIdStr, list1);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public List<BannerVideo> getBannerVideos() {
|
|
|
|
|
- /*Set<String> topTen = sortedSet.zrevrange(bannerKey, 0, 9);
|
|
|
|
|
- if (topTen.isEmpty()) {
|
|
|
|
|
- return Collections.emptyList();
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- return videoQueryService.getBannerVideos(new ArrayList<>(topTen));*/
|
|
|
|
|
-
|
|
|
|
|
- return videoPostQuery.getBannerVideos(new ArrayList<>());
|
|
|
|
|
|
|
+ public List<BannerVideoVO> getBannerVideos() {
|
|
|
|
|
+ return videoPostQuery.getBannerVideos();
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|