From 40a8157440e3b906da8f52e07d939d78c3f4c313 Mon Sep 17 00:00:00 2001
From: wlzboy <66905212@qq.com>
Date: 星期日, 12 四月 2026 16:14:06 +0800
Subject: [PATCH] feat: 任务增加统计、同步增加通知

---
 ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java |   47 ++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 40 insertions(+), 7 deletions(-)

diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java
index 48833d3..fc50c9b 100644
--- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/WechatTaskNotifyServiceImpl.java
+++ b/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=鍚敤锛宖alse=绂佺敤
+     */
+    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("寰俊閫氱煡澶辫触锛屼换鍔′笉瀛樺湪锛宼askId={}", taskId);
+//            log.warn("寰俊閫氱煡澶辫触锛屼换鍔′笉瀛樺湪锛宼askId={}", 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);
             }

--
Gitblit v1.9.1