Skip to content

Commit e76cbbf

Browse files
committed
feat: AlarmType 추가
1 parent be39f72 commit e76cbbf

7 files changed

Lines changed: 31 additions & 20 deletions

File tree

src/main/java/apptive/team5/alarm/dto/AlarmResponse.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33

44
import apptive.team5.alarm.entity.Alarm;
5+
import apptive.team5.alarm.entity.AlarmMessage;
56

67
import java.time.LocalDateTime;
78

@@ -10,6 +11,7 @@ public record AlarmResponse(
1011
String title,
1112
String content,
1213
String deepLink,
14+
String type,
1315
LocalDateTime createDate
1416
) {
1517

@@ -19,6 +21,7 @@ public AlarmResponse(Alarm alarm) {
1921
alarm.getTitle(),
2022
alarm.getContent(),
2123
alarm.getDeepLink(),
24+
alarm.getAlarmType(),
2225
alarm.getCreateDateTime()
2326
);
2427
}

src/main/java/apptive/team5/alarm/entity/Alarm.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,17 +28,21 @@ public class Alarm extends BaseTimeEntity {
2828
@Column(nullable = false, length = 1000)
2929
private String deepLink;
3030

31+
@Column(length = 1000)
32+
private String alarmType;
33+
3134
@ManyToOne(fetch = FetchType.LAZY, optional = false)
3235
@JoinColumn(
3336
name = "user_id",
3437
nullable = false
3538
)
3639
private UserEntity user;
3740

38-
public Alarm(String title, String content, String deepLink, UserEntity user) {
39-
this.title = title;
41+
public Alarm(String content, String deepLink, UserEntity user, AlarmMessage alarmMessage) {
42+
this.title = alarmMessage.getMessage();
4043
this.content = content;
4144
this.deepLink = deepLink;
4245
this.user = user;
46+
this.alarmType = alarmMessage.name();
4347
}
4448
}

src/main/java/apptive/team5/alarm/event/AlarmCreatedEvent.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
package apptive.team5.alarm.event;
22

3+
import apptive.team5.alarm.entity.AlarmMessage;
4+
35
public record AlarmCreatedEvent(
46
Long receiverId,
5-
String title,
7+
AlarmMessage alarmMessage,
68
String content,
79
String deepLink
810
) {

src/main/java/apptive/team5/alarm/event/AlarmEventListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,6 @@ public class AlarmEventListener {
1414

1515
@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
1616
public void handleAlarmCreated(AlarmCreatedEvent event) {
17-
fcmService.sendAlarm(event.receiverId(), event.title(), event.content(), event.deepLink());
17+
fcmService.sendAlarm(event.receiverId(), event.alarmMessage(), event.content(), event.deepLink());
1818
}
1919
}

src/main/java/apptive/team5/alarm/service/AlarmDispatchService.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ public void saveAndDispatchForLike(DiaryLikeAlarmSendRequest request) {
4646
String content = actor.getUsername() + "님이 회원님의 킬링파트를 좋아합니다.";
4747
String deepLink = DIARY_DEEP_LINK_FORMAT.formatted(diary.getId());
4848

49-
saveAndPublish(receiver, title, content, deepLink);
49+
saveAndPublish(receiver, AlarmMessage.LIKE_ALARM, content, deepLink);
5050
}
5151

5252
@Async("sendAlarm")
@@ -58,35 +58,33 @@ public void saveAndDispatchForSubscribe(SubscribeAlarmSendRequest request) {
5858
String content = subscriber.getUsername() + "님이 회원님을 픽했어요.";
5959
String deepLink = SUBSCRIBE_DEEP_LINK_FORMAT.formatted(receiver.getId());
6060

61-
saveAndPublish(receiver, title, content, deepLink);
61+
saveAndPublish(receiver, AlarmMessage.SUBSCRIBE_ALARM, content, deepLink);
6262
}
6363

6464
@Async("sendAlarm")
6565
public void saveAndDispatchForDiaryCreate(DiaryCreateAlarmSendRequest request) {
6666
UserEntity actor = userLowService.findById(request.actorId());
6767
List<Subscribe> subscribers = subscribeLowService.findBySubscribedToId(actor.getId());
6868

69-
70-
String title = AlarmMessage.DIARY_ALARM.getMessage();
7169
String content = actor.getUsername() + "님이 새 킬링파트를 등록했어요.";
7270
String deepLink = DIARY_DEEP_LINK_FORMAT.formatted(request.diaryId());
7371

7472

7573
subscribers.forEach(subscriber ->
76-
saveAndPublish(subscriber.getSubscriber(), title, content, deepLink));
74+
saveAndPublish(subscriber.getSubscriber(), AlarmMessage.DIARY_ALARM, content, deepLink));
7775
}
7876

79-
private void saveAndPublish(UserEntity receiver, String title, String content, String deepLink) {
77+
private void saveAndPublish(UserEntity receiver, AlarmMessage alarmMessage, String content, String deepLink) {
8078
alarmLowService.save(new Alarm(
81-
title,
8279
content,
8380
deepLink,
84-
receiver
81+
receiver,
82+
alarmMessage
8583
));
8684

8785
eventPublisher.publishEvent(new AlarmCreatedEvent(
8886
receiver.getId(),
89-
title,
87+
alarmMessage,
9088
content,
9189
deepLink
9290
));

src/main/java/apptive/team5/fcm/service/FcmService.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package apptive.team5.fcm.service;
22

3+
import apptive.team5.alarm.entity.AlarmMessage;
34
import apptive.team5.fcm.dto.DeviceTokenRequest;
45
import apptive.team5.fcm.entity.DeviceToken;
56
import apptive.team5.user.domain.UserEntity;
@@ -44,7 +45,7 @@ public void deleteDeviceTokenByUserId(Long userId) {
4445
}
4546

4647
@Async("sendAlarm")
47-
public void sendAlarm(Long userId, String title, String content, String deepLink) {
48+
public void sendAlarm(Long userId, AlarmMessage alarmMessage, String content, String deepLink) {
4849

4950
UserEntity user = userLowService.findById(userId);
5051
if (!user.isAlarmEnabled()) {
@@ -56,20 +57,21 @@ public void sendAlarm(Long userId, String title, String content, String deepLink
5657
return;
5758
}
5859

59-
deviceTokens.forEach(deviceToken -> sendMessageTo(deviceToken.getToken(), title, content, deepLink));
60+
deviceTokens.forEach(deviceToken -> sendMessageTo(deviceToken.getToken(), alarmMessage, content, deepLink));
6061
}
6162

62-
private void sendMessageTo(String targetToken, String title, String body, String deepLink) {
63+
private void sendMessageTo(String targetToken, AlarmMessage alarmMessage, String body, String deepLink) {
6364

6465
Message message = Message.builder()
6566
.setToken(targetToken)
6667
.setNotification(
6768
Notification.builder()
68-
.setTitle(title)
69+
.setTitle(alarmMessage.getMessage())
6970
.setBody(body)
7071
.build()
7172
)
7273
.putData("deepLink", deepLink)
74+
.putData("type", alarmMessage.name())
7375
.build();
7476

7577
FirebaseMessaging firebaseMessaging = FirebaseMessaging.getInstance();

src/test/java/apptive/team5/alarm/controller/AlarmControllerTest.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import apptive.team5.alarm.dto.AlarmResponse;
44
import apptive.team5.alarm.entity.Alarm;
5+
import apptive.team5.alarm.entity.AlarmMessage;
56
import apptive.team5.alarm.repository.AlarmRepository;
67
import apptive.team5.global.exception.ExceptionCode;
78
import apptive.team5.user.domain.UserEntity;
@@ -56,9 +57,9 @@ void getAlarmsSuccess() throws Exception {
5657
UserEntity user = userRepository.save(TestUtil.makeUserEntity());
5758
UserEntity otherUser = userRepository.save(TestUtil.makeDifferentUserEntity(user));
5859

59-
alarmRepository.save(new Alarm("first title", "first content", "/diaries/1", user));
60-
Alarm secondAlarm = alarmRepository.save(new Alarm("second title", "second content", "/diaries/2", user));
61-
alarmRepository.save(new Alarm("other title", "other content", "/diaries/3", otherUser));
60+
alarmRepository.save(new Alarm("first content", "/diaries/1", user, AlarmMessage.DIARY_ALARM));
61+
Alarm secondAlarm = alarmRepository.save(new Alarm("second content", "/diaries/2", user, AlarmMessage.DIARY_ALARM));
62+
alarmRepository.save(new Alarm("other content", "/diaries/3", otherUser, AlarmMessage.DIARY_ALARM));
6263

6364
TestSecurityContextHolderInjection.inject(user.getId(), user.getRoleType());
6465

@@ -85,6 +86,7 @@ void getAlarmsSuccess() throws Exception {
8586
softly.assertThat(content.getFirst().content()).isEqualTo(secondAlarm.getContent());
8687
softly.assertThat(content.getFirst().deepLink()).isEqualTo(secondAlarm.getDeepLink());
8788
softly.assertThat(content.getFirst().createDate()).isEqualTo(secondAlarm.getCreateDateTime());
89+
softly.assertThat(content.getFirst().type()).isEqualTo(AlarmMessage.DIARY_ALARM.name());
8890
softly.assertThat(jsonNode.path("page").path("totalElements").asInt()).isEqualTo(2);
8991
softly.assertThat(jsonNode.path("page").path("size").asInt()).isEqualTo(1);
9092
softly.assertThat(jsonNode.path("page").path("number").asInt()).isEqualTo(0);

0 commit comments

Comments
 (0)