站内信设计文档及源代码下载
站内信设计文档
一、数据库结构
1)发信表,存邮件内容(CRM_MessageText):
字段 |
类型 |
说明 |
备注 |
TextId |
int |
信件id |
主键,自增长 |
SendId |
nvarchar(50) |
发信人id |
即邮件作者 |
Titel |
nvarchar(50) |
信件标题 |
|
Text |
text |
信件正文 |
nvarchar(max)看需求 |
MsgType |
int |
发送类型 |
0所有人;1指定某人 |
PostDate |
datetime |
发信时间 |
2)收信表,存收信用户和状态(CRM_Message):
字段 |
类型 |
说明 |
备注 |
MessageID |
int |
收信id |
主键,自增长 |
TextId |
int |
信件id(外键) |
MessageText表主键 |
RecId |
nvarchar(50) |
收信人id |
|
Statue |
int |
信件状态 |
0未读,1已读,2删除 |
MsgDate |
datetime |
收信时间 |
注:发信表中的1条数据可以发送给收件表多个人,是1对多关系。
二、功能描述
1)情景1:发起站内所有人都收到的信息
① 作者(张三)发送邮件,不指定用户(MsgType=0),仅在发件表表添加一条记录:
INSERT INTO [CRM_MessageText] ([TextId],[SendId],[Titel],[Text],[MsgType],[SendDate]) VALUES('张三','标题','信件正文',0,'时间')
②收件人(李四)登录后,加载并处理:
a.将发信表,MsgType=0的记录,取出TextId插入到收信表(已有数据不保存)
SELECT TextId from [CRM_MessageText] where MsgType=0and TextId not in (select TextId from CRM_Message where RecId='李四')--可能有多条记录,程序循环插入收信表
B.插入收信表
INSERT INTO [CRM_Message]([TextId],[RecId],[Statue],[GetDate]) VALUES(1,'李四',0,'时间')
c.读取收信表
select * from CRM_Message a left join CRM_MessageText b on a.TextId=b.TextId where a.Statue !=2and a.RecId='李四' order by b.SendDate desc
至此李四获得了最新的全站信息,且不重复
2)情景2:发起站内指定N个人收的信息
①作者(张三)发送信件,指定了张三等人(MsgType=1),除了发件表添加一条记录以外,还要在收件表添加记录给张三
a.给发信表添加记录(注意:MsgType=1)
INSERT INTO [CRM_MessageText] ([TextId],[SendId],[Titel],[Text],[MsgType],[SendDate]) VALUES('张三','标题','信件正文',1,'时间')--insert后获取这条记录TextId,用于写入收信表
b.给收信表添加记录(这就是和情景1的区别,此步骤是在张三环节完成。情景1是拉数据;情景2是推数据。)
INSERT INTO [CRM_Message]([TextId],[RecId],[Statue],[GetDate]) VALUES(2,'李四',0,'时间')--N个收信人,添加N条数据
②收件人(李四)登录后,获取收信表写入的信息
select * from CRM_Message a left join CRM_MessageText b on a.TextId=b.TextId where a.Statue !=2and a.RecId='李四' order by b.SendDate desc
3)综合情景1和情景2,收件人李四登录后是做了两件事:
①拉取全站信息(MsgType=0),写入收件表(CRM_Message),如果没有全站信息就不插入;
②读取收件表(CRM_Message),此时读取的信件是包含了:全站信息+某人指定给他的信息。
4)修改信息的状态
①将状态改为已阅读(张三打开邮件后自动修改此状态)
UPDATE [CRM_Message] SET [Statue] = 1WHERE MessageID = 1
②将状已阅读设置为未读状态(手动点击按钮改此状态,某些情景需要此功能)
UPDATE [CRM_Message] SET [Statue] = 0 WHERE MessageID = 1
③将状态改为已删除(点击删除按钮。已删除的信息不会被再次拉取,也不会出现在我的信息列表中)
UPDATE [CRM_Message] SET [Statue] = 2 WHERE MessageID = 1
5)情景1可以有效减少数据库冗余。
本文配套源代码CSDN下载地址:http://download.csdn.net/detail/djk8888/9687192
站内信设计文档及源代码下载相关推荐
- 单系统站内信设计概述(满足百万级信息)
基本功能 点到点的消息传送: 用户给用户 管理员给用户 点到面的消息传送 管理员给用户群 少量用户(10-999) 对于用户非常少的情况,没有必要深入的考虑数据库的优化,采用简单的表设计: 如表mes ...
- 基于百万级别的站内信设计
基本上现在的网站都会有站内信功能,主要分为少量(10-999用户),中量(1000-99999用户),大量(100W用户)不同的站内信架构,消耗存储空间,和效率也是不同的.这次要设计的是基于百万级别的 ...
- 百万级用户量的站内信设计
1. 方案描述 该方案用于系统站内信功能模块在百万级用户量情况下的效率问题,只是后台管理员给前台用户发送站内信,用户与用户之间的发送不在讨论内. 2. 方案详情 假设系统的用户量达到了200W,活跃用 ...
- android图片识别代码,android orc 图片文档识别源代码 - 下载 - 搜珍网
压缩包 : wordsnap-ocr-self.rar 列表 wordsnap-ocr-self/.classpath wordsnap-ocr-self/.project wordsnap-ocr- ...
- 小康淘宝站内信群发 官方
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 小康淘宝站内信群发 v5.50 怎么用
Welcome to my blog! <script language="javascript" src="http://avss.b15.cnwg.cn/cou ...
- 任天堂遭史上最严重黑客攻击:完整源代码、设计文档及技术演示泄露
十三 发自 凹非寺 量子位 报道 | 公众号 QbitAI 任天堂的这一波泄露事件,可以说是相当惨烈. 多少文件被泄露? 超过2TB. 涉及什么内容? 完整源代码.设计文档,近乎一切用于构建Wii主机 ...
- 单系统站内信数据库设计思路
第一版设计 需求 :单用户之间通信(融合了用户反馈需求) 数据库设计:Message内容和收发者存在一张表中 message表: 这里一条Message存两次,类似邮件服务. status:已读.未读 ...
- mysql群发消息_百万级用户量的站内信群发数据库设计
随着WEB2.0的发展,用户之间的信息交互也变得十分庞大,而且实时性要求越来越高.现在很多SNS网站和一部分CMS网站都广泛地应用了站内信这一模块,这个看似简单的东西其实背后隐藏着很多需要设计师重视的 ...
- mysql群发消息_分享网站群发站内信数据库表设计
本文和大家分享一下网站站内信实现表设计的功能.需要的朋友可以参考下. "站内信"不同于电子邮件,电子邮件通过专门的邮件服务器发送.保存.而"站内信"是系统内的消 ...
最新文章
- android ble不配对接收广播数据_蓝牙低功耗(BLE)学习笔记_0
- 2022THE重量级大学排名:97所内地高校上榜!
- Linux常用命令大全-toolfk程序员在线工具网
- MapReduce基础开发之一词汇统计和排序(wordcount)
- LinkedList 源码分析(JDK 1.8)
- 嵌套的Try-Catch块--------异常处理(3)
- java中对象模型与数据库中的关系模型
- DCMTK:缩放DICOM图像
- Python学习之布尔和数字
- HMM学习最佳范例一:介绍
- Android应用程序组件间通信(二)——IntentFilter类简介
- envi反演水质参数_基于大气校正法的Landsat 8 TIRS地表温度反演
- ASP.NET 英语词典
- 渗透测试(445端口)
- VMware Fusion 虚拟网络配置
- 高数 | 【多元函数微分学】全微分不变性、隐函数求导辨析
- Kali BeEF MSF的使用
- PA、PB及RS功率计算
- 一款APP从设计稿到切图过程全方位揭秘 Mark
- 学渣的刷题之旅 leetcode刷题 9. 回文数
热门文章
- 创客教育发展中的科技造物原理
- python randn_numpy.random.randn()用法
- c语言.jpg图片转成数组_图片可以转Word吗?教你两种方法轻松转换
- 现有一循环队列,其队头指针为front,队尾指针为rear;循环队列长度为N。其队内有效长度为?
- 微信HOOK 3.4.5.27 CALL信息留根-2021-12-27
- Qt编写安防视频监控系统58-子模块2窗口信息
- android集成环信客服云_2019.6.12
- Uipath 对Excel中重复的行进行筛选解决方案以及DefaultVaule方法的使用
- 事物(Transaction)
- 山东养殖业稳中有升,饲料企业较乐观