增加tweet和like任务
This commit is contained in:
parent
039d2773e5
commit
fbb9aba160
@ -66,14 +66,29 @@
|
||||
}, {
|
||||
"id": "e2fuah0j30vwcpe0my7",
|
||||
"task": "TwitterRetweet",
|
||||
"title": "Repost and like on X",
|
||||
"title": "Repost on X",
|
||||
"type": 1,
|
||||
"desc": "Show your friends Counter Fire.",
|
||||
"category": "Social Tasks",
|
||||
"score": 150,
|
||||
"score": 50,
|
||||
"autoclaim": false,
|
||||
"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",
|
||||
"end": "2025-01-01 00:00",
|
||||
"checkChain": true,
|
||||
|
@ -116,7 +116,7 @@ export default class ActivityController extends BaseController {
|
||||
@router('get /api/activity/score_list')
|
||||
async scoreList(req) {
|
||||
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 {
|
||||
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