diff --git a/aurora-springboot/src/main/java/com/aurora/constant/CommonConstant.java b/aurora-springboot/src/main/java/com/aurora/constant/CommonConstant.java
index 953f3df..1e7f774 100644
--- a/aurora-springboot/src/main/java/com/aurora/constant/CommonConstant.java
+++ b/aurora-springboot/src/main/java/com/aurora/constant/CommonConstant.java
@@ -40,4 +40,6 @@ public interface CommonConstant {
String COMMENT_REMIND = "评论提醒";
+ String MENTION_REMIND = "@提醒";
+
}
diff --git a/aurora-springboot/src/main/java/com/aurora/consumer/CommentNoticeConsumer.java b/aurora-springboot/src/main/java/com/aurora/consumer/CommentNoticeConsumer.java
index c1f7b7a..16bda3c 100644
--- a/aurora-springboot/src/main/java/com/aurora/consumer/CommentNoticeConsumer.java
+++ b/aurora-springboot/src/main/java/com/aurora/consumer/CommentNoticeConsumer.java
@@ -9,7 +9,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
-import static com.aurora.constant.CommonConstant.*;
import static com.aurora.constant.RabbitMQConstant.EMAIL_QUEUE;
@Component
@@ -21,12 +20,8 @@ public class CommentNoticeConsumer {
@RabbitHandler
public void process(byte[] data) {
- EmailDTO mailDTO = JSON.parseObject(new String(data), EmailDTO.class);
- if (CAPTCHA.equals(mailDTO.getSubject()) || CHECK_REMIND.equals(mailDTO.getSubject())) {
- emailUtil.sendSimpleMail(mailDTO);
- }
- if (COMMENT_REMIND.equals(mailDTO.getSubject())) {
- emailUtil.sendHtmlMail(mailDTO);
- }
+ EmailDTO emailDTO = JSON.parseObject(new String(data), EmailDTO.class);
+ emailUtil.sendHtmlMail(emailDTO);
}
+
}
diff --git a/aurora-springboot/src/main/java/com/aurora/consumer/SubscribeConsumer.java b/aurora-springboot/src/main/java/com/aurora/consumer/SubscribeConsumer.java
index 20ec5c6..e028bdc 100644
--- a/aurora-springboot/src/main/java/com/aurora/consumer/SubscribeConsumer.java
+++ b/aurora-springboot/src/main/java/com/aurora/consumer/SubscribeConsumer.java
@@ -15,7 +15,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
+import java.util.HashMap;
import java.util.List;
+import java.util.Map;
import java.util.stream.Collectors;
import static com.aurora.constant.CommonConstant.TRUE;
@@ -45,14 +47,20 @@ public class SubscribeConsumer {
List emails = users.stream().map(UserInfo::getEmail).collect(Collectors.toList());
for (String email : emails) {
EmailDTO emailDTO = new EmailDTO();
+ Map map = new HashMap<>();
emailDTO.setEmail(email);
emailDTO.setSubject("文章订阅");
+ emailDTO.setTemplate("common.html");
+ String url = websiteUrl + "/articles/" + articleId;
if (article.getUpdateTime() == null) {
- emailDTO.setContent("花未眠的个人博客发布了新的文章,地址:" + websiteUrl + "/articles/" + articleId);
+ map.put("content", "花未眠的个人博客发布了新的文章,"
+ + "点击查看");
} else {
- emailDTO.setContent("花未眠的个人博客对《" + article.getArticleTitle() + "》进行了更新,地址:" + websiteUrl + "/articles/" + articleId);
+ map.put("content", "花未眠的个人博客对《" + article.getArticleTitle() + "》进行了更新,"
+ + "点击查看");
}
- emailUtil.sendSimpleMail(emailDTO);
+ emailDTO.setCommentMap(map);
+ emailUtil.sendHtmlMail(emailDTO);
}
}
diff --git a/aurora-springboot/src/main/java/com/aurora/controller/CommentController.java b/aurora-springboot/src/main/java/com/aurora/controller/CommentController.java
index db93d70..fbd0fd6 100644
--- a/aurora-springboot/src/main/java/com/aurora/controller/CommentController.java
+++ b/aurora-springboot/src/main/java/com/aurora/controller/CommentController.java
@@ -25,7 +25,7 @@ public class CommentController {
@Autowired
private CommentService commentService;
- @AccessLimit(seconds = 60,maxCount = 3)
+ @AccessLimit(seconds = 60, maxCount = 3)
@OptLog(optType = SAVE)
@ApiOperation("添加评论")
@PostMapping("/comments/save")
diff --git a/aurora-springboot/src/main/java/com/aurora/interceptor/AccessLimitInterceptor.java b/aurora-springboot/src/main/java/com/aurora/interceptor/AccessLimitInterceptor.java
index 576a914..94dece4 100644
--- a/aurora-springboot/src/main/java/com/aurora/interceptor/AccessLimitInterceptor.java
+++ b/aurora-springboot/src/main/java/com/aurora/interceptor/AccessLimitInterceptor.java
@@ -36,7 +36,7 @@ public class AccessLimitInterceptor implements HandlerInterceptor {
if (accessLimit != null) {
long seconds = accessLimit.seconds();
int maxCount = accessLimit.maxCount();
- String key = IpUtil.getIpAddress(httpServletRequest) + hm.getMethod().getName();
+ String key = IpUtil.getIpAddress(httpServletRequest) + "-" + hm.getMethod().getName();
try {
long q = redisService.incrExpire(key, seconds);
if (q > maxCount) {
diff --git a/aurora-springboot/src/main/java/com/aurora/model/dto/EmailDTO.java b/aurora-springboot/src/main/java/com/aurora/model/dto/EmailDTO.java
index ef60921..47b040b 100644
--- a/aurora-springboot/src/main/java/com/aurora/model/dto/EmailDTO.java
+++ b/aurora-springboot/src/main/java/com/aurora/model/dto/EmailDTO.java
@@ -17,8 +17,6 @@ public class EmailDTO {
private String subject;
- private String content;
-
private Map commentMap;
private String template;
diff --git a/aurora-springboot/src/main/java/com/aurora/service/impl/ArticleServiceImpl.java b/aurora-springboot/src/main/java/com/aurora/service/impl/ArticleServiceImpl.java
index 0225f84..cc519e8 100644
--- a/aurora-springboot/src/main/java/com/aurora/service/impl/ArticleServiceImpl.java
+++ b/aurora-springboot/src/main/java/com/aurora/service/impl/ArticleServiceImpl.java
@@ -203,9 +203,7 @@ public class ArticleServiceImpl extends ServiceImpl impl
}
}
List archiveDTOs = new ArrayList<>();
- map.forEach((key, value) -> {
- archiveDTOs.add(ArchiveDTO.builder().Time(key).articles(value).build());
- });
+ map.forEach((key, value) -> archiveDTOs.add(ArchiveDTO.builder().Time(key).articles(value).build()));
archiveDTOs.sort((o1, o2) -> {
String[] o1s = o1.getTime().split("-");
String[] o2s = o2.getTime().split("-");
diff --git a/aurora-springboot/src/main/java/com/aurora/service/impl/CommentServiceImpl.java b/aurora-springboot/src/main/java/com/aurora/service/impl/CommentServiceImpl.java
index 90ccbea..d30a7b3 100644
--- a/aurora-springboot/src/main/java/com/aurora/service/impl/CommentServiceImpl.java
+++ b/aurora-springboot/src/main/java/com/aurora/service/impl/CommentServiceImpl.java
@@ -119,9 +119,7 @@ public class CommentServiceImpl extends ServiceImpl impl
List replyDTOS = commentMapper.listReplies(commentIds);
Map> replyMap = replyDTOS.stream()
.collect(Collectors.groupingBy(ReplyDTO::getParentId));
- commentDTOs.forEach(item -> {
- item.setReplyDTOs(replyMap.get(item.getId()));
- });
+ commentDTOs.forEach(item -> item.setReplyDTOs(replyMap.get(item.getId())));
return new PageResultDTO<>(commentDTOs, commentCount);
}
@@ -211,11 +209,40 @@ public class CommentServiceImpl extends ServiceImpl impl
private void notice(Comment comment, String fromNickname) {
if (comment.getUserId().equals(comment.getReplyUserId())) {
- return;
+ if (Objects.nonNull(comment.getParentId())) {
+ Comment parentComment = commentMapper.selectById(comment.getParentId());
+ if (parentComment.getUserId().equals(comment.getUserId())) {
+ return;
+ }
+ }
}
if (comment.getUserId().equals(BLOGGER_ID) && Objects.isNull(comment.getParentId())) {
return;
}
+ if (Objects.nonNull(comment.getParentId())) {
+ Comment parentComment = commentMapper.selectById(comment.getParentId());
+ if (!comment.getReplyUserId().equals(parentComment.getUserId())
+ && !comment.getReplyUserId().equals(comment.getUserId())) {
+ UserInfo userInfo = userInfoMapper.selectById(comment.getUserId());
+ UserInfo replyUserinfo = userInfoMapper.selectById(comment.getReplyUserId());
+ Map map = new HashMap<>();
+ String topicId = Objects.nonNull(comment.getTopicId()) ? comment.getTopicId().toString() : "";
+ String url = websiteUrl + getCommentPath(comment.getType()) + topicId;
+ map.put("content", userInfo.getNickname() + "在" + Objects.requireNonNull(getCommentEnum(comment.getType())).getDesc()
+ + "的评论区@了你,"
+ + "点击查看");
+ EmailDTO emailDTO = EmailDTO.builder()
+ .email(replyUserinfo.getEmail())
+ .subject(MENTION_REMIND)
+ .template("common.html")
+ .commentMap(map)
+ .build();
+ rabbitTemplate.convertAndSend(EMAIL_EXCHANGE, "*", new Message(JSON.toJSONBytes(emailDTO), new MessageProperties()));
+ }
+ if (comment.getUserId().equals(parentComment.getUserId())) {
+ return;
+ }
+ }
String title;
Integer userId = BLOGGER_ID;
String topicId = Objects.nonNull(comment.getTopicId()) ? comment.getTopicId().toString() : "";
@@ -237,21 +264,21 @@ public class CommentServiceImpl extends ServiceImpl impl
} else {
title = Objects.requireNonNull(getCommentEnum(comment.getType())).getDesc();
}
- UserInfo user = userInfoMapper.selectById(userId);
- if (StringUtils.isNotBlank(user.getEmail())) {
- EmailDTO emailDTO = getEmailDTO(comment, user, fromNickname, topicId, title, userId);
+ UserInfo userInfo = userInfoMapper.selectById(userId);
+ if (StringUtils.isNotBlank(userInfo.getEmail())) {
+ EmailDTO emailDTO = getEmailDTO(comment, userInfo, fromNickname, topicId, title);
rabbitTemplate.convertAndSend(EMAIL_EXCHANGE, "*", new Message(JSON.toJSONBytes(emailDTO), new MessageProperties()));
}
}
- private EmailDTO getEmailDTO(Comment comment, UserInfo user, String fromNickname, String topicId, String title, Integer userId) {
+ private EmailDTO getEmailDTO(Comment comment, UserInfo userInfo, String fromNickname, String topicId, String title) {
EmailDTO emailDTO = new EmailDTO();
+ Map map = new HashMap<>();
if (comment.getIsReview().equals(TRUE)) {
- Map map = new HashMap<>();
String url = websiteUrl + getCommentPath(comment.getType()) + topicId;
if (Objects.isNull(comment.getParentId())) {
- emailDTO.setEmail(user.getEmail());
- emailDTO.setSubject("评论提醒");
+ emailDTO.setEmail(userInfo.getEmail());
+ emailDTO.setSubject(COMMENT_REMIND);
emailDTO.setTemplate("owner.html");
String createTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(comment.getCreateTime());
map.put("time", createTime);
@@ -260,26 +287,42 @@ public class CommentServiceImpl extends ServiceImpl impl
map.put("nickname", fromNickname);
map.put("content", comment.getCommentContent());
} else {
- Comment parentComment = commentMapper.selectOne(new LambdaQueryWrapper().select(Comment::getCommentContent, Comment::getCreateTime).eq(Comment::getId, comment.getParentId()));
- emailDTO.setEmail(user.getEmail());
- emailDTO.setSubject("评论提醒");
+ Comment parentComment = commentMapper.selectOne(new LambdaQueryWrapper().select(Comment::getUserId, Comment::getCommentContent, Comment::getCreateTime).eq(Comment::getId, comment.getParentId()));
+ if (!userInfo.getId().equals(parentComment.getUserId())) {
+ userInfo = userInfoMapper.selectById(parentComment.getUserId());
+ }
+ emailDTO.setEmail(userInfo.getEmail());
+ emailDTO.setSubject(COMMENT_REMIND);
emailDTO.setTemplate("user.html");
map.put("url", url);
map.put("title", title);
String createTime = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm").format(parentComment.getCreateTime());
map.put("time", createTime);
- map.put("toUser", user.getNickname());
+ map.put("toUser", userInfo.getNickname());
map.put("fromUser", fromNickname);
map.put("parentComment", parentComment.getCommentContent());
- map.put("replyComment", comment.getCommentContent());
+ if (!comment.getReplyUserId().equals(parentComment.getUserId())) {
+ UserInfo mentionUserInfo = userInfoMapper.selectById(comment.getReplyUserId());
+ if (Objects.nonNull(mentionUserInfo.getWebsite())) {
+ map.put("replyComment", "@" + mentionUserInfo.getNickname() + " " + "" + parentComment.getCommentContent());
+ } else {
+ map.put("replyComment", "@" + mentionUserInfo.getNickname() + " " + parentComment.getCommentContent());
+ }
+ } else {
+ map.put("replyComment", parentComment.getCommentContent());
+ }
}
- emailDTO.setCommentMap(map);
} else {
String adminEmail = userInfoMapper.selectById(BLOGGER_ID).getEmail();
emailDTO.setEmail(adminEmail);
- emailDTO.setSubject("审核提醒");
- emailDTO.setContent("您收到了一条新的回复,请前往后台管理页面审核");
+ emailDTO.setSubject(CHECK_REMIND);
+ emailDTO.setTemplate("common.html");
+ map.put("content", "您收到了一条新的回复,请前往后台管理页面审核");
}
+ emailDTO.setCommentMap(map);
return emailDTO;
}
+
}
diff --git a/aurora-springboot/src/main/java/com/aurora/service/impl/JobServiceImpl.java b/aurora-springboot/src/main/java/com/aurora/service/impl/JobServiceImpl.java
index 4a6ca08..6880b66 100644
--- a/aurora-springboot/src/main/java/com/aurora/service/impl/JobServiceImpl.java
+++ b/aurora-springboot/src/main/java/com/aurora/service/impl/JobServiceImpl.java
@@ -150,4 +150,5 @@ public class JobServiceImpl extends ServiceImpl implements JobSe
}
ScheduleUtil.createScheduleJob(scheduler, job);
}
+
}
diff --git a/aurora-springboot/src/main/java/com/aurora/service/impl/UserAuthServiceImpl.java b/aurora-springboot/src/main/java/com/aurora/service/impl/UserAuthServiceImpl.java
index 5e9426f..b46a6f5 100644
--- a/aurora-springboot/src/main/java/com/aurora/service/impl/UserAuthServiceImpl.java
+++ b/aurora-springboot/src/main/java/com/aurora/service/impl/UserAuthServiceImpl.java
@@ -32,10 +32,7 @@ import org.springframework.security.crypto.bcrypt.BCrypt;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.Objects;
+import java.util.*;
import java.util.stream.Collectors;
import static com.aurora.constant.RabbitMQConstant.EMAIL_EXCHANGE;
@@ -78,10 +75,13 @@ public class UserAuthServiceImpl implements UserAuthService {
throw new BizException("请输入正确邮箱");
}
String code = getRandomCode();
+ Map map = new HashMap<>();
+ map.put("content", "您的验证码为 " + code + " 有效期15分钟,请不要告诉他人哦!");
EmailDTO emailDTO = EmailDTO.builder()
.email(username)
.subject("验证码")
- .content("您的验证码为 " + code + " 有效期15分钟,请不要告诉他人哦!")
+ .template("common.html")
+ .commentMap(map)
.build();
rabbitTemplate.convertAndSend(EMAIL_EXCHANGE, "*", new Message(JSON.toJSONBytes(emailDTO), new MessageProperties()));
redisService.set(USER_CODE_KEY + username, code, CODE_EXPIRE_TIME);
diff --git a/aurora-springboot/src/main/java/com/aurora/util/EmailUtil.java b/aurora-springboot/src/main/java/com/aurora/util/EmailUtil.java
index c916be5..d4eeb01 100644
--- a/aurora-springboot/src/main/java/com/aurora/util/EmailUtil.java
+++ b/aurora-springboot/src/main/java/com/aurora/util/EmailUtil.java
@@ -3,7 +3,6 @@ package com.aurora.util;
import com.aurora.model.dto.EmailDTO;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
-import org.springframework.mail.SimpleMailMessage;
import org.springframework.mail.javamail.JavaMailSender;
import org.springframework.mail.javamail.MimeMessageHelper;
import org.springframework.stereotype.Component;
@@ -25,15 +24,6 @@ public class EmailUtil {
@Autowired
private TemplateEngine templateEngine;
- public void sendSimpleMail(EmailDTO emailDTO) {
- SimpleMailMessage simpleMail = new SimpleMailMessage();
- simpleMail.setFrom(email);
- simpleMail.setTo(emailDTO.getEmail());
- simpleMail.setSubject(emailDTO.getSubject());
- simpleMail.setText(emailDTO.getContent());
- javaMailSender.send(simpleMail);
- }
-
public void sendHtmlMail(EmailDTO emailDTO) {
try {
MimeMessage mimeMessage = javaMailSender.createMimeMessage();
diff --git a/aurora-springboot/src/main/resources/templates/common.html b/aurora-springboot/src/main/resources/templates/common.html
new file mode 100644
index 0000000..175aa03
--- /dev/null
+++ b/aurora-springboot/src/main/resources/templates/common.html
@@ -0,0 +1,49 @@
+
+
+
+
+ Title
+
+
+
+
+
+
+
+
不管当下的境遇如何,提瓦特大陆的星空永远会有你的位置。——《原神》
+
+
+
+
+
\ No newline at end of file
diff --git a/aurora-springboot/src/main/resources/templates/owner.html b/aurora-springboot/src/main/resources/templates/owner.html
index 3b50a3d..b79b007 100644
--- a/aurora-springboot/src/main/resources/templates/owner.html
+++ b/aurora-springboot/src/main/resources/templates/owner.html
@@ -47,7 +47,7 @@
color:#12addb" th:href="@{${url}}" target="_blank">查看回复的完整內容
-
什么都无法舍弃的人,什么都改变不了。——《进击的巨人》
+
不管当下的境遇如何,提瓦特大陆的星空永远会有你的位置。——《原神》
diff --git a/aurora-vue/aurora-admin/src/views/website/Website.vue b/aurora-vue/aurora-admin/src/views/website/Website.vue
index bfed7b3..e9e5d77 100644
--- a/aurora-vue/aurora-admin/src/views/website/Website.vue
+++ b/aurora-vue/aurora-admin/src/views/website/Website.vue
@@ -147,20 +147,20 @@
- 关闭
开启
+ 关闭
- 关闭
开启
+ 关闭
- 关闭
开启
+ 关闭
diff --git a/aurora-vue/aurora-blog/src/components/Footer.vue b/aurora-vue/aurora-blog/src/components/Footer.vue
index 4b7bdfb..f531e58 100644
--- a/aurora-vue/aurora-blog/src/components/Footer.vue
+++ b/aurora-vue/aurora-blog/src/components/Footer.vue
@@ -11,7 +11,7 @@
-
+
diff --git a/aurora.sql b/aurora.sql
index ea5b9ee..40f225c 100644
--- a/aurora.sql
+++ b/aurora.sql
@@ -218,7 +218,7 @@ INSERT INTO `t_menu` VALUES (214, '网站管理', '/website', '/website/Website.
INSERT INTO `t_menu` VALUES (220, '定时任务日志', '/quartz/log/:quartzId', '/log/QuartzLog.vue', 'el-icon-myguanyuwo', '2022-07-28 10:53:23', '2022-08-05 10:27:47', 2, 19, 1);
INSERT INTO `t_menu` VALUES (221, '说说管理', '/talk-submenu', 'Layout', 'el-icon-mypinglun', '2022-08-15 17:27:10', '2022-08-15 17:27:39', 3, NULL, 0);
INSERT INTO `t_menu` VALUES (222, '说说列表', '/talk-list', '/talk/TalkList.vue', 'el-icon-myiconfontdongtaidianji', '2022-08-15 17:29:05', NULL, 1, 221, 0);
-INSERT INTO `t_menu` VALUES (223, '发布说说', '/talks/:talkId', '/talk/Talk.vue', 'el-icon-myfabusekuai', '2022-08-15 17:34:26', '2022-08-16 16:06:04', 2, 221, 0);
+INSERT INTO `t_menu` VALUES (223, '发布说说', '/talks', '/talk/Talk.vue', 'el-icon-myfabusekuai', '2022-08-15 17:34:26', '2022-08-16 16:06:04', 2, 221, 0);
INSERT INTO `t_menu` VALUES (224, '修改说说', '/talks/:talkId', '/talk/Talk.vue', 'el-icon-myfabusekuai', '2022-08-16 16:06:59', '2022-08-16 16:08:21', 3, 221, 1);
INSERT INTO `t_menu` VALUES (225, '异常日志', '/exception/log', '/log/ExceptionLog.vue', 'el-icon-myguanyuwo', '2022-08-25 13:40:08', '2022-08-25 13:40:31', 1, 19, 0);