信息推送功能使用

站内信、公告

信息推送功能界面

操作步骤

  1. 点击【信息推送】菜单,进入信息推送管理页面
  2. 点击【新增】按钮,选择创建站内信或公告
  3. 填写相关信息:
    • 标题:消息或公告的标题
    • 内容:详细信息内容
    • 接收范围:选择接收用户群体(不选择 发送全部)

功能说明

  • 站内信:系统会根据选中的群发范围,将消息发送给指定用户,在系统右上角的通知铃铛刷新可见
  • 公告:发布后将在系统首页的公告选项卡位置进行显示,所有用户可见

业务工具

RemoteMessageService 是一个基于 Feign 的远程调用接口,用于实现远程消息的发送功能,包括发送短信、邮件、钩子消息以及站内信/公告。此服务主要通过 RESTful API 的形式与其他微服务进行交互。该接口提供了以下几种消息发送功能:

  1. 短信 (SMS) - 用于发送手机短信通知,支持验证码、通知等场景
  2. 邮件 (Email) - 支持发送普通文本、HTML 格式邮件,可包含附件
  3. 钩子 (Hook) - 支持发送消息到第三方平台,如企业微信、钉钉等
  4. 站内信/公告 (Notice) - 支持发送系统内部消息和全局公告

定义业务编码

bizCode 是一个用于标识消息发送渠道的唯一编码,用于区分不同的消息发送渠道。在发送消息时,需要指定对应的 bizCode,以便消息服务能够正确识别消息发送渠道。

配置位置

在系统中,您可以通过以下路径配置消息渠道:

基础工具 > 信息推送 > 短信 | 邮件 | Hook

每种消息类型的配置包含:

  • 短信配置:配置短信服务商信息和模板
  • 邮件配置:配置 SMTP 服务器信息和邮件模板
  • Hook配置:配置第三方 webhook 接口和消息格式
  • 站内信配置:配置系统内部消息模板和发送规则
消息渠道配置界面

使用示例

1. 发送短信示例

@Autowired
private RemoteMessageService remoteMessageService;

public void sendSmsExample() {
    MessageSmsDTO smsDTO = MessageSmsDTO.builder()
            .mobile("13800138000")
            .biz("业务编码")
            .param("code", "123456")
            .build();
    R result = remoteMessageService.sendSms(smsDTO);
}

2. 发送邮件示例

import java.util.List;

@Autowired
private RemoteMessageService remoteMessageService;

public void sendEmailExample() {
    // 发送普通文本邮件
    MessageEmailDTO emailDTO = new MessageEmailDTO();
    emailDTO.getMailAddress().add("user@example.com");
    emailDTO.setTitle("欢迎邮件");
    emailDTO.setBody("欢迎您加入我们的平台!");
    emailDTO.setBizCode("业务编码");

    // 发送 HTML 邮件
    MessageEmailDTO emailDTO = new MessageEmailDTO();
    emailDTO.getMailAddress().add("user@example.com");
    emailDTO.setTitle("活动通知");
    emailDTO.setHtml("尊敬的用户,您的优惠码是:${code}");
    emailDTO.getHtmlValues().put("code", "123456");
    emailDTO.setBizCode("业务编码");

    // 发送带附件的邮件
    MessageEmailDTO emailDTO = new MessageEmailDTO();
    emailDTO.getMailAddress().add("user@example.com");
    emailDTO.setTitle("项目报告");
    emailDTO.setBody("请查收附件中的项目报告。");
    emailDTO.getAttachmentList().add("对应【文件上传功能】 fileName");
    emailDTO.setBizCode("业务编码");
    
    R result = remoteMessageService.sendEmail(emailDTO);
}

3. 发送钩子消息示例

企业微信

企业微信配置

钉钉

钉钉配置

飞书

飞书配置
public void sendHookExample() {
    MessageHookDTO hookDTO = new MessageHookDTO();
    hookDTO.setBizCode("业务编码");
    hookDTO.setMessageContent("服务器 CPU 使用率超过 90%");
    hookDTO.setMessageType("text"); // text 或 markdown /link
    R result = remoteMessageService.sendHook(hookDTO);
}

4. 发送站内信/公告示例

接口说明

sendNotice 方法用于发送站内信和公告,通过 category 字段区分消息类型。公告会在系统首页展示,站内信发送到指定用户的通知中心。

import java.util.List;

@Autowired
private RemoteMessageService remoteMessageService;

public void sendNoticeExample() {
    // 发送公告(全员)
    MessageNoticeDTO notice = new MessageNoticeDTO();
    notice.setCategory("0");  // 0-公告
    notice.setTitle("系统升级通知");
    notice.setContent("系统将于今晚22:00进行升级维护");
    notice.setAllFlag("1");   // 全员通知
    remoteMessageService.sendNotice(notice);

    // 发送站内信(指定用户)
    MessageNoticeDTO message = new MessageNoticeDTO();
    message.setCategory("1");  // 1-站内信
    message.setTitle("审批通知");
    message.setContent("您有一条待审批的请假申请");
    message.setAllFlag("0");
    message.setUserIds(List.of(1L, 2L, 3L));
    remoteMessageService.sendNotice(message);
}
参数说明
  • category: 消息类型(0-公告,1-站内信)
  • title: 消息标题
  • content: 消息内容
  • allFlag: 是否全员通知(1-是,0-否)
  • userIds: 接收用户 ID 列表(当 allFlag=0 时必填)