From 525ae4d2b51a8a3cd5e7110038f980d88d99f4bd Mon Sep 17 00:00:00 2001 From: Raymond Yang Date: Mon, 26 Jun 2023 21:25:58 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A1=AB=E8=A1=A8=E5=8A=A0=E4=B8=8A=E8=87=AA?= =?UTF-8?q?=E5=8B=95=E6=9B=B4=E6=96=B0=E5=8E=9F=E6=9C=89=E8=B3=87=E6=96=99?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../database/service/MemberRecordService.kt | 5 ++++ .../pcredive/plugins/MemberRecordRouting.kt | 30 +++++++++++++++---- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/src/main/kotlin/com/ray650128/pcredive/database/service/MemberRecordService.kt b/src/main/kotlin/com/ray650128/pcredive/database/service/MemberRecordService.kt index 4cbaa1e..21f5c4f 100644 --- a/src/main/kotlin/com/ray650128/pcredive/database/service/MemberRecordService.kt +++ b/src/main/kotlin/com/ray650128/pcredive/database/service/MemberRecordService.kt @@ -21,6 +21,11 @@ object MemberRecordService { return recordCollection.findOne(MemberRecord::_id eq bsonId) } + fun findByMemberIdBetweenDate(id: String, start: Long, end: Long): MemberRecord? { + val bsonId: Id = ObjectId(id).toId() + return recordCollection.findOne(MemberRecord::memberId eq bsonId, MemberRecord::createdAt gte start, MemberRecord::createdAt lt end) + } + fun findByTimeBetween(start: Long, end: Long): List { return recordCollection.find(MemberRecord::createdAt gte start, MemberRecord::createdAt lt end).toList() } diff --git a/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt b/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt index 95416f4..9f40b13 100644 --- a/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt +++ b/src/main/kotlin/com/ray650128/pcredive/plugins/MemberRecordRouting.kt @@ -32,20 +32,38 @@ fun Application.configureMemberRecordRouting() { } post("/{id}") { val id = call.parameters.getOrFail("id") - val now = Calendar.getInstance() - val record = call.receive() val member = MemberService.findById(id) ?: run { call.respond(HttpStatusCode.NotFound) return@post } - record.apply { + + val now = Calendar.getInstance() + val startTime = getDayStartLong(now[Calendar.YEAR], now[Calendar.MONTH], now[Calendar.DAY_OF_MONTH]) + val endTime = getDayEndLong(now[Calendar.YEAR], now[Calendar.MONTH], now[Calendar.DAY_OF_MONTH]) + val existData = MemberRecordService.findByMemberIdBetweenDate(id, startTime, endTime) ?: run { + record.apply { + memberId = member._id + createdAt = System.currentTimeMillis() + updatedAt = System.currentTimeMillis() + } + MemberRecordService.create(record).let { + call.respond(HttpStatusCode.OK, record) + } + return@post + } + existData.apply { memberId = member._id - createdAt = System.currentTimeMillis() + record1 = record.record1 + record1c = record.record1c + record2 = record.record2 + record2c = record.record2c + record3 = record.record3 + record3c = record.record3c updatedAt = System.currentTimeMillis() } - MemberRecordService.create(record).let { - call.respond(HttpStatusCode.OK, record) + MemberRecordService.updateById(existData._id.toString(), existData).let { + call.respond(HttpStatusCode.OK, existData) } } get("/{year}/{month}/{day}") {