如何处理某些UGC对特定好友可见,及好友看到的UGC数量统计问题?

在一个多用户系统中,用户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 值为 0post 数据。
2.联合查询 postnoBlock 表,读取 noBlock 表中 userIdBid 的数据。

大概写个 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

发表评论

电子邮件地址不会被公开。 必填项已用*标注