一、評論提醒
實現功能:他人回復自己后,右上角自動提醒“未閱讀的新消息”的數量。
點擊后,清空新消息的提示。
思路:
在數據庫查詢
select count(id) from 評論表 where 貼子作者 = $當前用戶UID and 是否被閱讀 = 1 and 是否被刪除 = 1
前端判斷,后端返回的json數據是否>0,若大於則顯示具體數量。然后,給消息提示綁定一個方法。點擊后AJAX:
UPDATE comment SET 是否被閱讀 = 2 where 貼子作者 = $當前用戶UID;
然后,前端把消息清空。
二、系統消息
實現功能:系統消息與“評論”類似。只不過增加了一點。
用戶收到的消息分2種。
一種是管理員發送給全體成員的消息。(如活動通知)
另一種是針對某個用戶的通知。(舉報反饋、登錄異地提醒)
數據庫設計:
數據庫字段如下
id(自增主鍵),發送時間,消息標題,消息內容,receive_uid消息接收對象(0是給全體人的消息,其他是針對某個用戶UID),
had_read(用戶是否閱讀過這條消息),評論是否被刪除
思路:
全體消息有2種解決方案:
1、是給遍歷用戶,給每個用戶發消息。這種方法在設計、實現上很簡單,類似上面的評論。但消耗資源比較大(看你用戶多不多)。
2、是發送給0,也就是說發送公共消息。每個人都可以接收,卻只需要發送一條消息。
但也有缺點。若用戶是在你“發送全體消息”之后,注冊的賬號。查詢消息表時,也會加載歷史消息。
不過這很容易解決。加載消息時判斷“用戶注冊的時間戳”>“發送消息的時間戳”就可以。
下面我根據方法2實現一下:
首先,判斷特定用戶的消息是否被閱讀。(同上)
select count(id) from 系統消息表 where 接收消息的UID = $當前用戶UID and 是否被閱讀 = 1 and 是否被刪除 = 1
然后,給用戶表新增字段。new_system_msg_count(新消息的數量)。
每次發送全體消息,給全體成員的new_system_msg_count字段+1。
用戶刷新頁面時,查詢兩個結果的和。顯示在前端即可。
如何清空消息就不寫了。