多种消息提醒系统的设计模式、实现方案(附功能截图+表结构)

article/2025/8/20 14:46:01

网站需要增加3种消息提醒系统。需要实现的功能如下:
在这里插入图片描述

1.评论提醒。

实现功能

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

思路

这个是最简单的。在数据库查询:

select count(id) from 评论表 where 贴子作者 = $当前用户UID and 是否被阅读 = 1 and 是否被删除 = 1

前端判断,后端返回的json数据是否>0,若大于则显示具体数量。
然后,给消息提示绑定一个方法。点击后AJAX:

UPDATE comment SET 是否被阅读 = 2 where 贴子作者 = $当前用户UID;

然后,前端把消息清空。

2.系统消息。

实现功能

系统消息与“评论”类似。只不过增加了一点。

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

3.授权消息

实现功能

数据中心(后台)实现如下。
在这里插入图片描述
授权消息分2大类:

  1. 当前用户是作者。他人向自己申请授权。
  2. 当前用户申请了他人的授权,被同意/被拒绝。

数据库设计

数据库字段如下:

申请人UID,申请人是否阅读“作者回复的结果”,申请的贴子ID,申请时间,申请内容,
作者UID,作者是否阅读“这条申请”,申请回复结果(1等待作者回复,2作者同意/3作者拒绝),回复时间,回复内容。
是否被申请人取消申请,是否被申请人删除…

思路

授权消息需要注意2点:

  1. 一条消息对应2个UID(申请人,作者)。
  2. 新授权发起时,作者得到提醒。作者回复后(agree/disagree),申请人得到提醒。

当前用户作为“作者身份”得到的提醒数:

select count(id) from comment where 作者UID = $当前用户UID and 作者是否阅读 = 1 and 是否被申请者取消 = 2
and 申请回复结果 = 1(等待作者回复)

加上,当前用户作为“申请人身份”得到的提醒数:

select count(id) from comment where 申请人UID = $当前用户UID and 申请人是否阅读 = 1 and 是否被申请者取消 = 2 
and (申请回复结果 = 2同意 or 申请回复结果 = 3拒绝)

前端显示2者的和即可。
清空消息就省略了。

需要注意的地方

我这种实现方式,是在“用户刷新页面时”。
在初始化方法里请求AJAX,所以不能实时提醒消息。
想实现的话可以用websocket。用户评论时、发送系统消息时,检测用户是否在线。再具体操作就可以了。

说明

本文用于:

  1. 整理思路
  2. 希望作为其他人的参考
  3. 欢迎大佬给出优化建议
  4. SQL 仅供参考,请根据实际情况修改。

http://chatgpt.dhexx.cn/article/lrgx9Zi3.shtml

相关文章

前端实现实时消息提醒消息通知

需求:当用户收到待审批和待处理的消息后状态栏图标闪烁并进行弹窗提醒,点击消息跳转到指定的消息。 实现方式:web端c端。 说明: 客户不需要非常的及时的接收消息,所以未对接websocket协议,使用20秒刷新一…

Win11任务栏消息提醒功能如何开启教学

Win11任务栏消息提醒功能如何开启教学。我们可以将电脑的消息提示功能开启起来,这样我们接收到各种程序的消息通知时,都可以通过这个功能及时的给出提示。那么Win11任务栏消息提醒功能如何开启,我们接下来看看具体的操作方法吧。 设置方法&am…

用户登录登出功能实现

用户登录登出功能实现 一、功能需求分析 1. 登录退出功能分析 流程图 功能 登录页面登录功能退出功能 二、登录页面 1. 接口设计 接口说明 类目说明请求方法GETurl定义/user/login/参数格式无参数 返回结果 登录页面 2.后端代码 user/views.py代码: fro…

xubuntu系统偶发自动登出

项目场景: 系统:xubuntu-16.04.3-desktop 问题描述 使用xubuntu系统期间,在root用户下进行相关开发,突然系统会回到普通用户登录界面,需要输入密码进入到普通用户下   它会终止所有打开的应用程序和进程&#xff0…

Spring Security OAuth2 单点登录和登出

文章目录 1. 单点登录1.1 使用内存保存客户端和用户信息1.1.1 认证中心 auth-server1.1.2 子系统 service-11.1.3 测试 1.2 使用数据库保存客户端和用户信息1.3 单点登录流程1.2.1 请求授权码,判断未登录,重定向登录页1.2.2 登录成功,重定向继…

OneNote的正确登出方式

