From 5761e42a376499e3db827b7565cc6b50987b7af8 Mon Sep 17 00:00:00 2001 From: nagocoler Date: Tue, 14 Jan 2025 23:35:44 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=8B=AC=E7=AB=8B=E7=9A=84?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=E5=8F=91=E9=80=81=E9=A1=B5=E9=9D=A2=EF=BC=8C?= =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=82=AE=E4=BB=B6=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...{VerifyMailError.java => VerifyEmail.java} | 13 ++++++-- .../example/listener/ErrorQueueListener.java | 8 ++--- .../example/listener/MailQueueListener.java | 13 ++++++++ ...rrorMapper.java => VerifyEmailMapper.java} | 4 +-- my-project-frontend/src/router/index.js | 6 +++- my-project-frontend/src/views/AdminView.vue | 3 +- .../src/views/admin/EmailAdmin.vue | 32 +++++++++++++++++++ .../src/views/admin/UserAdmin.vue | 5 ++- 8 files changed, 73 insertions(+), 11 deletions(-) rename my-project-backend/src/main/java/com/example/entity/dto/{VerifyMailError.java => VerifyEmail.java} (60%) rename my-project-backend/src/main/java/com/example/mapper/{VerifyMailErrorMapper.java => VerifyEmailMapper.java} (53%) create mode 100644 my-project-frontend/src/views/admin/EmailAdmin.vue diff --git a/my-project-backend/src/main/java/com/example/entity/dto/VerifyMailError.java b/my-project-backend/src/main/java/com/example/entity/dto/VerifyEmail.java similarity index 60% rename from my-project-backend/src/main/java/com/example/entity/dto/VerifyMailError.java rename to my-project-backend/src/main/java/com/example/entity/dto/VerifyEmail.java index 5c4db28..98441e1 100644 --- a/my-project-backend/src/main/java/com/example/entity/dto/VerifyMailError.java +++ b/my-project-backend/src/main/java/com/example/entity/dto/VerifyEmail.java @@ -10,12 +10,21 @@ import java.util.Date; @Data @Accessors(chain = true) -@TableName("db_error_verify_mail") -public class VerifyMailError { +@TableName("db_verify_email") +public class VerifyEmail { @TableId(type = IdType.AUTO) Integer id; String email; String type; String code; Date time; + boolean success; + + public static VerifyEmail success() { + return new VerifyEmail().setSuccess(true); + } + + public static VerifyEmail failure() { + return new VerifyEmail().setSuccess(false); + } } diff --git a/my-project-backend/src/main/java/com/example/listener/ErrorQueueListener.java b/my-project-backend/src/main/java/com/example/listener/ErrorQueueListener.java index 5216854..c16c494 100644 --- a/my-project-backend/src/main/java/com/example/listener/ErrorQueueListener.java +++ b/my-project-backend/src/main/java/com/example/listener/ErrorQueueListener.java @@ -1,8 +1,8 @@ package com.example.listener; import com.example.entity.QueueMessage; -import com.example.entity.dto.VerifyMailError; -import com.example.mapper.VerifyMailErrorMapper; +import com.example.entity.dto.VerifyEmail; +import com.example.mapper.VerifyEmailMapper; import com.example.utils.Const; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -18,14 +18,14 @@ import java.util.Date; public class ErrorQueueListener { @Resource - VerifyMailErrorMapper mapper; + VerifyEmailMapper mapper; @RabbitHandler public void saveErrorToDatabase(QueueMessage message) { log.error("出现一条错误的队列消息: {}", message); switch (message.getMessageType()) { case "email" -> { - VerifyMailError error = new VerifyMailError() + VerifyEmail error = VerifyEmail.failure() .setCode(message.get("code").toString()) .setType(message.get("type")) .setEmail(message.get("email")) diff --git a/my-project-backend/src/main/java/com/example/listener/MailQueueListener.java b/my-project-backend/src/main/java/com/example/listener/MailQueueListener.java index 0cf90e1..fe75d58 100644 --- a/my-project-backend/src/main/java/com/example/listener/MailQueueListener.java +++ b/my-project-backend/src/main/java/com/example/listener/MailQueueListener.java @@ -1,6 +1,8 @@ package com.example.listener; import com.example.entity.QueueMessage; +import com.example.entity.dto.VerifyEmail; +import com.example.mapper.VerifyEmailMapper; import com.example.utils.Const; import jakarta.annotation.Resource; import lombok.extern.slf4j.Slf4j; @@ -11,6 +13,8 @@ import org.springframework.mail.SimpleMailMessage; import org.springframework.mail.javamail.JavaMailSender; import org.springframework.stereotype.Component; +import java.util.Date; + /** * 用于处理邮件发送的消息队列监听器 */ @@ -22,6 +26,9 @@ public class MailQueueListener { @Resource JavaMailSender sender; + @Resource + VerifyEmailMapper emailMapper; + @Value("${spring.mail.username}") String username; @@ -51,6 +58,12 @@ public class MailQueueListener { if(mailMessage == null) return; log.info("正在向 {} 发送 {} 类型的电子邮件...", email, type); sender.send(mailMessage); + VerifyEmail record = VerifyEmail.success() + .setCode(message.get("code").toString()) + .setType(message.get("type")) + .setEmail(message.get("email")) + .setTime(new Date()); + emailMapper.insert(record); } /** diff --git a/my-project-backend/src/main/java/com/example/mapper/VerifyMailErrorMapper.java b/my-project-backend/src/main/java/com/example/mapper/VerifyEmailMapper.java similarity index 53% rename from my-project-backend/src/main/java/com/example/mapper/VerifyMailErrorMapper.java rename to my-project-backend/src/main/java/com/example/mapper/VerifyEmailMapper.java index ea57bed..7f9cb7b 100644 --- a/my-project-backend/src/main/java/com/example/mapper/VerifyMailErrorMapper.java +++ b/my-project-backend/src/main/java/com/example/mapper/VerifyEmailMapper.java @@ -1,9 +1,9 @@ package com.example.mapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; -import com.example.entity.dto.VerifyMailError; +import com.example.entity.dto.VerifyEmail; import org.apache.ibatis.annotations.Mapper; @Mapper -public interface VerifyMailErrorMapper extends BaseMapper { +public interface VerifyEmailMapper extends BaseMapper { } diff --git a/my-project-frontend/src/router/index.js b/my-project-frontend/src/router/index.js index c48227c..c915703 100644 --- a/my-project-frontend/src/router/index.js +++ b/my-project-frontend/src/router/index.js @@ -69,8 +69,12 @@ const router = createRouter({ component: () => import('@/views/admin/UserAdmin.vue') }, { path: 'forum', - name: 'forum-setting', + name: 'admin-forum', component: () => import('@/views/admin/ForumAdmin.vue') + }, { + path: 'email', + name: 'admin-email', + component: () => import('@/views/admin/EmailAdmin.vue') } ] } diff --git a/my-project-frontend/src/views/AdminView.vue b/my-project-frontend/src/views/AdminView.vue index e3a0bcd..95c79ae 100644 --- a/my-project-frontend/src/views/AdminView.vue +++ b/my-project-frontend/src/views/AdminView.vue @@ -5,7 +5,7 @@ import { DataLine, Document, Files, - Location, + Location, Message, Monitor, Notification, Position, School, Umbrella, User @@ -19,6 +19,7 @@ const adminMenu = [ { title: '校园论坛管理', icon: Location, sub: [ {title: '用户管理', icon: User, index: '/admin/user' }, + {title: '邮件发信管理', icon: Message, index: '/admin/email' }, {title: '帖子广场管理', icon: ChatDotSquare, index: '/admin/forum' }, {title: '失物招领管理', icon: Bell}, {title: '校园活动管理', icon: Notification}, diff --git a/my-project-frontend/src/views/admin/EmailAdmin.vue b/my-project-frontend/src/views/admin/EmailAdmin.vue new file mode 100644 index 0000000..0ba4c97 --- /dev/null +++ b/my-project-frontend/src/views/admin/EmailAdmin.vue @@ -0,0 +1,32 @@ + + + + + diff --git a/my-project-frontend/src/views/admin/UserAdmin.vue b/my-project-frontend/src/views/admin/UserAdmin.vue index 5fb459c..ae1c918 100644 --- a/my-project-frontend/src/views/admin/UserAdmin.vue +++ b/my-project-frontend/src/views/admin/UserAdmin.vue @@ -40,7 +40,7 @@ watchEffect(() => apiUserList(userTable.page, userTable.size, data => { 论坛用户列表
在这里管理论坛的所有用户,包括账号信息、封禁和禁言
- +