加上updateTimer模組

This commit is contained in:
Raymond Yang 2023-06-27 23:27:30 +08:00
parent 4632b2cdc8
commit 4131f03e42
2 changed files with 43 additions and 40 deletions

View File

@ -2,17 +2,11 @@ package com.ray650128.pcredive
import ch.qos.logback.classic.Level import ch.qos.logback.classic.Level
import ch.qos.logback.classic.LoggerContext import ch.qos.logback.classic.LoggerContext
import com.ray650128.pcredive.database.model.MemberRecord
import com.ray650128.pcredive.database.model.Record
import com.ray650128.pcredive.database.service.MemberRecordService
import com.ray650128.pcredive.database.service.MemberService
import io.ktor.server.application.* import io.ktor.server.application.*
import com.ray650128.pcredive.plugins.* import com.ray650128.pcredive.plugins.*
import org.slf4j.LoggerFactory import org.slf4j.LoggerFactory
import java.util.*
fun main(args: Array<String>) { fun main(args: Array<String>) {
startTimer()
val loggerContext = LoggerFactory.getILoggerFactory() as LoggerContext val loggerContext = LoggerFactory.getILoggerFactory() as LoggerContext
val rootLogger = loggerContext.getLogger("org.mongodb.driver") val rootLogger = loggerContext.getLogger("org.mongodb.driver")
rootLogger.level = Level.OFF rootLogger.level = Level.OFF
@ -21,42 +15,9 @@ fun main(args: Array<String>) {
@Suppress("unused") // application.conf references the main function. This annotation prevents the IDE from marking it as unused. @Suppress("unused") // application.conf references the main function. This annotation prevents the IDE from marking it as unused.
fun Application.module() { fun Application.module() {
configureUpdateTimer()
configureHTTP() configureHTTP()
configureSerialization() configureSerialization()
configureMemberRouting() configureMemberRouting()
configureMemberRecordRouting() configureMemberRecordRouting()
}
private fun startTimer() {
val date = Date()
val timer = Timer()
timer.schedule(object : TimerTask() {
override fun run() {
val c = Calendar.getInstance()
val hour = c[Calendar.HOUR_OF_DAY]
val minute = c[Calendar.MINUTE]
val second = c[Calendar.SECOND]
val day = c[Calendar.DAY_OF_MONTH]
val lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH)
println("Time: $day, ${String.format("%2d:%2d:%2d", hour, minute, second)}")
if ((day in (lastDay - 5)..lastDay) && (hour == 5 && minute == 0 && second == 0)) {
val members = MemberService.findAll(false)
members.forEach { member ->
MemberRecordService.create(
MemberRecord(
memberId = member._id,
record1 = Record(""),
record1c = Record(""),
record2 = Record(""),
record2c = Record(""),
record3 = Record(""),
record3c = Record(""),
createdAt = System.currentTimeMillis(),
updatedAt = System.currentTimeMillis()
)
)
}
}
}
}, date, 1000L)
} }

View File

@ -0,0 +1,42 @@
package com.ray650128.pcredive.plugins
import com.ray650128.pcredive.database.model.MemberRecord
import com.ray650128.pcredive.database.model.Record
import com.ray650128.pcredive.database.service.MemberRecordService
import com.ray650128.pcredive.database.service.MemberService
import io.ktor.server.application.*
import java.util.*
fun Application.configureUpdateTimer() {
val date = Date()
val timer = Timer()
timer.schedule(object : TimerTask() {
override fun run() {
val c = Calendar.getInstance()
val hour = c[Calendar.HOUR_OF_DAY]
val minute = c[Calendar.MINUTE]
val second = c[Calendar.SECOND]
val day = c[Calendar.DAY_OF_MONTH]
val lastDay = c.getActualMaximum(Calendar.DAY_OF_MONTH)
println("Time: $day, ${String.format("%2d:%2d:%2d", hour, minute, second)}")
if ((day in (lastDay - 5)..lastDay) && (hour == 5 && minute == 0 && second == 0)) {
val members = MemberService.findAll(false)
members.forEach { member ->
MemberRecordService.create(
MemberRecord(
memberId = member._id,
record1 = Record(""),
record1c = Record(""),
record2 = Record(""),
record2c = Record(""),
record3 = Record(""),
record3c = Record(""),
createdAt = System.currentTimeMillis(),
updatedAt = System.currentTimeMillis()
)
)
}
}
}
}, date, 1000L)
}