Skip to content

Commit

Permalink
[DPMBE-126] 약속 생성 시 동작하는 트래킹 핸들러 키 불일치문제와 fcm send 버그 해결 (#213)
Browse files Browse the repository at this point in the history
* fix: RedisMessageListener에 key prefix값 replace 적용

* fix: 앱 알림 허용한 유저가 있을때만 fcm message 보내도록 조건 추가

* fix: PromiseActive시 Redis로 저장되는 Key값 변경

* feat: 인터렉션 발송 시 앱 알람이 꺼져있을때 푸시알림만 안보내도록 한다. (#207)

* [DPMBE-123] 트래킹 시작 시 해당 약속에 참여한 사람이 없다면 트래킹을 시작하지 않는다. (#208)

* feat: 트래킹 시작 시 해당 약속에 참여한 사람이 없다면 트래킹을 시작하지 않는다.

* feat: 트래킹 시작 시 약속 유저가 2명 이하라면 약속을 종료 처리시킨다

* fix: 약속 참여유저 2 미만 이벤트 삭제 시 람다식으로 변경

* [DPMBE-116] 자신의 알림을 조회한다 (#211)

* fix: 인터렉션 타입에 Enumerated String을 사용하도록 변경

* feat: 자신의 알림을 조회한다

* fix: Default Argument에서 Named Argument로 변경

* style: 주석제거
  • Loading branch information
kdomo authored Jul 19, 2023
1 parent a4c5753 commit 8e19c78
Show file tree
Hide file tree
Showing 8 changed files with 63 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ class RedisExpireEventRedisMessageListener(
) : MessageListener {
@Transactional
override fun onMessage(message: Message, pattern: ByteArray?) {
val event = message.toString()
val event = message.toString().replace("promiseActive:", "")
val eventParts = event.split("_")

if (!event.startsWith("EXPIRE_EVENT_") || eventParts.size < 6) {
Expand All @@ -31,7 +31,7 @@ class RedisExpireEventRedisMessageListener(
when (event) {
"EXPIRE_EVENT_PROMISE_TIME_START_$promiseId" -> handlePromiseTimeStart(promiseId)
"EXPIRE_EVENT_PROMISE_TIME_END_$promiseId" -> handlePromiseTimeEnd(promiseId)
"EXPIRE_EVENT_TRACKING_TIME_START_$promiseId" -> handleTrackingTimeEnd(promiseId)
"EXPIRE_EVENT_TRACKING_TIME_END_$promiseId" -> handleTrackingTimeEnd(promiseId)
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,22 +46,24 @@ class ImageRegisterEventHandler(
data["imageKey"] = imageKey

// 앱 알람 허용한 유저에게 알람 보내기
when (promiseUser.promiseUserType) {
LATE -> {
fcmService.sendGroupMessageAsync(
appAlarmPermitUsers.map { user -> user.fcmNotification.fcmToken!! },
"지각한 친구의 사진 도착",
"지각한 친구가 보낸 사진을 확인해봐!",
data,
)
}
WAIT -> {
fcmService.sendGroupMessageAsync(
appAlarmPermitUsers.map { user -> user.fcmNotification.fcmToken!! },
"도착한 친구들의 사진 도착",
"도착한 친구들이 보낸 사진을 확인해봐!",
data,
)
if (appAlarmPermitUsers.isNotEmpty()) {
when (promiseUser.promiseUserType) {
LATE -> {
fcmService.sendGroupMessageAsync(
tokenList = appAlarmPermitUsers.map { user -> user.fcmNotification.fcmToken!! },
title = "지각한 친구의 사진 도착",
content = "지각한 친구가 보낸 사진을 확인해봐!",
data = data,
)
}
WAIT -> {
fcmService.sendGroupMessageAsync(
tokenList = appAlarmPermitUsers.map { user -> user.fcmNotification.fcmToken!! },
title = "도착한 친구들의 사진 도착",
content = "도착한 친구들이 보낸 사진을 확인해봐!",
data = data,
)
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,10 @@ class InteractionFixedEventHandler(

if (user.fcmNotification.appAlarm) {
fcmService.sendMessageAsync(
user.fcmNotification.fcmToken,
"이모지 100개 달성!",
"",
data,
token = user.fcmNotification.fcmToken,
title = "이모지 100개 달성!",
content = "",
data = data,
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -46,10 +46,10 @@ class InteractionHistoryRegisterHandler(

if (targetUser.fcmNotification.appAlarm) {
fcmService.sendMessageAsync(
targetUser.fcmNotification.fcmToken,
"이모지 투척!",
"from. $user.nickname",
data,
token = targetUser.fcmNotification.fcmToken,
title = "이모지 투척!",
content = "from. $user.nickname",
data = data,
)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ class PromiseActivationEventHandler(
val now = LocalDateTime.now()

// 약속 시작 시간까지 남은 시간(초)
val promiseStartAndTrackingStartTime = Duration.between(now, promise.endTime.minusHours(1)).seconds
val promiseStartAndTrackingStartTime = Duration.between(now, promise.endTime.minusMinutes(30)).seconds

// 약속 종료 시간까지 남은 시간(초)
val promiseEndTime = Duration.between(now, promise.endTime).seconds
Expand All @@ -34,6 +34,6 @@ class PromiseActivationEventHandler(

promiseActiveAdapter.save(PromiseActiveRedisEntity("EXPIRE_EVENT_PROMISE_TIME_START_${promise.id}", promiseStartAndTrackingStartTime))
promiseActiveAdapter.save(PromiseActiveRedisEntity("EXPIRE_EVENT_PROMISE_TIME_END_${promise.id}", promiseEndTime))
promiseActiveAdapter.save(PromiseActiveRedisEntity("EXPIRE_EVENT_TRACKING_TIME_START_${promise.id}", trackingEndTime))
promiseActiveAdapter.save(PromiseActiveRedisEntity("EXPIRE_EVENT_TRACKING_TIME_END_${promise.id}", trackingEndTime))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -70,12 +70,14 @@ class PromiseTimeEndEventHandler(
).promiseUserType == LATE
}
.map { user -> user.fcmNotification.fcmToken }
fcmService.sendGroupMessageAsync(
appAlarmPermitLateUserTokens,
"TIMEOVER!",
"친구들에게 용서를 비는 사진을 보내봐!",
lateData,
)
if (appAlarmPermitLateUserTokens.isNotEmpty()) {
fcmService.sendGroupMessageAsync(
tokenList = appAlarmPermitLateUserTokens,
title = "TIMEOVER!",
content = "친구들에게 용서를 비는 사진을 보내봐!",
data = lateData,
)
}

val waitData: MutableMap<String, String> = mutableMapOf()
waitData["notificationType"] = NotificationType.TIMEOVER.name
Expand All @@ -89,12 +91,14 @@ class PromiseTimeEndEventHandler(
).promiseUserType == WAIT
}
.map { user -> user.fcmNotification.fcmToken }
fcmService.sendGroupMessageAsync(
appAlarmPermitWaitUserTokens,
"TIMEOVER!",
"친구들에게 재촉하는 사진을 보내봐!",
waitData,
)
if (appAlarmPermitWaitUserTokens.isNotEmpty()) {
fcmService.sendGroupMessageAsync(
tokenList = appAlarmPermitWaitUserTokens,
title = "TIMEOVER!",
content = "친구들에게 재촉하는 사진을 보내봐!",
data = waitData,
)
}

// notification 저장
promiseUsers.forEach { promiseUser ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,14 @@ class PromiseTimeStartEventHandler(
data["promiseId"] = promiseId.toString()

// 앱 알람 허용한 유저에게 알람 보내기
fcmService.sendGroupMessageAsync(
appAlarmPermitUsers.map { user -> user.fcmNotification.fcmToken!! },
"위치 공유 시작!",
"공유 시작! 지도를 확인해봐!",
data,
)
if (appAlarmPermitUsers.isNotEmpty()) {
fcmService.sendGroupMessageAsync(
tokenList = appAlarmPermitUsers.map { user -> user.fcmNotification.fcmToken!! },
title = "위치 공유 시작!",
content = "공유 시작! 지도를 확인해봐!",
data = data,
)
}

// notification 저장
users.forEach { user ->
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ class PromiseTrackingTimeEndEventHandler(
@TransactionalEventListener(classes = [PromiseTrackingTimeEndEvent::class], phase = TransactionPhase.AFTER_COMMIT)
fun handlePromiseTrackingTimeEndEvent(promiseTrackingTimeEndEvent: PromiseTrackingTimeEndEvent) {
val promiseId = promiseTrackingTimeEndEvent.promiseId

val promise = promiseAdaptor.queryPromise(promiseId)
promise.endPromise()

Expand All @@ -45,12 +46,14 @@ class PromiseTrackingTimeEndEventHandler(
data["promiseId"] = promiseId.toString()

// 앱 알람 허용한 유저에게 알람 보내기
fcmService.sendGroupMessageAsync(
appAlarmPermitUsers.map { user -> user.fcmNotification.fcmToken!! },
"위치 공유 종료!",
"어떤 일이 있었는지 돌아보자!",
data,
)
if (appAlarmPermitUsers.isNotEmpty()) {
fcmService.sendGroupMessageAsync(
tokenList = appAlarmPermitUsers.map { user -> user.fcmNotification.fcmToken!! },
title = "위치 공유 종료!",
content = "어떤 일이 있었는지 돌아보자!",
data = data,
)
}

// notification 저장
users.forEach { user ->
Expand Down

0 comments on commit 8e19c78

Please sign in to comment.