增加每日签到
This commit is contained in:
parent
a5f67cf4da
commit
b21a3d472c
@ -98,6 +98,18 @@
|
|||||||
"pretasks": [],
|
"pretasks": [],
|
||||||
"cfg": {"account": "okx", "icon": "okx"},
|
"cfg": {"account": "okx", "icon": "okx"},
|
||||||
"params": {}
|
"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",
|
"id": "e2f7t4lj30vwcpe0ldr",
|
||||||
"task": "ShareCode",
|
"task": "ShareCode",
|
||||||
@ -106,6 +118,7 @@
|
|||||||
"autoclaim": false,
|
"autoclaim": false,
|
||||||
"pretasks": [],
|
"pretasks": [],
|
||||||
"cfg": {},
|
"cfg": {},
|
||||||
|
"score": 100,
|
||||||
"params": {"score": [100, 20]}
|
"params": {"score": [100, 20]}
|
||||||
}],
|
}],
|
||||||
"startTime": 1702628292366,
|
"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