Files
server/laf-cloud/functions/getTaskReward.ts
T

27 lines
1.6 KiB
TypeScript

import cloud from "@lafjs/cloud";
import Utils from "@/Utils";
import { isV2Task, parseTask, refreshLegacyTask, LEGACY_TARGETS, taskVersionError, taskConflict, writeTask } from "@/dailyTaskCompatibility";
const db = cloud.database();
export default async function (ctx: FunctionContext) {
const body = ctx.body || {};
if (!body.uid) return { code: 0, data: null, msg: "未获取到uid" };
const dbname = body.gameName === "iaa" ? "usersAd" : "users";
const { data: user } = await db.collection(dbname).where({ _id: body.uid }).getOne();
if (!user) return { code: 0, data: null, msg: "未获取到用户信息" };
if (user.token && !Utils.checkToken(body.token, user.token)) return { code: 0, data: null, msg: "token校验失败" };
if (isV2Task(user.task)) return taskVersionError();
const now = Date.now();
const task = refreshLegacyTask(user.task, user.taskTime, now);
const ids = parseTask(body.taskType);
if (!Array.isArray(ids) || !ids.length) return { code: 0, data: null, msg: "未获取到taskType" };
for (const id of ids) {
if (!Object.prototype.hasOwnProperty.call(task, id)) return { code: 0, data: null, msg: "请输入正确task类型" };
if (task[id].value < task[id].target) return { code: 0, data: null, msg: "请先完成任务" };
if (task[id].state === 2) return { code: 0, data: null, msg: "不能重复领取奖励" };
task[id].state = 2;
}
const taskTime = now + 8 * 3600000;
if (!await writeTask(dbname, user, task, taskTime)) return taskConflict();
return { code: 1, data: { task, taskTime }, msg: "领取成功" };
}