Skip to content

消息中心

业务方可通过自定义Bean的方式,将消息模板的初始信息及字段信息注册到消息中心。

注册普通消息模板

java

@Data
@EqualsAndHashCode(callSuper = true)
@MessageTemplate(
        key = "TEST",
        name = "测试消息模板",
        businessKey = "TEST_BIZ",
        businessName = "测试业务"
)
public static class TestMessage extends MessageWrapper implements Serializable {

    private static final long serialVersionUID = -2579640606059938979L;

    @MessageParam(description = "消息字段一")
    private String testField1;

    @MessageParam(description = "消息字段二")
    private String testField2;

    @MessageParam(description = "消息字段三")
    private String testField3;

    @MessageParam(description = "消息字段四")
    private String testField4;

    @UserReceiver(description = "消息接收人-用户")
    private String testReceiverId1;

    @RoleReceiver(description = "消息接收人-角色")
    private String userId;

    @DeptReceiver(description = "消息接收人-部门")
    private String deptId;

    @PostReceiver(description = "消息接收人-岗位")
    private String postId;

    @MenuReceiver(description = "消息接收人-菜单")
    private List<String> menuIds;
}

注册内置消息模板

java

@Data
@EqualsAndHashCode(callSuper = true)
@MessageTemplate(
        key = MESSAGE_KEY_APPROVE_REJECT,
        name = "审批拒绝通知",
        businessKey = MESSAGE_BUSINESS_KEY,
        businessName = MESSAGE_BUSINESS_NAME,
        internal = true,
        channel = @MessageChannel(
                type = MessageSendChannelEnum.SYSTEM,
                redirect = @MessageRedirect(link = "approve://approve/${formInstanceId}", linkName = "审批详情")
        ),
        content = "您提交的 ${formName} 已被 ${approveUserName} 拒绝,请及时查看。\r\n" +
                "拒绝原因:${approveComment}"
)
public static class ApproveRejectNotify extends MessageWrapper implements Serializable {

    private static final long serialVersionUID = -2579640606059938979L;

    @MessageParam(description = "表单实例编号")
    private String formInstanceId;

    @MessageParam(description = "表单名称")
    private String formName;

    @MessageParam(description = "审批人")
    private String approveUserName;

    @MessageParam(description = "拒绝原因")
    private String approveComment;

    @UserReceiver(description = "审批发起人")
    private String userId;
}

注解

  • @MessageTemplate

功能定义消息模板的初始信息
使用位置
参数类型默认值说明
keyStringN/A消息模板唯一标识。
nameStringN/A消息模板名称。
businessKeyStringN/A消息模板所属业务标识。
businessNameStringN/A消息模板所属业务名称。
internalBooleanfalse是否为内置消息模板。
contentStringN/A内置消息模板内容。
internal为true时必填。
channel@MessageChannel[]N/A内置消息模板发送渠道。
internal为true时必填。
allBooleanfalse是否发送给全体用户。
  • @MessageChannel

功能定义内置消息模板的发送渠道信息
使用位置@MessageTemplate中的channel参数
参数类型默认值说明
typeMessageSendChannelEnumN/A消息发送渠道类型。
SYSTEM:系统消息
WECHAT_MINI_SUBSCRIBE:微信小程序-订阅消息
SMS:短信
idStringN/A消息发送渠道编号。
发送渠道类型为WECHAT_MINI_SUBSCRIBE和SMS时必填。
填写内容为微信小程序或短信平台唯一标识。
nameStringN/A消息发送渠道名称。
templateIdStringN/A消息发送渠道模板编号。
发送渠道类型为WECHAT_MINI_SUBSCRIBE和SMS时必填。
填写内容为微信小程序或短信平台上的模板编号。
redirect@MessageRedirect[]N/A消息跳转链接信息。
  • @MessageParam

功能定义消息模板参数信息
使用位置字段
参数类型默认值说明
descriptionStringN/A参数描述。
mappedStringN/A映射参数名。
发送渠道类型为WECHAT_MINI_SUBSCRIBE和SMS且使用微信小程序或短信平台的模板时必填。
填写内容为微信小程序或短信平台模板中定义的参数名。
mappedDescriptionStringN/A映射参数描述。
发送渠道类型为WECHAT_MINI_SUBSCRIBE和SMS且使用微信小程序或短信平台的模板时必填。
填写内容为微信小程序或短信平台模板中定义的参数描述。
  • @MessageRedirect

功能定义消息模板跳转链接信息
使用位置字段
参数类型默认值说明
linkStringN/A跳转链接地址。
可使用${变量名}的方式向跳转链接内传参。
linkNameStringN/A跳转链接名称。
orderInteger1跳转链接名称排序值。
  • @UserReceiver

功能定义用户类型的消息接收人信息
使用位置字段
参数类型默认值说明
descriptionStringN/A接收人参数描述。
消息直接发送给具体用户时标记于存放用户编号的字段上。
  • @RoleReceiver

功能定义角色类型的消息接收人信息
使用位置字段
参数类型默认值说明
descriptionStringN/A接收人参数描述。
消息直接发送给角色下的用户时标记于存放角色编号的字段上。
  • @DeptReceiver

功能定义部门类型的消息接收人信息
使用位置字段
参数类型默认值说明
descriptionStringN/A接收人参数描述。
消息直接发送给部门下的用户时标记于存放部门编号的字段上。
功能定义菜单类型的消息接收人信息
使用位置字段
参数类型默认值说明
descriptionStringN/A接收人参数描述。
消息直接发送给拥有菜单权限的用户时标记于存放菜单编号的字段上。
  • @PostReceiver

功能定义岗位类型的消息接收人信息
使用位置字段
参数类型默认值说明
descriptionStringN/A接收人参数描述。
消息直接发送给岗位下的用户时标记于存放岗位编号的字段上。

消息模板配置

// TODO 新增消息模板配置、配置消息发送渠道

发送消息

实例化消息体后,调用MessageSender.send方法即可完成消息的发送。

MessageSender.send方法提供了两个重载:

  • public static R<Object> send(Object body)

按照消息体中定义的接收人发送消息。

  • public static R<Object> send(Object body, List<String> ignoreUserIds)

按照消息体定义中的接收人发送消息,并可指定排除哪些用户。

ignoreUserIds中指定的用户将不会接收到消息。

查看消息

  • 查看我的消息

image.png

  • 查看消息发送记录

image.png

常见问题


msApi和wechatApi没有实现类

解决方法:

xml

<dependency>
    <groupId>com.ikingtech.platform</groupId>
    <artifactId>business-message</artifactId>
    <!--用于屏蔽business-message引入的短信推送依赖和微信消息推送依赖-->
    <exclusions>
        <exclusion>
            <groupId>com.ikingtech.platform</groupId>
            <artifactId>push-sms</artifactId>
        </exclusion>
        <exclusion>
            <groupId>com.ikingtech.platform</groupId>
            <artifactId>push-wechat</artifactId>
        </exclusion>
    </exclusions>
</dependency>