站内消息设计

简介:

设计优点,发系统消息给全站用户只需一条记录,不需要每个用户都插入,解决用户量大的问题

登录用户只显示未读的消息。用户查看未读消息后,将消息插入消息回收站表标记为已读,uid与该用户绑定,因此回收站表没有uid=system的记录

2)已读消息列表:实现方法有2种取其一即可

  2.1)插入消息回收站表并删除用户的未读消息表对应记录(非system)

  2.2)插入消息回收站表

删除的消息列表:只插入消息回收站表,

未读消息:当前用户没有读过的消息

 

未读消息/消息表

Java代码   收藏代码
  1. DROP TABLE IF EXISTS `msg`;  
  2. CREATE TABLE `msg` (  
  3.   `id` int(11) unsigned NOT NULL AUTO_INCREMENT,  
  4.   `mail` varchar(60) NOT NULL DEFAULT 'system' COMMENT '邮箱:默认为system表示发给所有用户',  
  5.   `title` varchar(50) DEFAULT NULL COMMENT '标题',  
  6.   `content` text NOT NULL COMMENT '内容',  
  7.   `createtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',  
  8.   PRIMARY KEY (`id`)  
  9. ) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='公告表';  
  10.   
  11. INSERT INTO `msg` VALUES (1,'system','系统公告','今天天气不错',1394421260);  
  12. INSERT INTO `msg` VALUES (2,'test@163.com','用户i','aaaaaaaaaaaa',1394421299);  
  13. INSERT INTO `msg` VALUES (3,'danny@qq.com','用户公告heihei','aaaaaaa',1394421299);  
  14. INSERT INTO `msg` VALUES (4,'system','系统公告2','第二条消息',1394421260);  

 已读消息或删除消息

Java代码   收藏代码
  1. DROP TABLE IF EXISTS `msgrecycle`;  
  2. CREATE TABLE `msgrecycle` (  
  3.   `id` int(11) NOT NULL AUTO_INCREMENT,  
  4.   `uid` varchar(200) NOT NULL COMMENT '用户id',  
  5.   `msgid` int(11) NOT NULL COMMENT '消息id',  
  6.   `isread` int(1) unsigned NOT NULL DEFAULT '0' COMMENT '0-未读  1-已读',  
  7.   `isdelete` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0-未删除 1-删除',  
  8.   PRIMARY KEY (`id`)  
  9. ) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;  
  10.   
  11. LOCK TABLES `msgrecycle` WRITE;  
  12. INSERT INTO `msgrecycle` VALUES (1,'test@163.com',2,1,0);  
  13. INSERT INTO `msgrecycle` VALUES (2,'danny@qq.com',3,0,1);//删除的未读消息  
  14. INSERT INTO `msgrecycle` VALUES (3,'test@163.com'110); //test@163.com用户已读的system消息  
  15. UNLOCK TABLES;  

 

显示用户已读消息mr.uid='test@163.com'

2.2)

Java代码   收藏代码
  1. select * FROM msg m left join msgrecycle mr on m.id=mr.msgid where (m.mail='system' or m.mail='test@163.com') and mr.uid='test@163.com' and isread=1 and isdelete=0  

2.1)

Java代码   收藏代码
  1. select * FROM msgrecycle where uid='test@163.com' and isread=1 and isdelete=0  

 

显示用户未读消息 = 消息回收站表没有读过的用户消息记录+消息回收站表没有读过的系统消息记录

消息回收站表没有读过的用户消息记录

Java代码   收藏代码
  1. select m.* FROM msg m left join msgrecycle mr on m.id=mr.msgid where m.mail='test@163.com' and mr.id is null   
 消息回收站表没有读过的系统消息记录
Java代码   收藏代码
  1. select * FROM msg where mail='system' AND id not in (select m.id FROM msg m left join msgrecycle mr on m.id=mr.msgid where m.mail='system' and mr.uid='test@163.com' and isread=1 and isdelete=0)   
 
相关文章
|
网络协议
nmtui命令详解
【4月更文挑战第9天】`nmtui`是NetworkManager的文本用户界面工具,用于终端中的网络配置和管理。用户可通过它查看网络设置、配置接口、修改设置、添加/删除连接及调整连接优先级。操作步骤包括启动nmtui,选择编辑连接,修改网卡设置,保存并退出。此工具包含在NetworkManager-tui子软件包中,配置更改会持久生效。了解更多详情可参考相关文档。
1430 1
|
5月前
|
人工智能 运维 Go
Coze与Dify全面对比:为你的AI应用开发选择最佳利器
在AI技术迅猛发展的当下,Coze与Dify作为两大热门开源AI开发平台,各具特色。本文从架构设计、技术栈、功能对比、部署运维等多个维度深入解析两者差异,助你根据团队需求和技术背景做出最优选型决策,提升开发效率与应用性能。
|
6月前
|
存储 安全 Linux
Proxmox VE 9.0 Beta - 开源虚拟化管理平台
Proxmox VE 9.0 Beta - 开源虚拟化管理平台
714 0
Proxmox VE 9.0 Beta - 开源虚拟化管理平台
|
NoSQL Java 关系型数据库
这个评论系统设计碉堡了
先赞后看,南哥助你Java进阶一大半官网给出了Facebook评论系统的高级设计图,Facebook的评论竟然是支持实时刷新的。也就是说用户不用刷新帖子,只要帖子有新的评论就会自动推送到用户端,这里Facebook使用的便是每天在全球有设备在使用的WebSocket技术。我是南哥,一个Java学习与进阶的领路人。相信对你通关面试、拿下Offer进入心心念念的公司有所帮助。
646 5
这个评论系统设计碉堡了
|
9月前
|
弹性计算 运维 算法
阿里云 Elasticsearch Serverless 检索增强型 8.17 版来袭!
阿里云Elasticsearch Serverless 8.17版本,深度融合无服务器架构与分层扩展能力,面向信息检索、向量搜索、语义分析等通用场景,提供全托管服务,在最新特性扩展、自动扩缩性能、资源成本优化等维度均有显著提升。
470 15
|
存储 小程序 前端开发
如何设计小程序的站内信功能
如何设计小程序的站内信功能
822 0
|
人工智能 自然语言处理 搜索推荐
阿里云Elasticsearch AI搜索实践
本文介绍了阿里云 Elasticsearch 在AI 搜索方面的技术实践与探索。
20104 21
|
弹性计算 关系型数据库 数据库
利用阿里云进行性能优化:实践案例分享
在开发在线教育平台过程中,我们遇到了由于用户访问量增加而导致的性能瓶颈问题。通过使用阿里云的多种服务,包括RDS数据库、ECS弹性扩展、SLB负载均衡、OSS存储和CDN加速,我们对数据库、应用服务器和静态资源加载进行了全面优化。优化后的系统性能显著提升,数据库查询速度提高了60%,服务器负载下降了40%,静态资源加载时间减少了70%,从而极大改善了用户体验。本文详细介绍了问题分析、具体解决方案及其实施效果,旨在为其他开发者提供有价值的参考。
610 3
|
Android开发 Windows
Mac 好用的 Android 模拟器整理(玩游戏、装应用、支持咸鱼、拼多多...)
Mac 好用的 Android 模拟器整理(玩游戏、装应用、支持咸鱼、拼多多...)
24777 47
|
Java 计算机视觉
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进2】
我的自描外挂制作日志——FPS类游戏的自瞄【优化改进2】
388 0

热门文章

最新文章