Skip to content

Commit 4cb7467

Browse files
authored
Merge pull request #335 from let-s-record-it/feature-332
feature[#332]: 좋아요 알림 기능 구현
2 parents 450f1b8 + ddce9bb commit 4cb7467

File tree

4 files changed

+30
-0
lines changed

4 files changed

+30
-0
lines changed

src/main/java/com/sillim/recordit/feed/service/FeedLikeService.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,9 @@
66
import com.sillim.recordit.feed.repository.FeedRepository;
77
import com.sillim.recordit.global.exception.ErrorCode;
88
import com.sillim.recordit.global.exception.common.RecordNotFoundException;
9+
import com.sillim.recordit.member.service.MemberQueryService;
10+
import com.sillim.recordit.pushalarm.dto.PushMessage;
11+
import com.sillim.recordit.pushalarm.service.AlarmService;
912
import jakarta.persistence.OptimisticLockException;
1013
import lombok.RequiredArgsConstructor;
1114
import org.hibernate.StaleObjectStateException;
@@ -22,6 +25,8 @@ public class FeedLikeService {
2225

2326
private final FeedLikeRepository feedLikeRepository;
2427
private final FeedRepository feedRepository;
28+
private final AlarmService alarmService;
29+
private final MemberQueryService memberQueryService;
2530

2631
@Retryable(
2732
retryFor = {
@@ -38,6 +43,16 @@ public void feedLike(Long feedId, Long memberId) {
3843
.orElseThrow(() -> new RecordNotFoundException(ErrorCode.FEED_NOT_FOUND));
3944
feed.like();
4045
feedLikeRepository.save(new FeedLike(feed, memberId));
46+
47+
if (!feed.isOwner(memberId)) {
48+
alarmService.pushAlarm(
49+
memberId,
50+
feed.getMemberId(),
51+
PushMessage.fromFeedLike(
52+
feed.getId(),
53+
memberQueryService.findByMemberId(memberId).getPersonalId(),
54+
feed.getTitle()));
55+
}
4156
}
4257

4358
@Retryable(

src/main/java/com/sillim/recordit/pushalarm/dto/AlarmType.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@ public enum AlarmType {
44
SCHEDULE,
55
INVITE,
66
FOLLOWING,
7+
FEED_LIKE,
78
}

src/main/java/com/sillim/recordit/pushalarm/dto/PushMessage.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,4 +36,14 @@ public static PushMessage fromAlarmLog(AlarmLog alarmLog) {
3636
alarmLog.getTitle(),
3737
alarmLog.getBody());
3838
}
39+
40+
public static PushMessage fromFeedLike(
41+
Long feedLikeId, String likerPersonalId, String feedTitle) {
42+
return new PushMessage(
43+
null,
44+
AlarmType.FEED_LIKE,
45+
feedLikeId,
46+
likerPersonalId + "님이 " + feedTitle + " 피드에 좋아요를 눌렀습니다.",
47+
"");
48+
}
3949
}

src/test/java/com/sillim/recordit/feed/service/FeedLikeServiceTest.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.sillim.recordit.member.domain.Member;
1515
import com.sillim.recordit.member.fixture.MemberFixture;
1616
import com.sillim.recordit.member.service.MemberQueryService;
17+
import com.sillim.recordit.pushalarm.service.AlarmService;
1718
import java.util.Optional;
1819
import org.junit.jupiter.api.DisplayName;
1920
import org.junit.jupiter.api.Test;
@@ -28,6 +29,7 @@ class FeedLikeServiceTest {
2829
@Mock FeedLikeRepository feedLikeRepository;
2930
@Mock FeedRepository feedRepository;
3031
@Mock MemberQueryService memberQueryService;
32+
@Mock AlarmService alarmService;
3133
@InjectMocks FeedLikeService feedLikeService;
3234

3335
@Test
@@ -37,7 +39,9 @@ void feedLike() {
3739
long memberId = 1L;
3840
Member member = MemberFixture.DEFAULT.getMember();
3941
Feed feed = spy(FeedFixture.DEFAULT.getFeed(memberId));
42+
FeedLike feedLike = mock(FeedLike.class);
4043
given(feedRepository.findById(eq(feedId))).willReturn(Optional.of(feed));
44+
given(feedLikeRepository.save(any())).willReturn(feedLike);
4145

4246
feedLikeService.feedLike(feedId, memberId);
4347

0 commit comments

Comments
 (0)