如何處理某些UGC對特定好友可見,及好友看到的UGC數量統計問題?

來源:互聯網
上載者:User
在一個多使用者系統中,使用者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中,該如何處理相關的邏輯,表設計如何?

回複內容:

在一個多使用者系統中,使用者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)
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.