Преглед на файлове

RcmdTask 根据用户可访问的 scope 获取数据

reghao преди 1 година
родител
ревизия
abdcb9d962

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/db/mapper/VideoPostMapper.java

@@ -56,5 +56,5 @@ public interface VideoPostMapper extends BaseMapper<VideoPost> {
     List<BannerVideo> findBannerVideos(List<String> videoIds);
     List<GroupCount> findGroupByPublishBy();
     List<GroupCount> findGroupByCategoryId();
-    List<String> findRandomVideoIds(int size);
+    List<String> findRandomVideoIds(List<Integer> scopes, int size);
 }

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/service/VideoPostQuery.java

@@ -22,7 +22,7 @@ public interface VideoPostQuery {
     UserVideoPost getUserVideoPost(VideoPost videoPost);
     List<BannerVideo> getBannerVideos(List<String> videoIds);
     List<String> getRandomTags(int size);
-    List<String> getRandomVideoIds(int size);
+    List<String> getRandomVideoIds(List<Integer> userScopes, int size);
     /**
      * 获取用户发布的视频稿件
      *

+ 1 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/service/VideoService.java

@@ -33,7 +33,7 @@ public class VideoService {
 
     public Result errorReport(VideoErrorReport videoErrorReport) {
         long loginUser = UserContext.getUser();
-        if (loginUser > 10005) {
+        if (loginUser == -1 || loginUser > 10005) {
             return Result.fail("no permission");
         }
 

+ 2 - 1
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/service/impl/RecommendServiceImpl.java

@@ -76,7 +76,8 @@ public class RecommendServiceImpl implements RecommendService {
     }
 
     public void putRecommendVideos(long loginUser) {
-        RcmdTask rcmdTask = new RcmdTask(loginUser, videoPostQuery, userInterestBased, redisSet);
+        List<Integer> userScopes = contentPermission.getUserScopes();
+        RcmdTask rcmdTask = new RcmdTask(loginUser, videoPostQuery, userInterestBased, redisSet, userScopes);
         Future<?> future = threadPool.submit(rcmdTask);
     }
 

+ 2 - 2
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/service/impl/VideoPostQueryImpl.java

@@ -240,8 +240,8 @@ public class VideoPostQueryImpl implements VideoPostQuery {
     }
 
     @Override
-    public List<String> getRandomVideoIds(int size) {
-        return videoPostMapper.findRandomVideoIds(size);
+    public List<String> getRandomVideoIds(List<Integer> userScopes, int size) {
+        return videoPostMapper.findRandomVideoIds(userScopes, size);
     }
 
     public List<VideoInfo> getVideoResource(String videoId) {

+ 5 - 2
content/content-service/src/main/java/cn/reghao/tnb/content/app/vod/service/rcmd/task/RcmdTask.java

@@ -21,13 +21,16 @@ public class RcmdTask implements Runnable {
     private final RedisSet redisSet;
     private final UserInterestBased userInterestBased;
     private final VideoPostQuery videoPostQuery;
+    private List<Integer> userScopes;
 
     public RcmdTask(long loginUser, VideoPostQuery videoPostQuery,
-                    UserInterestBased userInterestBased, RedisSet redisSet) {
+                    UserInterestBased userInterestBased, RedisSet redisSet,
+                    List<Integer> userScopes) {
         this.loginUser = loginUser;
         this.videoPostQuery = videoPostQuery;
         this.userInterestBased = userInterestBased;
         this.redisSet = redisSet;
+        this.userScopes = userScopes;
     }
 
     public void run() {
@@ -41,7 +44,7 @@ public class RcmdTask implements Runnable {
             String itemsKey = RedisKeys.getUserItemKey(loginUser);
             Set<String> set = userInterestBased.getUserInterestItems(loginUser);
             List<String> videoIds1 = new ArrayList<>(set);
-            List<String> videoIds = videoPostQuery.getRandomVideoIds(120);
+            List<String> videoIds = videoPostQuery.getRandomVideoIds(userScopes, 60);
             if (!videoIds.isEmpty()) {
                 List<VideoCard> videoCards = videoPostQuery.getVideoCards(videoIds);
                 VideoCard[] arr = videoCards.toArray(new VideoCard[0]);

+ 4 - 1
content/content-service/src/main/resources/mapper/vod/VideoPostMapper.xml

@@ -431,7 +431,10 @@
         SELECT t1.video_id
         FROM vod_video_post AS t1
         JOIN (SELECT ROUND(RAND()*(SELECT MAX(id) FROM vod_video_post)) AS id) AS t2
-        WHERE t1.id>=t2.id
+        WHERE t1.id>=t2.id and t1.scope in
+        <foreach collection="scopes" item="id" index="index" open="(" close=")" separator=",">
+            #{id}
+        </foreach>
         ORDER BY t1.id
         LIMIT #{size}
     </select>