• 消息提醒系统的相关设计01


    一、评论提醒

    实现功能:他人回复自己后,右上角自动提醒“未阅读的新消息”的数量。
         点击后,清空新消息的提示。

    思路:
      在数据库查询   

    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。
    用户刷新页面时,查询两个结果的和。显示在前端即可。
    如何清空消息就不写了。

  • 相关阅读:
    详细介绍C++STL:unordered_map
    NYOJ-626-intersection set(二分查找)
    hdoj-2141-Can you find it?(二分查找)
    HDU-1232-畅通工程(并查集)
    HDU-1213-How Many Tables(并查集)
    hdoj-2647-Reward(拓扑排序)
    hdoj-3342-Legal or Not(拓扑排序)
    hdoj-1285-确定比赛名次(拓扑排序)
    来一些方便的小操作:博客园(cnblog)自定义界面
    POJ--1094--Sorting It All Out||NYOJ--349--Sorting It All Out(拓扑排序)
  • 原文地址:https://www.cnblogs.com/hzjdpawn/p/12058090.html
Copyright © 2020-2023  润新知