编辑 | blame | 历史 | 原始文档

微信订阅消息开关使用说明

一、配置项说明

配置键:wechat.subscribe.message.enabled

属性
配置名称 微信订阅消息开关
配置键 wechat.subscribe.message.enabled
配置类型 N (普通参数)
默认值 true
可选值 true / false

配置说明

  • true: 启用微信订阅消息推送(默认)
  • false: 禁用微信订阅消息推送

二、SQL脚本

执行以下SQL脚本添加配置:

INSERT INTO sys_config (config_name, config_key, config_value, config_type, create_by, create_time, update_by, update_time, remark) 
VALUES 
('微信订阅消息开关', 'wechat.subscribe.message.enabled', 'true', 'N', 'admin', NOW(), 'admin', NOW(), 
 '控制是否启用微信订阅消息推送功能。true=启用,false=禁用。关闭后系统将不再发送任何订阅消息。');

三、功能说明

1. 开关控制范围

该开关控制以下场景的订阅消息发送:

  • ✅ 新任务创建时通知执行人
  • ✅ 任务更新时通知相关人员
  • ✅ 旧系统同步任务时的通知
  • ✅ 手动触发的任务通知
  • ✅ 所有通过 IWechatTaskNotifyService 发送的消息

2. 开关关闭后的表现

当开关设置为 false 时:
- 系统将跳过所有订阅消息发送
- 日志记录:订阅消息发送已关闭,跳过发送,taskId=xxx
- 不影响其他业务逻辑
- 返回值为 0(发送成功数量为0)

3. 异常处理

  • 如果配置读取失败,默认为 启用 状态
  • 确保系统正常运行,避免因配置异常导致功能中断

四、使用场景

1. 测试环境

在测试环境中关闭消息推送,避免测试数据触发真实消息:

UPDATE sys_config 
SET config_value = 'false' 
WHERE config_key = 'wechat.subscribe.message.enabled';

2. 生产维护

在系统维护期间临时关闭消息推送:

-- 关闭消息推送
UPDATE sys_config 
SET config_value = 'false' 
WHERE config_key = 'wechat.subscribe.message.enabled';

-- 维护完成后恢复
UPDATE sys_config 
SET config_value = 'true' 
WHERE config_key = 'wechat.subscribe.message.enabled';

3. 故障排查

当微信接口异常时,临时关闭消息推送,避免大量错误日志:

UPDATE sys_config 
SET config_value = 'false' 
WHERE config_key = 'wechat.subscribe.message.enabled';

五、管理界面操作

通过后台管理界面修改

  1. 登录系统管理后台
  2. 进入 系统管理 > 参数设置
  3. 搜索 微信订阅消息开关
  4. 修改参数值为 truefalse
  5. 保存后 立即生效,无需重启服务

六、技术实现

代码位置

  • 配置SQL: /sql/wechat_subscribe_message_config.sql
  • 服务实现: /ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java

核心代码

/**
 * 检查是否启用订阅消息发送
 */
private boolean isSubscribeMessageEnabled() {
    try {
        String enabled = configService.selectConfigByKey("wechat.subscribe.message.enabled");
        return "true".equalsIgnoreCase(enabled);
    } catch (Exception e) {
        log.warn("获取订阅消息开关配置失败,默认启用", e);
        return true; // 默认启用
    }
}

七、注意事项

  1. ⚠️ 修改配置后立即生效,无需重启服务
  2. ⚠️ 关闭开关会影响所有订阅消息发送
  3. ⚠️ 默认值为 true(启用),确保正常业务不受影响
  4. ⚠️ 建议在生产环境保持开启状态
  5. ⚠️ 测试环境建议关闭,避免误发消息给真实用户

八、验证方法

1. 验证配置已添加

SELECT * FROM sys_config WHERE config_key = 'wechat.subscribe.message.enabled';

2. 验证开关生效

关闭开关:
sql UPDATE sys_config SET config_value = 'false' WHERE config_key = 'wechat.subscribe.message.enabled';

创建测试任务:
- 观察日志是否输出:订阅消息发送已关闭,跳过发送
- 确认没有实际发送微信消息

恢复开关:
sql UPDATE sys_config SET config_value = 'true' WHERE config_key = 'wechat.subscribe.message.enabled';

九、相关配置

该功能配合以下配置使用:

  • weixin.access_token.{appId} - 微信AccessToken缓存
  • weixin.access_token_expires.{appId} - AccessToken过期时间
  • wechat.task.notify.template.id - 任务通知模板ID (application.yml)
  • wechat.task.detail.page - 任务详情页路径 (application.yml)