消息通知系统设计文档

article/2025/10/7 19:05:22

一、功能概述
1.不同的系统的消息,管理后台,小程序(B/C),微信公众号,短信,邮件等
2.不同业务的消息,充值,提现到账,系统更新,公告等
3.消息的明细,标题,简述,详情,已读未读状态
4.有效时间,失效时间
5.支持界面的接下来操作,跳转按钮
6.语音消息,图片消息,富文本消息
二、设计方案

  • 需要考虑三类应用场景
    – 1 私有信息,需要告知多个服务平台,需要用一MQ进行解耦
    – 2 私有信息,不需要告知多个服务平台,直接调用
    – 3 公开信息,一份信息广播给大部分,所有用户时,比如网站公告,banner,活动,系统更新等信息,需要用到MQ及时更新缓存
  • 特殊说明
    需要考虑做成一个组件,各个应用需要使用时调用即可
  • 2.1 用户提现业务时序图-私有信息,需要用到MQ进行解耦类
  • 主要思想 利用MQ进行解耦
  • 注意事项
    因为涉及到资金相关,生产者需要保证消息至少一次成功,所以要有重试逻辑;消费者需要考虑因为重试导致的多次消费问题,所以需要加幂等处理,幂等可以使用redis去做
    在这里插入图片描述
    用户提现业务时序图
  • 2.2 员工申请加入企业业务时序图——私有信息直接获取类
    在这里插入图片描述
  • 2.3 系统类公告信息业务时序图——公开信息需本地缓存类
  • 主要思想
    公共信息的获取主要特性是有大量用户获取的数据是同一份数据,比如网站公告、banner、活动
    那么如果每次都从数据库拿,势必会对数据库造成很多流量,再加上这类数据一般修改不频繁,所以放在最外层的服务缓存
    当有修改时,MQ通知出去
    在这里插入图片描述

系统类公告信息业务时序图
三、数据库设计

  • 3.1私有消息通知模板表(msg_notify_private_template)
    消息通知模板主要是方便在发送通知时可以灵活使用模板,模板主要包括:
【腾讯】您充值的 ${amount} 元已经到账,请及时查看。【腾讯】您已从${company}公司成功提现${amount}元。【腾讯】您的KYC认证申请,审核失败,请重新上传身份认证信息。【腾讯】您的KYC认证申请,已通过审核。【腾讯】您申请加入${company}公司失败,请登录网站重新申请。【腾讯】您申请加入${company}公司审核通过。【腾讯】您的账号【${account}】在【${time}】使用了新的 IP地址【${unusualIp}】登录了腾讯后台管理系统,请确认这是您本人的操作。【腾讯】尊敬的用户,您已成功注册腾讯。【腾讯】您的验证码为${code},30分钟内有效,请勿将验证码告诉他人。若非本人操作,请忽略此信息。感谢您的支持与信任。

字段名

类型

允许空

字段说明

示例

id

bigint(20)

no

主键

1

notify_channel

varchar(30)

no

通知渠道:SMS/PAGE_POPUP/NOTIFY_CENTER

SMS

msg_language

varchar(10)

no

消息语言:zh/en

en

msg_type

varchar(30)

no

消息类型:对应枚举NotifyTypeEnum#VERIFICATION_CODE(验证码)、REGISTER_SUCCESS(注册成功) 、充值、算税、发薪、到账、系统更新

VERIFICATION_CODE

title

varchar(300)

no

模板标题

提现成功

content

varchar(1000)

no

模板内容

【腾讯】您已从${company}公司成功提现${amount}元。

out_template_id

varchar(60)

no

外部模板id,对应第三方的短信id

162632

