Skip to content
This repository has been archived by the owner on Sep 16, 2024. It is now read-only.

[Feat] date region change to seoul #57 #58

Merged
merged 2 commits into from
Feb 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions src/main/kotlin/gdsc/plantory/PlantoryApplication.kt
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,19 @@ package gdsc.plantory

import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.boot.runApplication
import org.springframework.scheduling.annotation.EnableScheduling
import java.util.TimeZone
import javax.annotation.PostConstruct

@EnableScheduling
@SpringBootApplication
class PlantoryApplication

fun main(args: Array<String>) {
runApplication<PlantoryApplication>(*args)

@PostConstruct
fun setTimezone() {
TimeZone.setDefault(TimeZone.getTimeZone("Asia/Seoul"))
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -8,10 +8,9 @@ import com.google.firebase.messaging.Message
import com.google.firebase.messaging.Notification
import gdsc.plantory.event.FCMChannel
import org.slf4j.LoggerFactory
import org.springframework.context.event.EventListener
import org.springframework.scheduling.annotation.Async
import org.springframework.stereotype.Component
import org.springframework.transaction.event.TransactionPhase
import org.springframework.transaction.event.TransactionalEventListener

@Component
class WaterCycleEventListener(
Expand All @@ -22,12 +21,15 @@ class WaterCycleEventListener(
private val log = LoggerFactory.getLogger(WaterCycleEventListener::class.java)
}

@TransactionalEventListener(phase = TransactionPhase.AFTER_COMMIT)
@Async
@EventListener
fun sendFcmNotification(events: WaterCycleEvents) {
log.info("send FCM notification by WaterCycleEventListener")
val messages: List<Message> = createMessages(events.plantsNeedWateredToday, FCMChannel.WATER_ALERT.name)

try {
if (messages.isEmpty()) return

firebaseMessaging.sendEach(messages)
} catch (e: FirebaseMessagingException) {
log.warn("fail send FCM message", e)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import gdsc.plantory.event.notification.WaterCycleEvent
import gdsc.plantory.event.notification.WaterCycleEvents
import gdsc.plantory.plant.domain.CompanionPlantRepository
import gdsc.plantory.plant.presentation.dto.CompanionPlantWaterCycleDto
import org.slf4j.LoggerFactory
import org.springframework.scheduling.annotation.Scheduled
import org.springframework.stereotype.Service
import org.springframework.transaction.annotation.Transactional
Expand All @@ -16,8 +17,13 @@ class ReminderService(
private val companionPlantRepository: CompanionPlantRepository,
) {

@Scheduled(cron = "0 0 8 * * *")
companion object {
private val log = LoggerFactory.getLogger(this.javaClass)
}

@Scheduled(cron = "0 */5 * * * *")
fun sendWaterNotification() {
log.info("물주기 알림을 전송합니다.");
val companionPlants = companionPlantRepository.findAllByNextWaterDate(LocalDate.now())
val events = WaterCycleEvents(buildWaterCycleEvents(companionPlants))
Events.raise(events)
Expand Down
Loading