wlzboy
5 天以前 fe33646ee6e2d1e57f2b51812e94983a0e9efb04
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,6 +82,11 @@
     */
    @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);
            return 0;
@@ -69,8 +102,8 @@
        // 查询急救信息
        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;