From 493ff96673bab93086aa11ec685c8ac0b04729f1 Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Tue, 27 Jun 2023 09:50:07 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E6=8F=9B=E6=97=A5=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E8=B3=87=E6=96=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/ray650128/pcredive/Application.kt | 43 ++++++++++++++++++- .../pcredive/database/model/MemberRecord.kt | 12 +++--- .../pcredive/plugins/MemberRecordRouting.kt | 2 +- 3 files changed, 49 insertions(+), 8 deletions(-) diff --git a/src/main/kotlin/com/ray650128/pcredive/Application.kt b/src/main/kotlin/com/ray650128/pcredive/Application.kt index 61f8d6e..e91e76c 100644 --- a/src/main/kotlin/com/ray650128/pcredive/Application.kt +++ b/src/main/kotlin/com/ray650128/pcredive/Application.kt @@ -1,10 +1,17 @@ package com.ray650128.pcredive +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 com.ray650128.pcredive.plugins.* +import java.util.* -fun main(args: Array): Unit = +fun main(args: Array) { + startTimer() io.ktor.server.netty.EngineMain.main(args) +} @Suppress("unused") // application.conf references the main function. This annotation prevents the IDE from marking it as unused. fun Application.module() { @@ -13,3 +20,37 @@ fun Application.module() { configureMemberRouting() 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) +} \ No newline at end of file diff --git a/src/main/kotlin/com/ray650128/pcredive/database/model/MemberRecord.kt b/src/main/kotlin/com/ray650128/pcredive/database/model/MemberRecord.kt index 42c5aa0..0d20d31 100644 --- a/src/main/kotlin/com/ray650128/pcredive/database/model/MemberRecord.kt +++ b/src/main/kotlin/com/ray650128/pcredive/database/model/MemberRecord.kt @@ -9,12 +9,12 @@ import org.litote.kmongo.newId data class MemberRecord( @Contextual var _id: Id = newId(), @Contextual var memberId: Id? = null, - var record1: Record = Record("未出"), - var record1c: Record = Record("未出"), - var record2: Record = Record("未出"), - var record2c: Record = Record("未出"), - var record3: Record = Record("未出"), - var record3c: Record = Record("未出"), + var record1: Record = Record(""), + var record1c: Record = Record(""), + var record2: Record = Record(""), + var record2c: Record = Record(""), + var record3: Record = Record(""), + var record3c: Record = Record(""), var createdAt: Long? = null, var updatedAt: Long? = null ) diff --git a/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt b/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt index a938496..cfa34cf 100644 --- a/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt +++ b/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt @@ -135,7 +135,7 @@ fun getData(year: Int, month: Int, day: Int): List { val records = ArrayList() val memberList = MemberService.findAll() memberList.forEach { member -> - if (member.createAt!! < startTime && !member.leave) { + if ((member.createAt!! < startTime || member.createAt!! > endTime) && !member.leave) { records.add( RecordData(member = member, null) )