diff --git a/configs/uaw_daily_sign.json b/configs/uaw_daily_sign.json index be2be0e..4fdeac8 100644 --- a/configs/uaw_daily_sign.json +++ b/configs/uaw_daily_sign.json @@ -1,19 +1,19 @@ { "total_sign": [ { - "days": 3, + "days": 2, "reward": 1 }, { - "days": 4, + "days": 3, "reward": 4 }, { - "days": 5, + "days": 4, "reward": 5 }, { - "days": 6, + "days": 5, "reward": 6 }, { @@ -22,6 +22,10 @@ } ], "sequential_sign": [ + { + "days": 2, + "reward": 1 + }, { "days": 3, "reward": 1 diff --git a/src/controllers/activity.controller.ts b/src/controllers/activity.controller.ts index 5775257..b070fc0 100644 --- a/src/controllers/activity.controller.ts +++ b/src/controllers/activity.controller.ts @@ -37,11 +37,13 @@ export default class ActivityController extends BaseController { if (user.inviteUser) { throw new ZError(11, 'already set invite user') } + if (!user.allTaskFinished()) { + throw new ZError(12, 'not all task finished') + } let inviteUser = await ActivityUser.findByCode(code, user.activity) if (!inviteUser) { throw new ZError(12, 'invalid invite code') } - // TODO:: 检查自己是否符合条件 const dateTag = formatDate(new Date()) // 更新邀请积分-邀请人 await updateRankScore({ diff --git a/src/controllers/game.controller.ts b/src/controllers/game.controller.ts index f5ff52c..18f8806 100644 --- a/src/controllers/game.controller.ts +++ b/src/controllers/game.controller.ts @@ -5,7 +5,6 @@ import { queryCheckInList } from 'services/chain.svr' import { checkInToday, seqSignCfg, seqSignScore, totalSignCfg, totalSignScore } from 'services/sign.svr' import { ZError, SyncLocker, BaseController, router } from 'zutils' import { formatDate } from 'zutils/utils/date.util' -import { mongoose } from '@typegoose/typegoose' import { generateChestLevel, generateNewChest, generateStepReward } from 'services/game.svr' import { ChestStatusEnum } from 'models/ActivityChest' import { updateRankScore } from 'services/rank.svr' @@ -67,7 +66,6 @@ class GameController extends BaseController { } /** * 领取累计签到奖励 - * //TODO:: test */ @router('post /api/user/checkin/claim') async claimCheckResult(req) { @@ -125,7 +123,10 @@ class GameController extends BaseController { if (gameInfo.status === 1) { throw new ZError(11, 'already opened') } - // TODO:: check condition + // check if all task finished + if (!user.allTaskFinished()) { + throw new ZError(12, 'The opening conditions are not met') + } gameInfo.status = 1 await gameInfo.save() return {} diff --git a/src/models/ActivityUser.ts b/src/models/ActivityUser.ts index b4487b4..8a22268 100644 --- a/src/models/ActivityUser.ts +++ b/src/models/ActivityUser.ts @@ -121,6 +121,12 @@ export class ActivityUserClass extends BaseModule { ) { return this.findOne({ inviteCode, activity }).exec() } + + public allTaskFinished() { + return this.taskProgress.every((task: TaskStatus) => { + return task.status !== TaskStatusEnum.NOT_START && task.status !== TaskStatusEnum.RUNNING + }) + } } export const ActivityUser = getModelForClass(ActivityUserClass, { existingConnection: ActivityUserClass.db })