# diboot-message 使用说明
# 1、引入依赖
Maven
<dependency>
<groupId>com.diboot</groupId>
<artifactId>diboot-message-spring-boot-starter</artifactId>
<version>{latestVersion}</version>
</dependency>
1
2
3
4
5
2
3
4
5
或Gradle:
compile("com.diboot:diboot-message-spring-boot-starter:{latestVersion}")
1
组件依赖的数据表message、message_template,在组件starter初次启动时将自动初始化。
如果使用diboot-devtools,还可一键生成该组件相关的controller等基础代码到本地项目下。
# 2、参数配置:
diboot-message组件有以下配置项,用于初始化设置 配置参数:
# 是否初始化sql,默认true,初始化之后(或非开发环境)可以关闭
diboot.component.message.init-sql=false
# 其他spring mail starter相关的参数按spring的文档配置
# spring.mail.xxx
1
2
3
4
5
2
3
4
5
# 3. 使用说明
# 3.1 如何发送简单邮件
diboot-message
组件中内置了邮件发送能力,需要邮件发送的场景可以直接使用,调用代码如下:
// 需要发送的消息实体
Message message = new Message()
.setChannel("EMAIL")
.setSender("xxx@qq.com")
.setReceiver("xxx@qq.com")
.setStatus("SEND")
.setTitle("发送标题")
// 这里为消息模版编码
.setTemplateCode("code")
.setBusinessType("业务类型")
.setBusinessCode("业务标识别")
.setExtDataAttribute(Message.RECEIVERS, "xxx@qq.com");
//构建需要替换的变量
BaseVariableData variableData = new BaseVariableData()
.setPhone(currentUser.getMobilePhone())
.setRealName(currentUser.getRealname());
// 调用发送
messageService.send(message, variableData);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Message#setChannel()
属性channel的值,需要和发送通道类型保持一致,(类型见字典MESSAGE_CHANNEL
)
通过
BaseVariableData
对象设置的属性将会自动替换需要发送模版中存在的变量,具体替换逻辑可以参考SystemTemplateVariableServiceImpl
提供的逻辑
# 3.2 如何自定义发送通道
- 发送通道需要实现接口
ChannelStrategy
,并实现send
方法 - 示例代码如下:
/**
* websocket发送通道
*
* @author : uu
* @version : v1.0
* @Date 2021/2/20 15:45
*/
@Slf4j
@Service("WEBSOKET")
public class WebsocketChannel implements ChannelStrategy {
@Override
public void send(Message message) {
// 具体实现
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
注:通道必须手动指定bean名称,且名称规则为消息组件发送通道类型(类型见字典
MESSAGE_CHANNEL
)
# 3.3 如何自定义后端模版变量
- 默认我们提供了一个系统模版变量容器
SystemTemplateVariableServiceImpl
,但是有时候并不能满足您的需求,此时你可以通过自定义模版变量来替换,代码如下:
public class CustomTemplateVariableServiceImpl implements TemplateVariableService {
@Override
public String parseTemplate2Content(String templateContent, BaseVariableData baseVariableData) throws Exception {
// 模版解析处理,可以参考系统内置的处理方式
}
/**
* 用户名变量
*
* @param baseVariableData
* @return
*/
@TemplateVariable(name = "${用户姓名}")
private String getRealName(VariableData baseVariableData) {
return V.notEmpty(baseVariableData.getRealName()) ? baseVariableData.getRealName() : "";
}
/**
* 手机号变量
*
* @param baseVariableData
* @return
*/
@TemplateVariable(name = "${手机号}")
private String getMobilePhone(VariableData baseVariableData) {
return V.notEmpty(baseVariableData.getPhone()) ? baseVariableData.getPhone() : "";
}
/**
* 邮箱变量
*
* @param baseVariableData
* @return
*/
@TemplateVariable(name = "${邮箱}")
private String getEmail(VariableData baseVariableData) {
return V.notEmpty(baseVariableData.getEmail()) ? baseVariableData.getEmail() : "";
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
注:
TemplateVariable#name
的变量名称会被自动提取至前端,供新建消息模版选择
使用过程中遇到问题,可加群交流。