增加每日签到
This commit is contained in:
parent
a5f67cf4da
commit
b21a3d472c
@ -98,6 +98,18 @@
|
||||
"pretasks": [],
|
||||
"cfg": {"account": "okx", "icon": "okx"},
|
||||
"params": {}
|
||||
}, {
|
||||
"id": "e2f7fplj30vwcpe0l98",
|
||||
"task": "DailyCheckIn",
|
||||
"title": "daily checkin",
|
||||
"type": 1,
|
||||
"desc": "",
|
||||
"category": "Special Quests",
|
||||
"score": 100,
|
||||
"autoclaim": false,
|
||||
"pretasks": [],
|
||||
"cfg": {},
|
||||
"params": {"days": 1}
|
||||
}, {
|
||||
"id": "e2f7t4lj30vwcpe0ldr",
|
||||
"task": "ShareCode",
|
||||
@ -106,6 +118,7 @@
|
||||
"autoclaim": false,
|
||||
"pretasks": [],
|
||||
"cfg": {},
|
||||
"score": 100,
|
||||
"params": {"score": [100, 20]}
|
||||
}],
|
||||
"startTime": 1702628292366,
|
||||
|
12
src/services/chain.svr.ts
Normal file
12
src/services/chain.svr.ts
Normal file
@ -0,0 +1,12 @@
|
||||
|
||||
export const queryCheckInList = async (address: string, days: string | number | string[], max: number = 0) => {
|
||||
const url = process.env.CHAIN_SVR + '/task/check_in'
|
||||
return fetch(url, {
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
address,
|
||||
days,
|
||||
max
|
||||
})
|
||||
}).then((res) => res.json())
|
||||
}
|
49
src/tasks/DailyCheckIn.ts
Normal file
49
src/tasks/DailyCheckIn.ts
Normal file
@ -0,0 +1,49 @@
|
||||
import { ITask } from "./base/ITask";
|
||||
import { ZError } from "common/ZError";
|
||||
import { TaskStatusEnum } from "models/ActivityUser";
|
||||
import { TaskCfg } from "models/ActivityInfo";
|
||||
import { queryCheckInList } from "services/chain.svr";
|
||||
|
||||
// TODO:: test
|
||||
/**
|
||||
* 检查每日签到
|
||||
* days
|
||||
* limit: 如果该值大于0, 则days表示一共签到几天
|
||||
* 否则days表示连续几天签到
|
||||
*/
|
||||
export default class DailyCheckIn extends ITask {
|
||||
static desc = 'daily checkin'
|
||||
static show: boolean = true
|
||||
|
||||
async execute(data: any) {
|
||||
const { address } = this.params.user
|
||||
const { task } = data
|
||||
let cfg = this.params.activity.tasks.find((t: TaskCfg) => t.id === task.id)
|
||||
const days = cfg.params.days || 1
|
||||
const limit = cfg.params.limit || 0
|
||||
const res = await queryCheckInList(address, days - 1, limit)
|
||||
if (res.errcode) {
|
||||
throw new ZError(res.errcode, res.errmsg)
|
||||
}
|
||||
|
||||
if (task.status === TaskStatusEnum.RUNNING && res.data.length >= days) {
|
||||
task.status = TaskStatusEnum.SUCCESS
|
||||
task.timeFinish = Date.now()
|
||||
task.data = res.data
|
||||
try {
|
||||
await this.params.user.save()
|
||||
} catch(err) {
|
||||
throw new ZError(100, 'save daily checkin failed')
|
||||
}
|
||||
if (cfg.autoclaim) {
|
||||
try {
|
||||
await this.claimReward(task);
|
||||
} catch(err) {
|
||||
console.log(err)
|
||||
}
|
||||
}
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user