Forráskód Böngészése

NotifyService 中添加 SysMessageService, 通知发送失败是发送系统通知

reghao 1 éve
szülő
commit
d5d3f8afdb

+ 14 - 7
web/src/main/java/cn/reghao/devops/web/admin/sys/service/NotifyService.java

@@ -27,11 +27,14 @@ public class NotifyService {
     private final DingNotify dingNotify;
     private final EmailNotify emailNotify;
     private final NotifyReceiverRepository notifyReceiverRepository;
+    private SysMessageService sysMessageService;
 
-    public NotifyService(DingNotify dingNotify, EmailNotify emailNotify, NotifyReceiverRepository notifyReceiverRepository) {
+    public NotifyService(DingNotify dingNotify, EmailNotify emailNotify,
+                         NotifyReceiverRepository notifyReceiverRepository, SysMessageService sysMessageService) {
         this.dingNotify = dingNotify;
         this.emailNotify = emailNotify;
         this.notifyReceiverRepository = notifyReceiverRepository;
+        this.sysMessageService = sysMessageService;
     }
 
     public <T> void notify(T msg) {
@@ -41,14 +44,14 @@ public class NotifyService {
             if (notifyReceiver != null) {
                 receiver = notifyReceiver.getUrl();
                 DingMsg dingMsg = (DingMsg) msg;
-                threadPool.execute(new NotifyTask<>(dingNotify, receiver, dingMsg));
+                threadPool.execute(new NotifyTask<>(sysMessageService, dingNotify, receiver, dingMsg));
             }
         } else if (msg instanceof EmailMsg) {
             NotifyReceiver notifyReceiver = notifyReceiverRepository.findByType(NotifyType.email.getName());
             if (notifyReceiver != null) {
                 receiver = notifyReceiver.getUrl();
                 EmailMsg emailMsg = (EmailMsg) msg;
-                threadPool.execute(new NotifyTask<>(emailNotify, receiver, emailMsg));
+                threadPool.execute(new NotifyTask<>(sysMessageService, emailNotify, receiver, emailMsg));
             }
         }
     }
@@ -56,10 +59,10 @@ public class NotifyService {
     public <T> void notify(String receiver, T msg) {
         if (msg instanceof DingMsg) {
             DingMsg dingMsg = (DingMsg) msg;
-            threadPool.execute(new NotifyTask<>(dingNotify, receiver, dingMsg));
+            threadPool.execute(new NotifyTask<>(sysMessageService, dingNotify, receiver, dingMsg));
         } else if (msg instanceof EmailMsg) {
             EmailMsg emailMsg = (EmailMsg) msg;
-            threadPool.execute(new NotifyTask<>(emailNotify, receiver, emailMsg));
+            threadPool.execute(new NotifyTask<>(sysMessageService, emailNotify, receiver, emailMsg));
         }
     }
     /**
@@ -68,11 +71,13 @@ public class NotifyService {
      * @date 2021-06-23 上午9:29
      */
     static class NotifyTask<T> implements Runnable {
+        private SysMessageService sysMessageService;
         private final Notify<T> notify;
         private final String receiver;
         private final T msg;
 
-        public NotifyTask(Notify<T> notify, String receiver, T msg) {
+        public NotifyTask(SysMessageService sysMessageService, Notify<T> notify, String receiver, T msg) {
+            this.sysMessageService = sysMessageService;
             this.notify = notify;
             this.receiver = receiver;
             this.msg = msg;
@@ -83,7 +88,9 @@ public class NotifyService {
             try {
                 notify.send(receiver, msg);
             } catch (Exception e) {
-                log.error("发送给 {} 的通知失败 -> {}", receiver, e.getMessage());
+                String title = "发送通知失败";
+                String content = String.format("发送给 %s 的通知失败 -> %s", receiver, e.getMessage());
+                sysMessageService.putSysMessage(title, content);
             }
         }
     }