如何处理某些UGC对特定好友可见,及好友看到的UGC数量统计问题?
程序员文章站
2022-04-30 14:53:17
...
在一个多用户系统中,用户A发布ugc时,一种是全部好友可见, 一种设置某些好友(比如B、C)可见, 某些好友不可见(比如E、F两人),那么
A可见的UGC总数是100,列表是全部UGC
B可见的UGC总数是90,列表内容是A的公开ugc和B可见UGC。
E看到的UGC总数是50,列表内容是A的公开ugc和E可见UGC。
看到的列表也是不一样的。
A可见的UGC总数是100,列表是全部UGC
B可见的UGC总数是90,列表内容是A的公开ugc和B可见UGC。
E看到的UGC总数是50,列表内容是A的公开ugc和E可见UGC。
看到的列表也是不一样的。
那么在php+mysql中,该如何处理相关的逻辑,表设计如何?
回复内容:
在一个多用户系统中,用户A发布ugc时,一种是全部好友可见, 一种设置某些好友(比如B、C)可见, 某些好友不可见(比如E、F两人),那么
A可见的UGC总数是100,列表是全部UGC
B可见的UGC总数是90,列表内容是A的公开ugc和B可见UGC。
E看到的UGC总数是50,列表内容是A的公开ugc和E可见UGC。
看到的列表也是不一样的。
那么在php+mysql中,该如何处理相关的逻辑,表设计如何?
假设表 post
为用户发布的内容,里面有个标明类型的字段 privacy
,值为
0 - 'public'(完全公开)
1 - 'protected'(指定可见)
新建一张表 noBlock
,用来记录指定可见的 Post
和可见用户的关系。如:
id postId userId
假设场景为 B
登录,那么他所看的内容读取顺序即为:
1.读取所有 privacy
值为 0
的 post
数据。
2.联合查询 post
和 noBlock
表,读取 noBlock
表中 userId
为 Bid
的数据。
大概写个 mysql
的语句(举例为主,需要测试):
(select * from post where privacy = 0)
union
(select * from post left join noBlock on post.id = noBlock.postId where post.privacy = 1 and noBlock.userId = Bid)