表结构如下:
DROP TABLE IF EXISTS  msg_notify_template;
CREATE TABLE msg_notify_template (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,notify_channel varchar(30) NOT NULL COMMENT '通知渠道:SMS/PAGE_POPUP/NOTIFY_CENTER',msg_language varchar(10) NOT NULL COMMENT '消息语言:zh/en',msg_type varchar(30) NOT NULL COMMENT '消息类型:对应枚举NotifyTypeEnum#VERIFICATION_CODE(验证码)、REGISTER_SUCCESS(注册成功)',title varchar(300) DEFAULT NULL COMMENT '模板标题',content varchar(1000) DEFAULT NULL COMMENT '模板内容,带占位符:【腾讯】您已从${company}公司成功提现${amount}元。',out_template_id varchar(60) DEFAULT NULL COMMENT '外部模板id,对应第三方的短信id',GMT_CREATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,CREATER varchar(32) DEFAULT NULL COMMENT '创建人',GMT_MODIFIED timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,MODIFIER varchar(32) DEFAULT NULL COMMENT '修改人',MEMO varchar(200) DEFAULT NULL COMMENT '备注',PRIMARY KEY (id),UNIQUE KEY uniq_idx_ntype (notify_type,notify_channel,notify_language)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='消息通知模板表';
  • 3.2私有消息通知信息记录表(msg_notify_private_record)
    私有信息通知基本都是文本信息,明确下有没有可能有其它类型的信息?

字段名

类型

允许空

字段说明

示例

id

bigint(20)

no

主键

1

send_sys

varchar

no

发送系统:管家、小程序(B/C),SAAS(PC)、微信公众号、短信、邮件

1

send_id

bigint(20)

no

发送者id,如果为0则表示是系统发送

0

rec_id

bigint(20)

no

接受者id

123

language

语言

语言:zh/en

title

varchar(100)

no

标题

提现成功

content

varchar(500)

no

内容

【腾讯】您已从腾讯公司成功提现100元。

more_content

varchar(1000)

no

更多内容,很多情况下是空

null

status

varchar(10)

no

信息状态:未读、已读

未读

hyperlink

varchar(1000)

yes

跳转链接

url

表结构如下:
DROP TABLE IF EXISTS  msg_notify_private_record;
CREATE TABLE msg_notify_record (id bigint(20) unsigned NOT NULL AUTO_INCREMENT,send_sys varchar(10) NOT NULL DEFAULT '1' COMMENT '发送系统:管家、小程序(B/C),SAAS(PC)、微信公众号',send_id bigint(20) NOT NULL DEFAULT 0 COMMENT '发送者id,如果为0则表示是系统发送',rec_id bigint(20) NOT NULL DEFAULT 0 COMMENT '接受者id',title varchar(100) DEFAULT NULL COMMENT '标题',content varchar(500) DEFAULT NULL COMMENT '内容,带占位符:【腾讯】您已从腾讯公司成功提现100元。',more_content varchar(1000) DEFAULT NULL COMMENT '更多内容',status varchar(10) NOT NULL DEFAULT '未读' COMMENT '信息状态:未读、已读、失效',hyperlink varchar(1000) DEFAULT NULL COMMENT '跳转链接',GMT_CREATE timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,CREATER varchar(32) DEFAULT NULL COMMENT '创建人',GMT_MODIFIED timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,MODIFIER varchar(32) DEFAULT NULL COMMENT '修改人',MEMO varchar(200) DEFAULT NULL COMMENT '备注',PRIMARY KEY (id),UNIQUE KEY uniq_idx_ntype (notify_type,notify_channel,notify_language)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='消息通知基础信息记录表';
  • 3.3 公有消息通知信息记录表(msg_notify_public_record)
    公有信息包括文本,图片,语音消息,公有信息一般都是由后台管理员发送出去,主要包括网站公告,banner,活动,系统更新等。

字段名

类型

允许空

字段说明

示例

id

bigint(20)

no

主键

1

msg_location

bigint(20)

no

信息的显示位置

0

index

bigint(20)

no

接受者id

123

language

int

语言

send_id

bigint(20)

no

发送者id,管理员id

0

display_platform

int

显示的平台。1- web端, 2-移动端

msg_type

int

no

信息类型:1-文本、2-图片、3-语音

1

text_title

varchar(100)

文本的标题

text_content

varchar(500)

文本的内容,支持富文本

img_desc

varchar(100)

图片描述

img_url

varchar(500)

图片存储地址

hyperlink

varchar(500)

超链接

status

int

1-有效、0-删除

表结构如下:
drop table if exists msg_notify_public_record;
create table msg_notify_public_record(
id bigint(20)  not null auto_increment comment 'id自增',
msg_location int(11) not null default '0' comment '文本的显示位置',
index int(11) not null comment '文本的序号',
language int(11) not null comment '语言',
status varchar(10) not null default '未读' comment '状态:1-有效;0-删除‘,
hyperlink varchar(1000) default null comment '跳转链接',
gmt_create timestamp not null default current_timestamp,
creater varchar(32) default null comment '创建人',
gmt_modifier timestamp not null default current_timestamp,
modifier varchar(32) default null comment '修改人',
memo varchar(200) default null comment '备注',
primary key (id),
) engine=innodb auto_increment=1 default charset=utf8 row_format=dynamic comment = '公有消息通知信息记录表'
  • 四、实现方案
    1、新建一个基础微服务:base_notify,微服务里面实现手机短信发送,邮件发送,对以上消息通知表的操作,提供发送短信和邮件的RPC接口
    2、提供一个基础组件,实现以上三类应用场景的实现,具体实现思路待考虑。

http://chatgpt.dhexx.cn/article/1nVw780u.shtml

相关文章

图书管理系统设计文档汇总

1.编写目的: 现阶段大学生对于课外的书籍阅读越来越看重,有更多的意愿去了解本专业之外的内容以及拓展本专业外的技能。建立一个图书管理借阅数据库方便大家的学习。 2.数据库命名规则: 利用“_”作为连接符,将名词连接在一起&…

学生信息管理系统详细设计文档

第一章引言 1.1编写目的 本文档给出了“学生信息管理系统”的详细设计。针对高校学生群体数量较大,为方便高校学生信息管理,我们设计了一个较为高效的学生信息管理系统。编写该文档目的:便于用户,开发人员之间进行理解和交流&am…

[计算机通信网络]以太网的帧格式详解

目录 一、前言 二、以太网的帧格式 Preamble(前导码): SFD(帧开始定界符): Destination Address,Source Address: Type/Len(类型/长度): Da…

单片机与计算机之间通讯 程序,如何实现计算机与单片机之间的通信

描述 本文是关于计算机与单片机的通信实验的应用。主要包括实验原理阐述、硬件电路图、源程序等 目录: 1、单片机串口通信的应用 2、PC控制单片机IO口输出 3、单片机控制实训指导及综合应用实例 4、单片机给计算机发送数据: [实验任务&#x…

853-两台计算机之间是如何通信的?

1. 五层协议参考模型 所谓通信协议就是通信双方都必须要遵守的通信规则。如果没有网络通信协议,计算机的数据将无法发送到网络上,更无法到达对方计算机,即使能够到达,对方也未必能读懂。有了通信协议,网络通信才能够发…

设备VMnet0 上的网桥当前未运行。此虚拟机无法与主机或网格中的其他计算机通信

关闭虚拟机后(下面要恢复默认设置前需要关机),打开 编辑菜单》虚拟网络编辑器 打开后恢复默认设置或修改VMnet0为“自动桥接”,直到与步骤2结果一样,点确定关闭设置窗口。 开机前先“虚拟机设置》网格适配器》设置状态…

网络工程属于计算机还是通信,通信工程属于计算机大类吗 哪个大类

通信工程专业属于电子信息类,属于计算机(大类)类。通信工程不算是计算机的相关专业,通信工程(也作电信工程,旧称远距离通信工程、弱电工程)是电子工程的一个重要分支,电子信息类子专业,同时也是其中一个基础学科。 通信工程相近专…

计算机网络通信技术的重要性,分析计算机网络通信技术的特点及应用效果

摘要:随着计算机网络技术的快速发展,在很多领域中都可以实现该技术的合理利用。本文针对计算机网络通信技术的特点进行分析,并且结合实际情况,提出该技术的未来发展前景,为计算机网络通信技术的应用效果提供有效保障。…

2018计算机通信网络,2018年1-12月我国计算机、通信和其他电子设备制造业企业数量共计16656个...

中国报告网提示: 参考观研天下发布《2019年中国电子设备市场分析报告-市场深度分析与未来商机预测》 &nb 2018年1-12月我国计算机、通信和其他电子设备制造业企业数量共计16656个,累计同比增长5.69%;其中,1-12月我国计算机、通…

【计算机通信网络复习】第1章-计算机网络概论

计算机网络概论 1.1 计算机网络的形成与发展(了解) 1.1.1 计算机网络发展阶段的划分 第一阶段:计算机网络的形成与发展 (1)时间:20世纪50年代。 (2)特点:1. 数据通信技…

【计算机网络】网络通信基础

文章目录 网络通信基础网络通信基本概念信息的传递过程数据通信网络基本概念网络设备交换机(Switch)路由器(Router)防火墙(Firewall)无线设备 局域网、城域网、广域网网络拓扑 网络通信基础 计算机网络 计…

计算机网络数据通信论文,浅谈计算机网络与数据通信的发展

浅谈计算机网络与数据通信的发展 随着计算机网络技术与多媒体通信技术的广泛运用,数据通信是行业发展的必然趋势,下面是小编搜集整理的一篇探究计算机网络与数据通信发展的论文范文,欢迎阅读查看。 摘 要:数据通信是通信技术和计算机技术相结合而产生的一种新的通信方式,未…

通信网与计算机网络的区别,计算机网络和计算机通信网络之间的本质区别是什么?...

原标题:计算机网络和计算机通信网络之间的本质区别是什么? 1、用途不同 计算机网络在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递。计算机通信在计算机与计算机之间或计算机与终端设备之间进行…

计算机通信与网络(一)

一、计算机通信与网络基础 1.计算机通信与网络的发展 四个阶段: 其中第二阶段产生了分组交换网,分组交换网是以网络为中心,主机都处在网络的外围。 第三阶段形成了基于TCP/IP的因特网。TCP(Transmission Control Protocol&…

我国计算机通信技术现状及未来的发展趋势,概述计算机通信技术的发展趋势

概述计算机通信技术的发展趋势 随着世界信息化科技的快速发展,我国的计算机网络通信需求随着人们生活的丰富多彩而不断扩增,以下是小编搜集整理的一篇探究计算机网络通信新技术的论文范文,供大家阅读参考。 摘 要:随着我国科技信息的快速发展,计算机网络通信方面也随着其需…

pta 计算机通信(并查集)

有n台计算机,编号为1到n。设定如果计算机a和计算机b可以通信,则计算机b和计算机a亦可以通信;如果计算机a和计算机b可以相互通信,计算机b和计算机c可以相互通信,则计算机a和计算机c亦可以相互通信。现给定某些计算机的可…

计算机网络与无线通信系统学习1:计算机通信网概述

一、计算机通信网 计算机通信网通常也简称为计算机网络。它是计算机的运算和处理功能同通信系统的信息传输功能相结合的产物。这两种功能的结合所产生的效果远远超过了它们各自发展所能达到的目标。今天,不管是哪个国家的、从事哪个职业的人,从小孩到老…

计算机网络杨庚第一章答案,《计算机通信与网络》习题答案

杨庚等 编著 第一章习题解答 1.1 什么是计算机网络? 答: 我们可以把计算机网络定义为:把分布在不同地点且具有独立功能的多个计算机,通过通信设备和线路连接起来,在功能完善的网络软件运行下,以实现网络中资…

计算机通信逻辑信号电信号,计算机通信原理

计算机通信的基本原理是将电信号转换为逻辑信号,其转换方式是将高低电平表示为二进制数中的1和0, 再通过不同的二进制序列来表示所有的信息。也就是将数据以二进制中的0和1的比特流的电的电压做为表示,产生的脉冲通过媒介(通讯设备)来传输数据&#xff0…

计算机通信基础及协议

目录 一、计算机连接方式 1.网线直连 2.同轴电缆(Coaxial) 3.集线器(Hub) 4.网桥(Bridge) 5.交换机(Switch) 6.路由器(Router) 二、MAC地址 1.MAC地址的表示格式 2.MAC地址操作 3.MA…