增加tweet和like任务
This commit is contained in:
parent
039d2773e5
commit
fbb9aba160
@ -66,14 +66,29 @@
|
|||||||
}, {
|
}, {
|
||||||
"id": "e2fuah0j30vwcpe0my7",
|
"id": "e2fuah0j30vwcpe0my7",
|
||||||
"task": "TwitterRetweet",
|
"task": "TwitterRetweet",
|
||||||
"title": "Repost and like on X",
|
"title": "Repost on X",
|
||||||
"type": 1,
|
"type": 1,
|
||||||
"desc": "Show your friends Counter Fire.",
|
"desc": "Show your friends Counter Fire.",
|
||||||
"category": "Social Tasks",
|
"category": "Social Tasks",
|
||||||
"score": 150,
|
"score": 50,
|
||||||
"autoclaim": false,
|
"autoclaim": false,
|
||||||
"pretasks": [],
|
"pretasks": [],
|
||||||
"cfg": {"icon": "twitter", "content": "Just joined Counter Fire! 🎮 Excited about the endless opportunities ahead. 🔥 Let's team up and conquer together! Come in with me #CounterFire #GamingAdventures"},
|
"cfg": {"icon": "twitter", "content": "1779507826714681538"},
|
||||||
|
"start": "2024-01-01 00:00",
|
||||||
|
"end": "2025-01-01 00:00",
|
||||||
|
"checkChain": true,
|
||||||
|
"params": {"time": 6, "failRate": 0}
|
||||||
|
}, {
|
||||||
|
"id": "e2fuah0j30vwcpe0my9",
|
||||||
|
"task": "TwitterLike",
|
||||||
|
"title": "Like on X",
|
||||||
|
"type": 1,
|
||||||
|
"desc": "Show your friends Counter Fire.",
|
||||||
|
"category": "Social Tasks",
|
||||||
|
"score": 50,
|
||||||
|
"autoclaim": false,
|
||||||
|
"pretasks": [],
|
||||||
|
"cfg": {"icon": "twitter", "content": "1779507826714681538"},
|
||||||
"start": "2024-01-01 00:00",
|
"start": "2024-01-01 00:00",
|
||||||
"end": "2025-01-01 00:00",
|
"end": "2025-01-01 00:00",
|
||||||
"checkChain": true,
|
"checkChain": true,
|
||||||
|
@ -116,7 +116,7 @@ export default class ActivityController extends BaseController {
|
|||||||
@router('get /api/activity/score_list')
|
@router('get /api/activity/score_list')
|
||||||
async scoreList(req) {
|
async scoreList(req) {
|
||||||
let user = req.user
|
let user = req.user
|
||||||
const records = await ScoreRecord.find({ user: user.id, activity: user.activity })
|
const records = await ScoreRecord.find({ user: user.id, activity: user.activity, score: { $gt: 0 } })
|
||||||
return records.map(record => {
|
return records.map(record => {
|
||||||
return {
|
return {
|
||||||
score: formatNumShow(record.score),
|
score: formatNumShow(record.score),
|
||||||
|
26
src/controllers/voucher.controller.ts
Normal file
26
src/controllers/voucher.controller.ts
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
import { isValidShareCode } from 'common/Utils'
|
||||||
|
import logger from 'logger/logger'
|
||||||
|
import { ChestStatusEnum } from 'models/ActivityChest'
|
||||||
|
import { NFTHolderRecord } from 'models/NFTHodlerRecord'
|
||||||
|
import { queryNftBalance } from 'services/chain.svr'
|
||||||
|
import { generateChestLevel, generateNewChest } from 'services/game.svr'
|
||||||
|
import { checkDiscordRole } from 'services/oauth.svr'
|
||||||
|
import { SyncLocker, BaseController, router, role, ROLE_ANON, ZError } from 'zutils'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 礼品券相关接口
|
||||||
|
*/
|
||||||
|
class VoucherController extends BaseController {
|
||||||
|
@router('post /api/voucher/claim')
|
||||||
|
async claimVoucherReward(req) {
|
||||||
|
new SyncLocker().checkLock(req)
|
||||||
|
logger.db('claim_voucher', req)
|
||||||
|
const user = req.user
|
||||||
|
const { id } = req.params
|
||||||
|
if (!id || !isValidShareCode(id)) {
|
||||||
|
throw new ZError(10, 'invild voucher id')
|
||||||
|
}
|
||||||
|
|
||||||
|
return {}
|
||||||
|
}
|
||||||
|
}
|
36
src/tasks/TwitterLike.ts
Normal file
36
src/tasks/TwitterLike.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import { ZError } from 'zutils'
|
||||||
|
import { ITask } from './base/ITask'
|
||||||
|
import { TaskStatusEnum } from 'models/ActivityUser'
|
||||||
|
|
||||||
|
export default class TwitterLike extends ITask {
|
||||||
|
static desc = 'twitter like'
|
||||||
|
static show: boolean = true
|
||||||
|
async execute(data: any) {
|
||||||
|
const { task } = data
|
||||||
|
let cfg = this.activity.tasks.find(t => t.id === task.id)
|
||||||
|
let time = cfg.params.time
|
||||||
|
if (Date.now() - task.timeStart < time * 1000) {
|
||||||
|
throw new ZError(11, 'like failed')
|
||||||
|
}
|
||||||
|
let num = Math.random() * 100
|
||||||
|
if (num < cfg.params.failRate) {
|
||||||
|
throw new ZError(12, 'like failed')
|
||||||
|
}
|
||||||
|
task.status = TaskStatusEnum.SUCCESS
|
||||||
|
task.timeFinish = Date.now()
|
||||||
|
task.data = {}
|
||||||
|
try {
|
||||||
|
await this.user.save()
|
||||||
|
} catch (err) {
|
||||||
|
throw new ZError(100, 'save failed')
|
||||||
|
}
|
||||||
|
if (cfg.autoclaim) {
|
||||||
|
try {
|
||||||
|
await this.claimReward(task)
|
||||||
|
} catch (err) {
|
||||||
|
console.log(err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
36
src/tasks/TwitterTweet.ts
Normal file
36
src/tasks/TwitterTweet.ts
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
import { ZError } from 'zutils'
|
||||||
|
import { ITask } from './base/ITask'
|
||||||
|
import { TaskStatusEnum } from 'models/ActivityUser'
|
||||||
|
|
||||||
|
export default class TwitterTweet extends ITask {
|
||||||
|
static desc = 'twitter retweet'
|
||||||
|
static show: boolean = true
|
||||||
|
async execute(data: any) {
|
||||||
|
const { task } = data
|
||||||
|
let cfg = this.activity.tasks.find(t => t.id === task.id)
|
||||||
|
let time = cfg.params.time
|
||||||
|
if (Date.now() - task.timeStart < time * 1000) {
|
||||||
|
throw new ZError(11, 'tweet failed')
|
||||||
|
}
|
||||||
|
let num = Math.random() * 100
|
||||||
|
if (num < cfg.params.failRate) {
|
||||||
|
throw new ZError(12, 'tweet failed')
|
||||||
|
}
|
||||||
|
task.status = TaskStatusEnum.SUCCESS
|
||||||
|
task.timeFinish = Date.now()
|
||||||
|
task.data = {}
|
||||||
|
try {
|
||||||
|
await this.user.save()
|
||||||
|
} catch (err) {
|
||||||
|
throw new ZError(100, 'save 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