填表加上自動更新原有資料的功能
This commit is contained in:
parent
85e0c18115
commit
525ae4d2b5
@ -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<Member> = 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<MemberRecord> {
|
||||
return recordCollection.find(MemberRecord::createdAt gte start, MemberRecord::createdAt lt end).toList()
|
||||
}
|
||||
|
||||
@ -32,20 +32,38 @@ fun Application.configureMemberRecordRouting() {
|
||||
}
|
||||
post("/{id}") {
|
||||
val id = call.parameters.getOrFail<String>("id")
|
||||
val now = Calendar.getInstance()
|
||||
|
||||
val record = call.receive<MemberRecord>()
|
||||
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}") {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user