Explorar el Código

更新发送通知邮箱的页面和接口

reghao hace 2 años
padre
commit
f8720c4936

+ 58 - 9
manager/src/main/java/cn/reghao/devops/manager/notification/controller/EmailAccountController.java

@@ -1,15 +1,23 @@
 package cn.reghao.devops.manager.notification.controller;
 
 import cn.reghao.devops.manager.notification.db.repository.EmailAccountRepository;
+import cn.reghao.devops.manager.notification.db.repository.NotifyReceiverRepository;
+import cn.reghao.devops.manager.notification.model.NotifyType;
 import cn.reghao.devops.manager.notification.model.po.EmailAccount;
+import cn.reghao.devops.manager.notification.model.po.NotifyReceiver;
 import cn.reghao.devops.manager.util.db.PageSort;
+import cn.reghao.jutil.jdk.result.WebResult;
+import cn.reghao.jutil.jdk.string.StringRegexp;
 import io.swagger.annotations.Api;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
+import org.springframework.http.MediaType;
 import org.springframework.stereotype.Controller;
 import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
 
 /**
  * @author reghao
@@ -19,14 +27,17 @@ import org.springframework.web.bind.annotation.RequestMapping;
 @Controller
 @RequestMapping("/sys/notify/email")
 public class EmailAccountController {
+    private final NotifyReceiverRepository notifyReceiverRepository;
     private final EmailAccountRepository emailAccountRepository;
 
-    public EmailAccountController(EmailAccountRepository emailAccountRepository) {
+    public EmailAccountController(NotifyReceiverRepository notifyReceiverRepository,
+                                  EmailAccountRepository emailAccountRepository) {
+        this.notifyReceiverRepository = notifyReceiverRepository;
         this.emailAccountRepository = emailAccountRepository;
     }
 
     @GetMapping("")
-    public String emailIndex(Model model) throws Exception {
+    public String emailIndex(Model model) {
         PageRequest pageRequest = PageSort.pageRequest();
         Page<EmailAccount> page = emailAccountRepository.findAll(pageRequest);
         page.getContent().forEach(emailAccount -> {
@@ -39,13 +50,51 @@ public class EmailAccountController {
     }
 
     @GetMapping("/add")
-    public String emailAdd(Model model) throws Exception {
+    public String emailAdd(Model model) {
         return "/sys/notify/emailadd";
     }
 
-    @GetMapping("/edit")
-    public String emailEdit(Model model) throws Exception {
-        model.addAttribute("emailAccount", null);
-        return "/sys/notify/emailedit";
+    @PostMapping(value = "/save", produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    public String saveReceiver(@Validated EmailAccount emailAccount) {
+        String email = emailAccount.getUsername();
+        boolean matched = StringRegexp.matchEmail(email);
+        if (!matched) {
+            return WebResult.failWithMsg("邮箱地址格式不正确, 请检查");
+        }
+
+        List<EmailAccount> list = emailAccountRepository.findAll();
+        if (!list.isEmpty()) {
+            EmailAccount emailAccount1 = list.get(0);
+            emailAccount1.setSmtp(emailAccount.getSmtp());
+            emailAccount1.setUsername(emailAccount.getUsername());
+            emailAccount1.setPassword(emailAccount.getPassword());
+            emailAccount1.setPersonal(emailAccount.getPersonal());
+            emailAccountRepository.save(emailAccount1);
+        } else {
+            emailAccountRepository.save(emailAccount);
+        }
+
+        return WebResult.success();
+    }
+
+    @GetMapping("/edit/{username}")
+    public String emailEdit(@PathVariable("username") String username, Model model) throws Exception {
+        List<EmailAccount> list = emailAccountRepository.findAll();
+        model.addAttribute("emailAccount", list.get(0));
+        return "/sys/notify/emailadd";
+    }
+
+    @DeleteMapping(value = "/delete/{username}", produces = MediaType.APPLICATION_JSON_VALUE)
+    @ResponseBody
+    public String deleteEmail(@PathVariable("username") String username) {
+        NotifyReceiver notifyReceiver = notifyReceiverRepository.findByType(NotifyType.email.name());
+        if (notifyReceiver != null) {
+            return WebResult.failWithMsg("系统中存在接收通知的邮箱地址, 不能删除发送通知的邮箱");
+        }
+
+        List<EmailAccount> list = emailAccountRepository.findAll();
+        emailAccountRepository.delete(list.get(0));
+        return WebResult.success();
     }
 }

+ 2 - 9
manager/src/main/resources/templates/sys/notify/email.html

@@ -23,10 +23,6 @@
             <table class="layui-table timo-table">
                 <thead>
                 <tr>
-                    <th class="timo-table-checkbox">
-                        <label class="timo-checkbox"><input type="checkbox">
-                            <i class="layui-icon layui-icon-ok"></i></label>
-                    </th>
                     <th class="sortable" data-field="smtp">SMTP</th>
                     <th class="sortable" data-field="username">用户名</th>
                     <th class="sortable" data-field="password">密码</th>
@@ -36,23 +32,20 @@
                 </thead>
                 <tbody>
                 <tr th:each="item:${list}">
-                    <td><label class="timo-checkbox"><input type="checkbox" th:value="${item.id}">
-                        <i class="layui-icon layui-icon-ok"></i></label></td>
                     <td th:text="${item.smtp}">SMTP</td>
                     <td th:text="${item.username}">用户名</td>
                     <td th:text="${item.password}">密码</td>
                     <td th:text="${item.personal}">发件人</td>
                     <td>
-                        <a class="open-popup" data-title="编辑" th:attr="data-url=@{'/sys/notify/email/edit/'+${item.id}}"
+                        <a class="open-popup" data-title="编辑" th:attr="data-url=@{'/sys/notify/email/edit/'+${item.username}}"
                            data-size="640,480" href="#">编辑</a>
                         <a class="ajax-delete" th:attr="data-msg='确定要删除 '+ ${item.username} + '?'"
-                           th:href="@{'/api/sys/notify/email/' + ${item.id}}">删除</a>
+                           th:href="@{'/sys/notify/email/delete/' + ${item.username}}">删除</a>
                     </td>
                 </tr>
                 </tbody>
             </table>
         </div>
-        <div th:replace="/common/fragment :: page"></div>
     </div>
 </div>
 

+ 2 - 9
manager/src/main/resources/templates/sys/notify/emailadd.html

@@ -6,11 +6,10 @@
 <body>
 <div class="layui-form timo-compile">
     <form th:action="@{/api/sys/notify/email}">
-        <input type="hidden" name="id" th:value="${emailAccount?.id}"/>
         <div class="layui-form-item">
-            <label class="layui-form-label required">账户 ID</label>
+            <label class="layui-form-label required">SMTP</label>
             <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="notifyAccountId" placeholder="请输入账户 ID" required th:value="${emailAccount?.notifyAccountId}">
+                <input class="layui-input" type="text" name="smtp" placeholder="请输入 SMTP 地址" required th:value="${emailAccount?.smtp}">
             </div>
         </div>
         <div class="layui-form-item">
@@ -25,12 +24,6 @@
                 <input class="layui-input" type="text" name="password" placeholder="请输入密码" required th:value="${emailAccount?.password}">
             </div>
         </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label required">SMTP</label>
-            <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="smtp" placeholder="请输入 SMTP 地址" required th:value="${emailAccount?.smtp}">
-            </div>
-        </div>
         <div class="layui-form-item">
             <label class="layui-form-label required">发件人</label>
             <div class="layui-input-inline">

+ 0 - 50
manager/src/main/resources/templates/sys/notify/emailedit.html

@@ -1,50 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org">
-
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
-
-<body>
-<div class="layui-form timo-compile">
-    <form th:action="@{/api/sys/notify/email}">
-        <input type="hidden" name="id" th:value="${emailAccount?.id}"/>
-        <div class="layui-form-item">
-            <label class="layui-form-label required">账户 ID</label>
-            <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="notifyAccountId" placeholder="请输入账户 ID" required th:value="${emailAccount?.notifyAccountId}">
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label required">用户名</label>
-            <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="username" placeholder="请输入用户名" required th:value="${emailAccount?.username}">
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label required">密码</label>
-            <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="password" placeholder="请输入密码" required th:value="${emailAccount?.password}">
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label required">SMTP</label>
-            <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="smtp" placeholder="请输入 SMTP 地址" required th:value="${emailAccount?.smtp}">
-            </div>
-        </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label required">发件人</label>
-            <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="personal" placeholder="请输入发件人名字" required th:value="${emailAccount?.personal}">
-            </div>
-        </div>
-        <div class="layui-form-item timo-finally">
-            <button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
-            <button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
-        </div>
-    </form>
-</div>
-<script th:replace="/common/template :: script"></script>
-<script type="text/javascript">
-</script>
-</body>
-</html>

+ 0 - 7
manager/src/main/resources/templates/sys/notify/receiver.html

@@ -23,10 +23,6 @@
             <table class="layui-table timo-table">
                 <thead>
                 <tr>
-                    <th class="timo-table-checkbox">
-                        <label class="timo-checkbox"><input type="checkbox">
-                            <i class="layui-icon layui-icon-ok"></i></label>
-                    </th>
                     <th class="sortable" data-field="notifyType">通知类型</th>
                     <th class="sortable" data-field="notifyName">通知名字</th>
                     <th class="sortable" data-field="receiver">接收地址</th>
@@ -35,8 +31,6 @@
                 </thead>
                 <tbody>
                 <tr th:each="item:${list}">
-                    <td><label class="timo-checkbox"><input type="checkbox" th:value="${item.id}">
-                        <i class="layui-icon layui-icon-ok"></i></label></td>
                     <td th:text="${item.type}">通知类型</td>
                     <td th:text="${item.name}">通知名字</td>
                     <td th:text="${item.url}">接收地址</td>
@@ -50,7 +44,6 @@
                 </tbody>
             </table>
         </div>
-        <div th:replace="/common/fragment :: page"></div>
     </div>
 </div>