我正在尝试创建一个群组通知系统。如果我在一个群组中,那么任何在群组墙上发表评论的人都会向每个群组成员发送通知。这是我的数据库设计:我有两个表:Notification
和NotificationRead
.
NotificationRead
+userId (String)
+lastRead (int) - default is 0
Notification
...
+time(int)
...
每个用户都有一个条目NotificationRead
,它会跟踪我最后一次阅读通知的时间。逻辑是:对于特定用户,如果Notification.time > NotificationRead.lastRead
,则该通知被视为未读。假设在 中group A
,有 4 个通知我没有阅读,它们time
是7, 8, 9, 10
,然后当我点击 时group A
,我设置了我NotificationRead.lastRead = 10
的(最大时间),所以我不会再阅读它们了。新通知的时间将从 11 点开始。现在,这是我的问题。假设我有3组,A,B和C
A(4):最大时间为 10
B(1):最大时间为 14
C(1):最大时间为 12
如果我点击 A,我NotificationRead.lastRead = 10
的,4
旁边的 A 清除,1
旁边的 B 和 C 保持原样。现在如果我点击 B,我的lastRead
now 是 14,所以它不仅清除了1
B 旁边的,而且还清除了1
C 的下一个,因为14 > 12
. 谁能帮我想办法解决这个问题。我愿意完全重新设计一切