`
hudeyong926
  • 浏览: 2031713 次
  • 来自: 武汉
社区版块
存档分类
最新评论

站内消息设计

 
阅读更多

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

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

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

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

  2.2)插入消息回收站表

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

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

 

未读消息/消息表

DROP TABLE IF EXISTS `msg`;
CREATE TABLE `msg` (
  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `mail` varchar(60) NOT NULL DEFAULT 'system' COMMENT '邮箱:默认为system表示发给所有用户',
  `title` varchar(50) DEFAULT NULL COMMENT '标题',
  `content` text NOT NULL COMMENT '内容',
  `createtime` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '创建时间',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8 COMMENT='公告表';

INSERT INTO `msg` VALUES (1,'system','系统公告','今天天气不错',1394421260);
INSERT INTO `msg` VALUES (2,'test@163.com','用户i','aaaaaaaaaaaa',1394421299);
INSERT INTO `msg` VALUES (3,'danny@qq.com','用户公告heihei','aaaaaaa',1394421299);
INSERT INTO `msg` VALUES (4,'system','系统公告2','第二条消息',1394421260);

 已读消息或删除消息

DROP TABLE IF EXISTS `msgrecycle`;
CREATE TABLE `msgrecycle` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `uid` varchar(200) NOT NULL COMMENT '用户id',
  `msgid` int(11) NOT NULL COMMENT '消息id',
  `isread` int(1) unsigned NOT NULL DEFAULT '0' COMMENT '0-未读  1-已读',
  `isdelete` tinyint(1) NOT NULL DEFAULT '0' COMMENT '0-未删除 1-删除',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

LOCK TABLES `msgrecycle` WRITE;
INSERT INTO `msgrecycle` VALUES (1,'test@163.com',2,1,0);
INSERT INTO `msgrecycle` VALUES (2,'danny@qq.com',3,0,1);//删除的未读消息
INSERT INTO `msgrecycle` VALUES (3,'test@163.com', 1, 1, 0); //test@163.com用户已读的system消息
UNLOCK TABLES;

 

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

2.2)

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)

select * FROM msgrecycle where uid='test@163.com' and isread=1 and isdelete=0

 

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

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

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 
 消息回收站表没有读过的系统消息记录
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) 
 

 

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
分享到:
评论

相关推荐

    站内信的数据库设计

    2. 电子商务平台:站内信数据库设计可以应用于电子商务平台,实现管理员和用户之间的消息传送。 3. 论坛平台:站内信数据库设计可以应用于论坛平台,实现用户之间的消息传送。 站内信数据库设计是一个非常重要的...

    站内信设计方案.pdf

    【站内信设计方案】 在运维平台的背景下,站内信设计的主要目的是提供一个内部沟通渠道,以增强平台的用户体验和效率。尽管用户通常依赖微信和邮件进行通信,但站内信作为运维平台的一个组成部分,仍然有其独特的...

    如何设计一个站内消息系统?.rar

    设计一个高效、可靠的站内消息系统需要考虑多个方面,包括功能需求、用户体验、性能优化以及可扩展性。以下是对如何设计站内消息系统的详细阐述: **1. 功能需求分析** - **发送和接收消息**:用户应能向其他用户或...

    消息模块 站内消息 系统消息

    【标题】"消息模块 站内消息 系统消息"是一个基于ASP.NET开发的功能模块,它主要负责处理网站内部的消息传递,包括个人与个人之间以及部门之间的通信。该模块集成了全面的数据操作功能,如批量删除、群发消息以及...

    php站内消息模块,跟论坛的差不多

    在PHP编程领域,站内消息模块是一个非常关键的组成部分,尤其对于那些构建社区论坛或者交互性强的网站来说。这个模块允许用户之间进行私信交流,类似于论坛中的个人留言功能,可以促进用户之间的互动和沟通。下面...

    站内信系统数据库设计.pdf

    站内信系统数据库设计是构建在线平台不可或缺的一部分,它允许用户和管理员在系统内部进行通信。与电子邮件不同,站内信完全在系统内部处理,通过数据库记录消息来实现。站内信系统通常包括两种基本功能:一是点对点...

    web在线聊天室、站内消息互发

    在IT行业中,构建一个Web在线聊天室或站内消息系统是一项常见的需求,它能够增强用户间的互动性,提升网站或应用的用户体验。本篇将详细探讨如何实现这样的功能,主要涉及的技术栈包括前端开发、后端开发以及实时...

    SayTo站内即时聊天组件 1.1

    实时消息:实现站内用户发送接收消息,实时交互 无需刷新:即时消息显示无需刷新页面,完全同步 开放性强:接口开放程度高,适用范围广,非常适合各种二次开发 机制领先:数据处理机制十分先进,不会因为大...

    使用asp.net实现短消息提示

    总结来说,使用ASP.NET实现站内短消息即时提示涉及以下几个关键点:数据库设计、消息服务实现、AJAX技术的应用、用户界面设计以及安全策略。通过熟练掌握这些技术,开发者可以构建出高效、实时且用户体验良好的Web...

    分享网站群发站内信数据库表设计

    而“站内信”是系统内的消息,说白了,“站内信”的实现,就是通过数据库插入记录来实现的。  “站内信”有两个基本功能。一:点到点的消息传送。用户给用户发送站内信;管理员给用户发送站内信。二:点到面的消息...

    消息系统(短信,推送,邮件)等统一发送管理.zip

    具体到压缩包内的"apple-message-master",这可能是一个开源项目的源代码库,专注于苹果设备的消息管理。它可能包含iOS客户端的SDK和服务器端API接口的实现,帮助开发者快速接入苹果的推送通知服务(APNs)。在实际...

    使用dwr推技术实现站内聊天室,可对所有人和指定人发送消息

    在本示例中,我们将深入探讨如何利用DWR推技术来构建一个站内聊天室,允许用户向所有人或特定个体发送消息。 1. **DWR推技术**: DWR推技术(Push technology)是DWR的一个重要特性,它允许服务器主动向客户端推送...

    电信设备-向地理区域内的移动站广播消息.zip

    在电信领域,向地理区域内的移动站广播消息是一项至关重要的技术。这主要涉及到移动通信网络中的广播和组播通信机制,这些机制对于提供高效的公共服务、系统通知以及大规模数据传输具有重要意义。下面我们将深入探讨...

    办公自动化系统的消息管理模块的设计与实现.doc

    首先,消息管理模块的设计目标是提供一个高效、便捷的通信平台,支持站内信和电子邮件两种方式。站内信主要用于内部员工之间的快速交流,而电子邮件则扩展了通信范围,允许与外部联系人进行沟通。设计时需考虑消息的...

    com_messaging站内信组件 for Joomla

    `com_messaging`是专为Joomla内容管理系统设计的一个组件,它的核心功能在于提供一个完善的站内消息系统,以促进网站用户之间的交流与互动。Joomla,作为一款开源且强大的PHP构建的网站平台,其组件体系丰富,`...

    C# ASP.NET 模块 - 在线短消息模块

    综上所述,构建"C# ASP.NET 模块 - 在线短消息模块"需要涵盖多个技术领域,包括但不限于C#编程、ASP.NET框架的使用、数据库设计、实时通信、前端开发以及安全性管理。通过整合这些知识点,可以创建一个功能完善且...

    时尚站内公告系统 Build 0920

    - 消息推送:系统可以自动或手动向用户推送公告,例如通过电子邮件、站内消息、手机应用通知等方式。 - 用户反馈:集成评论、点赞或分享功能,鼓励用户参与互动,提高公告的影响力。 3. **权限管理**: - 用户...

    ThinkPHP5+workerman实现简单的实时消息推送聊天系统.rar

    3. 设计数据库:设计聊天系统的数据表,通常包括用户表、会话表和消息表,用于存储用户信息、会话关系以及聊天记录。 4. 实现API接口:使用ThinkPHP5编写API接口,包括用户注册、登录、创建会话、发送消息等功能。...

    飞控通信协议、匿名地面站

    2. 消息结构:飞控通信协议定义了消息的结构,包括消息头、消息体和消息尾。这些结构使得接收端能够正确解析接收到的数据,并确保数据的完整性和准确性。 3. 错误检测与纠正:为了保证数据的完整性,协议通常包含...

Global site tag (gtag.js) - Google Analytics