1.不同的系统的消息,管理后台、小程序(B/C)、微信公众号、短信、邮件等
2.不同业务的消息,充值、提现到账、系统更新、公告等
3.消息明细,标题、简述、详情、已读未读状态
4.有效时间,失效时间
5.支持界面的接下来操作,跳转按钮
6.语音消息?图片消息?富文本消息?
1.私有信息,需要告知多个服务平台,需要用到MQ进行解藕 2.私有信息,不需要告知多个服务平台,直接调用 3.公开信息,一份信息广播给大部分/所有用户时,比如网站公告、banner、活动、系统更新等信息,需要用到MQ及时更新缓存
需要考虑做成一个组件,各个应用需要使用是调用即可
利用MQ进行业务解偶。
因为涉及到资金相关,生产者需要保证消息至少一次成功,所以要有重试逻辑;消费者需要考虑因为重试导致的多次消费问题,所以需要加幂等处理,幂等可以使用Redis去做
公共信息的获取主要特性是有大量用户获取的数据是同一份数据,比如网站公告、banner、活动 那么如果每次都从数据库拿,势必会对数据库造成很多流量,再加上这类数据一般修改不频繁,所以放在最外层的服务缓存 当有修改时,MQ通知出去
消息通知模板主要是方便在发送通知时可以灵活使用模版,模版主要包括:
【腾讯】您充值的 ${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='消息通知模板表';
私有信息通知基本都是文本信息,明确下有没有可能有其他类型的信息???
字段名 | 类型 | 允许空 | 字段说明 | 示例 |
---|---|---|---|---|
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='消息通知基础信息记录表';
公有信息包括文本、图片、语音消息,公有信息一般都是由后台管理员发送出去,主要包括网站公告、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_MODIFIED 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.新建一个基础微服务:basic-notify,微服务里面实现手机短信发送、邮件发送、对以上消息通知表的操作,提供发送短信和邮件的RPC接口
2.提供一个基础组件,实现以上三类应用场景的实现,具体实现思路待考虑
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。