wlzboy
2026-01-24 b2bd9fb71ee17d0ec73429f03dc87c87a0a38325
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java
@@ -5,12 +5,16 @@
import com.ruoyi.common.utils.DateUtils;
import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.common.utils.WechatUtils;
import com.ruoyi.system.domain.SysTask;
import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.domain.SysConfig;
import com.ruoyi.system.mapper.SysConfigMapper;
import com.ruoyi.system.mapper.SysTaskEmergencyMapper;
import com.ruoyi.system.mapper.SysTaskMapper;
import com.ruoyi.system.domain.SysTask;
import com.ruoyi.system.domain.SysTaskEmergency;
import com.ruoyi.system.mapper.SysUserMapper;
import com.ruoyi.system.service.IWechatTaskNotifyService;
import com.ruoyi.system.service.IWechatAccessTokenService;
import com.ruoyi.system.service.ISysConfigService;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -44,6 +48,30 @@
    @Autowired
    private WechatConfig wechatConfig;
    
    @Autowired
    private IWechatAccessTokenService wechatAccessTokenService;
    @Autowired
    private ISysConfigService configService;
    /**
     * 检查是否启用订阅消息发送
     *
     * @return true=启用,false=禁用
     */
    private boolean isSubscribeMessageEnabled() {
        try {
            String enabled = configService.selectConfigByKey("wechat.subscribe.message.enabled");
            return "true".equalsIgnoreCase(enabled);
        } catch (Exception e) {
            log.warn("获取订阅消息开关配置失败,默认启用", e);
            return true; // 默认启用
        }
    }
    /**
     * 发送任务通知消息给指定用户列表
     * 
@@ -54,23 +82,28 @@
     */
    @Override
    public int sendTaskNotifyMessage(Long taskId, List<Long> userIds, Long excludeUserId) {
        // 检查订阅消息开关
        if (!isSubscribeMessageEnabled()) {
//            log.info("订阅消息发送已关闭,跳过发送,taskId={}", taskId);
            return 0;
        }
        if (taskId == null || userIds == null || userIds.isEmpty()) {
            log.warn("发送微信任务通知参数不完整,taskId={}, userIds={}", taskId, userIds);
//            log.warn("发送微信任务通知参数不完整,taskId={}, userIds={}", taskId, userIds);
            return 0;
        }
        
        // 查询任务信息
        SysTask task = sysTaskMapper.selectSysTaskByTaskId(taskId);
        if (task == null) {
            log.warn("微信通知失败,任务不存在,taskId={}", taskId);
//            log.warn("微信通知失败,任务不存在,taskId={}", taskId);
            return 0;
        }
        
        // 查询急救信息
        SysTaskEmergency emergency = sysTaskEmergencyMapper.selectSysTaskEmergencyByTaskId(taskId);
        
        // 获取微信AccessToken
        String accessToken = WechatUtils.getAccessToken(wechatConfig.getAppId(), wechatConfig.getAppSecret());
        // 获取微信AccessToken(走应用级缓存)
        String accessToken = wechatAccessTokenService.getAppAccessToken();
        if (StringUtils.isEmpty(accessToken)) {
            log.error("获取微信AccessToken失败,无法发送任务通知");
            return 0;
@@ -103,7 +136,7 @@
            try {
                WechatUtils.sendSubscribeMessage(accessToken, user.getOpenId(), templateId, page, data);
                successCount++;
                log.info("微信任务通知发送成功,taskId={}, userId={}, userName={}", taskId, userId, user.getUserName());
//                log.info("微信任务通知发送成功,taskId={}, userId={}, userName={}", taskId, userId, user.getUserName());
            } catch (Exception e) {
                log.error("微信任务通知发送失败,taskId={}, userId={}", taskId, userId, e);
            }