Skip to content

Commit 4d6c6fa

Browse files
committed
feat: Add comment notifications for posts
1 parent 98e6988 commit 4d6c6fa

File tree

3 files changed

+51
-0
lines changed

3 files changed

+51
-0
lines changed

backend/main-service/src/main/java/io/blog/devlog/domain/comment/controller/CommentController.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import io.blog.devlog.domain.user.service.UserService;
1313
import io.blog.devlog.global.exception.NoPermissionException;
1414
import io.blog.devlog.global.exception.NotFoundException;
15+
import io.blog.devlog.global.redis.message.CommentEmailMessage;
16+
import io.blog.devlog.global.redis.service.CommentEmailPubService;
1517
import lombok.RequiredArgsConstructor;
1618
import lombok.extern.slf4j.Slf4j;
1719
import org.springframework.http.ResponseEntity;
@@ -27,9 +29,12 @@
2729
@RequestMapping("/comments")
2830
@Slf4j
2931
public class CommentController {
32+
3033
private final UserService userService;
3134
private final PostService postService;
3235
private final CommentService commentService;
36+
private final CommentEmailPubService commentEmailPubService;
37+
3338
@PostMapping
3439
public void uploadComment(@RequestBody RequestCommentDto requestCommentDto) {
3540
log.info("RequestCommentDto : " + requestCommentDto);
@@ -42,6 +47,16 @@ public void uploadComment(@RequestBody RequestCommentDto requestCommentDto) {
4247
throw new NoPermissionException("댓글을 작성할 권한이 없습니다.");
4348
}
4449
commentService.saveComment(user, requestCommentDto, postDetail.getPost());
50+
51+
CommentEmailMessage emailMessage = new CommentEmailMessage(
52+
postDetail.getPost().getUser().getEmail(),
53+
String.format("[devLog] {%s} 게시글에 댓글이 달렸습니다.", postDetail.getPost().getTitle()),
54+
postDetail.getPost().getTitle(),
55+
postDetail.getPost().getUrl(),
56+
requestCommentDto.getContent(),
57+
user.getUsername()
58+
);
59+
commentEmailPubService.sendEmail(emailMessage);
4560
}
4661

4762
@PostMapping("/{commentId}")
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package io.blog.devlog.global.redis.message;
2+
3+
import lombok.AllArgsConstructor;
4+
import lombok.Getter;
5+
import lombok.NoArgsConstructor;
6+
7+
@Getter
8+
@NoArgsConstructor
9+
@AllArgsConstructor
10+
public class CommentEmailMessage {
11+
private String email;
12+
private String subject;
13+
private String postName;
14+
private String postUrl;
15+
private String commentContent;
16+
private String commentAuthor;
17+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package io.blog.devlog.global.redis.service;
2+
3+
import io.blog.devlog.global.redis.message.CommentEmailMessage;
4+
import io.blog.devlog.global.redis.message.VerifyEmailMessage;
5+
import lombok.RequiredArgsConstructor;
6+
import lombok.extern.slf4j.Slf4j;
7+
import org.springframework.data.redis.core.RedisTemplate;
8+
import org.springframework.stereotype.Service;
9+
10+
@Service
11+
@RequiredArgsConstructor
12+
@Slf4j
13+
public class CommentEmailPubService {
14+
private final RedisTemplate<String, Object> redisTemplate;
15+
16+
public void sendEmail(CommentEmailMessage emailMessage) {
17+
redisTemplate.convertAndSend("CommentEmail", emailMessage);
18+
}
19+
}

0 commit comments

Comments
 (0)