1. 账号已经是登录状态 点击oneNote右上角账户信息 》 注销按钮 (退出登录,注意要确保笔记已经同步到云端) 》会弹出以下提示窗口 》点击是 2. 关闭笔记本 点击左上角 》 文件 》信息》选中自己的笔记本 》设置 》关闭(可防止…

springboot2.7+springsecurity实现简单的登录登出

由于网上搜索的资料大部分都是使用的springsecurity的低于5.7的版本,springsecurity的配置类是通过继承WebSecurityConfigurerAdapter这个类来重写configure,以此来实现认证和授权。近期学习springsecurity使用的是5.7的版本,所以简单整理一下…

Vue实现登录以及登出

首先先了解一下,我们的效果实现流程 首先登录概述及业务流程和相关技术点 1.登录页面的布局 2.创建两个Vue.js文件 3.一个我们来做登录页和注册页 4.登录页面的布局 5.配置路由 6…

iOS快捷指令:一键登录/登出南京大学校园网

软件版本要求:iOS13及以上 演示机型:iPhone 12 mini 演示系统版本:iOS14.6 文章目录 导言核心步骤:最简单的一键登录指令自动化:连接NJU-WLAN后自动登录修改细节:让指令变得更优雅小练习:创建…

瑞吉外卖 —— 2、后台登录和登出

目录 1、后台登录功能 1.1、接口分析 1.1.2、登录校验逻辑 1.2、代码 1.2.1、统一的返回结果实体类 1.2.2、controller 方法 1.3、测试 2、后台退出功能 2.1、分析 2.2、代码 3、未登录访问首页跳转到登录页面 3.1、分析 3.2、代码 1、后台登录功能 1.1、接口分析…

oc账号无法登出,oc登出后官网还显示登陆状态?

《C4D的十万个为什么》首发于 公众号:苦七君 免费搜索查看更多问题:kuqijun.com 问题: 在本电脑上,在C4D里面登出oc账号后,官网上还是显示登陆的。。导致账号被限制在此电脑上了,无法用其他电脑登陆。 正…

vue-admin-实现登出功能

实现登出功能 目标:实现用户的登出操作 登出仅仅是跳到登录页吗? 不,当然不是,我们要处理如下 同样的,登出功能,我们在vuex中的用户模块中实现对应的action 登出action src/store/modules/user.js // 登出…

Python + Django4 搭建个人博客(十四):实现用户登录和登出功能

本篇开始我们来实现用户管理模块。 首先我们来实现一下用户的登录和登出。 创建APP 用户和文章属于不同的功能模块,为了方便管理,我们新建一个名为userprofile的App 运行startapp指令创建新的app: python manage.py startapp userprofile…

Springboot+JWT+Redis实现登陆登出功能

1&#xff1a;什么是Token&#xff1f;&#xff1a;三部分组成&#xff1a;头有效负载签名 1.1 JWT创建中的一些方法讲解&#xff1a; public static String createTokenWithClaim(User user){//构建头部信息Map<String,Object> map new HashMap<>();map.put(&qu…

单点登录与单点登出

一、标准流程描述 CAS官网的标准流程&#xff1a; SSO标准流程 流程描述&#xff1a; First Access&#xff1a; 第3步数据走向 第4步数据走向 第一次访问app.example.com&#xff08;service地址&#xff09;&#xff0c;请求参数中session为空&#xff0c;app service没做…

[django项目] 实现用户登录登出功能

用户登录登出功能 I. 功能需求分析 1>功能分析 1.1>流程图 1.2>功能接口 登录页面登录功能退出功能 II. 登陆页面 1>接口设计 1.1>接口说明 类目说明请求方法GETurl定义/users/login/参数格式无参数 1.2>返回结果 登陆页面 2.后端代码 user/views…

后台登录登出

后台登录登出 一&#xff0e;Session简介 在WEB开发中&#xff0c;服务器可以为每个用户浏览器创建一个会话对象&#xff08;session对象&#xff09;&#xff0c;注意&#xff1a;一个浏览器独占一个session对象(默认情况下)。因此&#xff0c;在需要保存用户数据时&#xff…

JWT 的登出问题

Jwt 使用起来不难&#xff0c;而且让我们将“无状态”的概念更贴切的展示出来了&#xff0c;但是实践就真的这么完美吗&#xff1f;不是&#xff0c;因为jwt 的登出问题。 何为登出&#xff1a;就是用户自己点击登出后&#xff0c;或用户的角色/权限改变后&#xff0c;该token…

Shiro入门之实现登录登出

概述 这里使用Shiro来实现用户的登录和登出功能。 前提&#xff1a;已经会Spring集成Shiro。即使没有下面也会提供源码&#xff0c;下面只说明Shiro部分的核心代码&#xff0c;如Mapper、Service类中的代码基本上就是从数据库中读取数据&#xff0c;而且源码有提供&#xff0…

cas5.3.2单点登录-单点登出(十一)

原文地址&#xff0c;转载请注明出处&#xff1a; https://blog.csdn.net/qq_34021712/article/details/81515317 ©王赛超 既然有单点登录,肯定就要有登出,之前的整合都是只针对了登录&#xff0c;对登出并没有关注,今天我们就来讲讲登出。 关于单点登出原理&#…