消息軟刪除



      前段時間做個小東西,涉及到消息的軟刪除。比如A和B之間發的消息存到一張表中,A可以刪除自己收件箱中的這條消息,但是這條消息還存在B的收件箱中,直到B也刪除這條消息。比如張三和李四用手機發短信,張三清空自己的收件箱之后,不影響李四的收件箱。
其實,做軟刪除,只不過是設置一個標志位而已,比如,0表示未刪除,1表示刪除。而我的需求是實現到底誰刪除了。
數據庫設計如下:

id   消息id
uid_from   發送方id
uid_to     接收方id
message   消息內容
sendtime    發送時間
isdel     是否刪除,默認值為0

實現方法為:

      如果是發送方刪除消息,則用1|isdel(注:| 表示異或),如果接收方刪除消息,則用2|isdel,
原始isdel為0,

如果只有發送方刪除消息,則isdel變為1,

如果只有接收方刪除消息,則isdel變為2,

如果發送方和接受方都刪除了,則isdel變為3。

sql語句如下:

1 update user_letter set isdel = isdel | (if(uid_from = $userid),1,2)) 2 where $id = id and $userid = uid_from or $userid = uid_to

$id表示消息id,$userid 表示用戶id,通過if語句判斷,用戶id是該消息的發送方還是接收方,即if(uid_from = $userid),1,2),if語句通過PHP傳到mysql是可以運行的,已測試過。

 

小弟水平有限,歡迎各位吐槽。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM