Compare commits
3 Commits
21eac9a417
...
c6973a3618
| Author | SHA1 | Date | |
|---|---|---|---|
| c6973a3618 | |||
| 525ae4d2b5 | |||
| 85e0c18115 |
@ -5,5 +5,5 @@ import kotlinx.serialization.Serializable
|
|||||||
@Serializable
|
@Serializable
|
||||||
data class RecordData(
|
data class RecordData(
|
||||||
val member: Member,
|
val member: Member,
|
||||||
var record: MemberRecord
|
var record: MemberRecord?
|
||||||
)
|
)
|
||||||
|
|||||||
@ -21,6 +21,11 @@ object MemberRecordService {
|
|||||||
return recordCollection.findOne(MemberRecord::_id eq bsonId)
|
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> {
|
fun findByTimeBetween(start: Long, end: Long): List<MemberRecord> {
|
||||||
return recordCollection.find(MemberRecord::createdAt gte start, MemberRecord::createdAt lt end).toList()
|
return recordCollection.find(MemberRecord::createdAt gte start, MemberRecord::createdAt lt end).toList()
|
||||||
}
|
}
|
||||||
|
|||||||
@ -7,11 +7,13 @@ import io.ktor.server.application.*
|
|||||||
fun Application.configureHTTP() {
|
fun Application.configureHTTP() {
|
||||||
install(CORS) {
|
install(CORS) {
|
||||||
allowMethod(HttpMethod.Options)
|
allowMethod(HttpMethod.Options)
|
||||||
|
allowMethod(HttpMethod.Get)
|
||||||
allowMethod(HttpMethod.Put)
|
allowMethod(HttpMethod.Put)
|
||||||
allowMethod(HttpMethod.Delete)
|
//allowMethod(HttpMethod.Delete)
|
||||||
allowMethod(HttpMethod.Patch)
|
allowMethod(HttpMethod.Post)
|
||||||
allowHeader(HttpHeaders.Authorization)
|
|
||||||
allowHeader(HttpHeaders.AccessControlAllowOrigin)
|
allowHeader(HttpHeaders.AccessControlAllowOrigin)
|
||||||
|
allowHeader(HttpHeaders.Accept)
|
||||||
|
allowHeader(HttpHeaders.ContentType)
|
||||||
anyHost()
|
anyHost()
|
||||||
allowCredentials = true
|
allowCredentials = true
|
||||||
allowNonSimpleContentTypes = true
|
allowNonSimpleContentTypes = true
|
||||||
|
|||||||
@ -21,6 +21,9 @@ import java.util.*
|
|||||||
|
|
||||||
fun Application.configureMemberRecordRouting() {
|
fun Application.configureMemberRecordRouting() {
|
||||||
routing {
|
routing {
|
||||||
|
options("{...}") {
|
||||||
|
call.respond(HttpStatusCode.OK)
|
||||||
|
}
|
||||||
route("/api") {
|
route("/api") {
|
||||||
route("/record") {
|
route("/record") {
|
||||||
get {
|
get {
|
||||||
@ -37,13 +40,33 @@ fun Application.configureMemberRecordRouting() {
|
|||||||
call.respond(HttpStatusCode.NotFound)
|
call.respond(HttpStatusCode.NotFound)
|
||||||
return@post
|
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
|
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()
|
updatedAt = System.currentTimeMillis()
|
||||||
}
|
}
|
||||||
MemberRecordService.create(record).let {
|
MemberRecordService.updateById(existData._id.toString(), existData).let {
|
||||||
call.respond(HttpStatusCode.OK, record)
|
call.respond(HttpStatusCode.OK, existData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
get("/{year}/{month}/{day}") {
|
get("/{year}/{month}/{day}") {
|
||||||
@ -86,26 +109,37 @@ fun Application.configureMemberRecordRouting() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getData(year: Int, month: Int, day: Int): List<RecordData> {
|
fun getDayStartLong(year: Int, month: Int, day: Int): Long {
|
||||||
val calendar = Calendar.getInstance().apply {
|
val calendar = Calendar.getInstance().apply {
|
||||||
set(Calendar.YEAR, year)
|
set(Calendar.YEAR, year)
|
||||||
set(Calendar.MONTH, month)
|
set(Calendar.MONTH, month)
|
||||||
set(Calendar.DAY_OF_MONTH, day)
|
set(Calendar.DAY_OF_MONTH, day)
|
||||||
}
|
}
|
||||||
val startTime = calendar.apply {
|
return calendar.apply {
|
||||||
set(Calendar.HOUR_OF_DAY, 5)
|
set(Calendar.HOUR_OF_DAY, 5)
|
||||||
set(Calendar.MINUTE, 0)
|
set(Calendar.MINUTE, 0)
|
||||||
set(Calendar.SECOND, 0)
|
set(Calendar.SECOND, 0)
|
||||||
set(Calendar.MILLISECOND, 0)
|
set(Calendar.MILLISECOND, 0)
|
||||||
}.timeInMillis
|
}.timeInMillis
|
||||||
val endTime = startTime + 86399000L
|
}
|
||||||
|
|
||||||
|
fun getDayEndLong(year: Int, month: Int, day: Int): Long {
|
||||||
|
val startTime = getDayStartLong(year, month, day)
|
||||||
|
return startTime + 86399000L
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getData(year: Int, month: Int, day: Int): List<RecordData> {
|
||||||
|
val startTime = getDayStartLong(year, month, day)
|
||||||
|
val endTime = getDayEndLong(year, month, day)
|
||||||
// Show a list of articles
|
// Show a list of articles
|
||||||
val records = ArrayList<RecordData>()
|
val records = ArrayList<RecordData>()
|
||||||
val memberList = MemberService.findAll()
|
val memberList = MemberService.findAll()
|
||||||
memberList.forEach { member ->
|
memberList.forEach { member ->
|
||||||
records.add(
|
if (member.createAt!! < startTime && !member.leave) {
|
||||||
RecordData(member = member, MemberRecord())
|
records.add(
|
||||||
)
|
RecordData(member = member, null)
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
val recordList = MemberRecordService.findByTimeBetween(startTime, endTime)
|
val recordList = MemberRecordService.findByTimeBetween(startTime, endTime)
|
||||||
recordList.forEach { record ->
|
recordList.forEach { record ->
|
||||||
|
|||||||
@ -16,6 +16,9 @@ import kotlinx.coroutines.coroutineScope
|
|||||||
|
|
||||||
fun Application.configureMemberRouting() {
|
fun Application.configureMemberRouting() {
|
||||||
routing {
|
routing {
|
||||||
|
options("{...}") {
|
||||||
|
call.respond(HttpStatusCode.OK)
|
||||||
|
}
|
||||||
route("/api") {
|
route("/api") {
|
||||||
route("/member") {
|
route("/member") {
|
||||||
get {
|
get {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user