读取收件箱中的邮件状态

时间:2011-01-20 15:07:50

标签: php mysql

我正在开发一个消息收件箱系统,它使用基于线程的消息布局。我目前正在努力的是更新消息的读取状态。也许我的结构错了所以我可以做一些指导。

这就是我所拥有的:

Table messages
==============
id
thread_id
from_user_id
subject
body
sent_date

Table message_threads
=====================
id
message_id
owner_id
member_id
owner_read
member_read

在message_threads表中,“owner”指的是启动线程的用户,“member”指的是另一个参与者。用户的收件箱将包含他们自己创建的线程(所有者),以及由他们回复的其他用户创建的线程(成员)。

设置读取状态的逻辑如下:

  • 如果所有者发送回复:'member_read'字段设置为0(未读),'owner_read'字段设置为1(读取)

  • 如果会员发送回复:'owner_read'字段设置为0(未读),'member_read'字段设置为1(读取)

现在我认为这不是完全正确的方法,因为假设成员想要通过读取状态对收件箱中的邮件进行排序 - 但是用户既可以是所有者又可以是成员,并且有两个读取字段桌子。所以这种方式不正确。

关于我应该怎么做的任何建议?

编辑:这是一个例子:

  • 用户1将线程A发送给用户2
    • 主题A出现在用户2的收件箱中(状态0:未读)

  • 用户2打开主题A.
    • 线程A状态设置为1(读取)

  • 用户2回复主题A.
    • 主题用户1收件箱中的状态(状态0:未读)
    • 线程用户2收件箱中的状态(状态1:读取)

  • 用户1打开主题A.
    • 线程A状态设置为1(读取)

  • 用户1回复主题A.
    • 主题用户1收件箱中的状态(状态1:已读)
    • 主题用户2收件箱中的状态(状态0:未读)

1 个答案:

答案 0 :(得分:0)

唯一的“读取”状态适用于不是来自您的邮件。打开时,对收件人的回复标记为已读。除非您想要“收据确认”

,否则发件人不在乎是否已阅读

所以 - 考虑到这一点,我想它应该是这样的(我没有在消息中包含所有字段):

表“用户”

id
name

表“消息”

id (int)
parent_id (int)
from_user_id (id)
to_user_id
read (bit/bool)
message (text)

如果我没理解你,请告诉我。