67 lines
2.6 KiB
Markdown
67 lines
2.6 KiB
Markdown
|
# 消息通知组件
|
|||
|
|
|||
|
## 如何使用
|
|||
|
|
|||
|
`com.simaek.notify.NotifyConfigManager`
|
|||
|
|
|||
|
实现getNotifyConfig(NotifyType notifyType, String id),从数据库或者配置文件读取通知器配置
|
|||
|
|
|||
|
|
|||
|
`com.simaek.notify.template.AbstractTemplateManager`
|
|||
|
|
|||
|
实现方法getProperties(NotifyType notifyType, String id),从数据库或者配置文件读取模板配置
|
|||
|
|
|||
|
`com.simaek.notify.AbstractNotifierManager`
|
|||
|
|
|||
|
默认实现所有的方法,直接继承,有需要再覆写。
|
|||
|
|
|||
|
## 消息发送
|
|||
|
|
|||
|
需要实现或者覆写的功能全都完成了,直接使用即可,有两种发送方式。
|
|||
|
|
|||
|
1、使用预配置的模板发送信息(适用于定时提醒、验证码等较为常用的信息)
|
|||
|
|
|||
|
需要提供两个参数:notifierId,templateId。
|
|||
|
|
|||
|
```
|
|||
|
// 通过配置信息的ID,和通知类型获取通知器
|
|||
|
Notifier<Template> notifier = notifierManager.getNotifier(DefaultNotifyType.email, notifierId);
|
|||
|
// 通过模板管理器获取模板
|
|||
|
Template template = templateManager.getTemplate(DefaultNotifyType.email, templateId);
|
|||
|
// 指定使用的消息模板和上下文,上下文用于对模板中的形如${name}的变量进行提换
|
|||
|
notifier.send(template, new HashMap<>());
|
|||
|
```
|
|||
|
|
|||
|
2、使用自定义模板发送信息(适用于自定义消息),以短信为例。
|
|||
|
|
|||
|
需要提供一个参数:notifierId。
|
|||
|
|
|||
|
```
|
|||
|
// 创建短信模板
|
|||
|
TelecomSmsTemplate smsTemplate = new TelecomSmsTemplate();
|
|||
|
smsTemplate.setMobile("18605120786,13047986669");
|
|||
|
smsTemplate.setContent("你好,您的验证码是:${code},验证码有效期5分钟。");
|
|||
|
|
|||
|
// 创建模板配置文件
|
|||
|
TemplateProperties templateProperties = new TemplateProperties();
|
|||
|
// 定义模板类型为短信
|
|||
|
templateProperties.setType(DefaultNotifyType.sms.getId());
|
|||
|
// 选择短信服务提供商
|
|||
|
templateProperties.setProvider(SmsProvider.js139.getId());
|
|||
|
// 配置文件为了兼容不同模板,是使用JSON字符串进行存储的,需要转换一下
|
|||
|
templateProperties.setTemplate(JSON.toJSONString(smsTemplate));
|
|||
|
|
|||
|
// 使用通知管理器创建模板,这一步会对模板进行渲染
|
|||
|
Template template = templateManager.createTemplate(DefaultNotifyType.sms, templateProperties);
|
|||
|
Map<String, Object> context = new HashMap<>();
|
|||
|
context.put("code", "123456");
|
|||
|
|
|||
|
// 获取短信通知器并发送信息
|
|||
|
Notifier<Template> notifier = notifierManager.getNotifier(DefaultNotifyType.sms, notifierId);
|
|||
|
notifier.send(template, context);
|
|||
|
```
|
|||
|
|
|||
|
## 其他
|
|||
|
|
|||
|
目前对接的通知服务有钉钉、微信公众号、企业微信、阿里云短信、云信通短信、电子邮件。如果想实现自己的通知器,实现core模块中的接口即可。
|