Skip to content

Commit

Permalink
[DPMBE-123] 트래킹 시작 시 해당 약속에 참여한 사람이 없다면 트래킹을 시작하지 않는다. (#208)
Browse files Browse the repository at this point in the history
* feat: 트래킹 시작 시 해당 약속에 참여한 사람이 없다면 트래킹을 시작하지 않는다.

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

* fix: 약속 참여유저 2 미만 이벤트 삭제 시 람다식으로 변경
  • Loading branch information
kdomo committed Jul 19, 2023
1 parent a57e4d9 commit 8aab7b7
Showing 1 changed file with 24 additions and 1 deletion.
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.depromeet.whatnow.domains.promiseactive.listener

import com.depromeet.whatnow.common.aop.event.Events
import com.depromeet.whatnow.domains.promise.adaptor.PromiseAdaptor
import com.depromeet.whatnow.domains.promiseactive.repository.PromiseActiveRepository
import com.depromeet.whatnow.domains.promiseuser.adaptor.PromiseUserAdaptor
import com.depromeet.whatnow.events.domainEvent.PromiseTimeEndEvent
import com.depromeet.whatnow.events.domainEvent.PromiseTimeStartEvent
import com.depromeet.whatnow.events.domainEvent.PromiseTrackingTimeEndEvent
Expand All @@ -10,7 +13,11 @@ import org.springframework.stereotype.Component
import org.springframework.transaction.annotation.Transactional

@Component
class RedisExpireEventRedisMessageListener : MessageListener {
class RedisExpireEventRedisMessageListener(
val promiseAdapter: PromiseAdaptor,
val promiseUserAdaptor: PromiseUserAdaptor,
val promiseActiveRepository: PromiseActiveRepository,
) : MessageListener {
@Transactional
override fun onMessage(message: Message, pattern: ByteArray?) {
val event = message.toString().replace("promiseActive:", "")
Expand All @@ -29,6 +36,22 @@ class RedisExpireEventRedisMessageListener : MessageListener {
}

private fun handlePromiseTimeStart(key: Long) {
val promise = promiseAdapter.queryPromise(key)
val promiseUsers = promiseUserAdaptor.findByPromiseId(key)
if (promiseUsers.size < 2) {
promise.endPromise()

val eventIdList = listOf(
"EXPIRE_EVENT_PROMISE_TIME_END_$key",
"EXPIRE_EVENT_TRACKING_TIME_END_$key",
)

eventIdList.stream()
.map { eventId -> promiseActiveRepository.findById(eventId) }
.filter { eventOptional -> eventOptional.isPresent }
.forEach { eventOptional -> promiseActiveRepository.delete(eventOptional.get()) }
return
}
Events.raise(PromiseTimeStartEvent(key))
}

Expand Down

0 comments on commit 8aab7b7

Please sign in to comment.