Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[DPMBE-126] 약속 생성 시 동작하는 트래킹 핸들러 키 불일치문제와 fcm send 버그 해결 #213

Merged
merged 9 commits into from
Jul 19, 2023
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
Loading