如何处理某些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中,该如何处理相关的逻辑,表设计如何?

阅读 4.1k
1 个回答

假设表 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)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题