add one api for fetch checkin list
This commit is contained in:
parent
4cd2b54a7d
commit
0af44deba0
25
src/controllers/task.controllers.ts
Normal file
25
src/controllers/task.controllers.ts
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
import { ZError } from 'common/ZError'
|
||||||
|
import BaseController from 'common/base.controller'
|
||||||
|
import { role, router } from 'decorators/router'
|
||||||
|
import { ChainTask, ChainTaskClass } from 'models/ChainTask'
|
||||||
|
import { CheckIn } from 'models/CheckIn'
|
||||||
|
import { RequestTask } from 'models/RequestTask'
|
||||||
|
|
||||||
|
|
||||||
|
class TaskController extends BaseController {
|
||||||
|
@role('anon')
|
||||||
|
@router('post /task/check_in')
|
||||||
|
async checkDailyCheckIn(req, res) {
|
||||||
|
let { address, days } = req.params
|
||||||
|
if (!address || !days) {
|
||||||
|
throw new ZError(10, 'address is required')
|
||||||
|
}
|
||||||
|
let records = await CheckIn.find({ from: address, dateTag: {$in: days}})
|
||||||
|
let result = []
|
||||||
|
for (let record of records) {
|
||||||
|
result.push(record.toJson())
|
||||||
|
}
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}
|
||||||
|
export default TaskController
|
@ -3,8 +3,8 @@ import { dbconn } from 'decorators/dbconn'
|
|||||||
import { BaseModule } from './Base'
|
import { BaseModule } from './Base'
|
||||||
|
|
||||||
@dbconn()
|
@dbconn()
|
||||||
@index({ address: 1 }, { unique: false })
|
@index({ from: 1 }, { unique: false })
|
||||||
@index({ transactionHash: 1, from: 1, to: 1 }, { unique: true })
|
@index({ from: 1, dateTag: 1}, { unique: true })
|
||||||
@modelOptions({
|
@modelOptions({
|
||||||
schemaOptions: { collection: 'check_in_event', timestamps: true },
|
schemaOptions: { collection: 'check_in_event', timestamps: true },
|
||||||
})
|
})
|
||||||
@ -31,6 +31,14 @@ export class CheckInClass extends BaseModule {
|
|||||||
public static async saveEvent(event: any) {
|
public static async saveEvent(event: any) {
|
||||||
return CheckIn.insertOrUpdate({ hash: event.hash }, event)
|
return CheckIn.insertOrUpdate({ hash: event.hash }, event)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public toJson() {
|
||||||
|
return {
|
||||||
|
address: this.from,
|
||||||
|
day: this.dateTag,
|
||||||
|
time: this.blockTime,
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const CheckIn = getModelForClass(CheckInClass, {
|
export const CheckIn = getModelForClass(CheckInClass, {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user