server/laf-cloud/functions/getTaskReward.ts
2026-09-01 16:04:15 +08:00

81 lines
2.1 KiB
TypeScript

import cloud from '@lafjs/cloud'
const db = cloud.database();
import Utils from "@/Utils";
const taskTarget = {
levelPass: 3,
share: 1,
useEnergy: 10,
useProp: 3,
}
export default async function (ctx: FunctionContext) {
const uid = ctx.body.uid;
const taskType = JSON.parse(ctx.body.taskType);
if (!uid) {
return { code: 0, data: null, msg: "未获取到uid" };
}
if (!taskType) {
return { code: 0, data: null, msg: "未获取到taskType" }
}
let dbname = "users";
const gameName = ctx.body.gameName;
if (gameName == "iaa") {
dbname = "usersAd";
}
let res = await db.collection(dbname).where({ _id: uid }).getOne();
if (res.data == null) {
return { code: 0, data: null, msg: "未获取到用户信息" };
}
const token1 = ctx.body.token;
if (res.data && res.data.token) {
let istoken = Utils.checkToken(token1, res.data.token);
if (!istoken) {
return { code: 0, data: null, msg: "token校验失败" };
}
}
let task = res.data.task;
if (task) {
task = JSON.parse(task);
} else {
task = {
levelPass: {
value: 0,
state: 0,
},
share: {
value: 0,
state: 0,
},
useEnergy: {
value: 0,
state: 0,
},
useProp: {
value: 0,
state: 0,
}
}
}
for (var key in task) {
task[key].target = taskTarget[key];
}
for (let i = 0; i < taskType.length; i++) {
if (!task[taskType[i]]) {
return { code: 0, data: null, msg: "请输入正确task类型" };
}
if (task[taskType[i]].value < task[taskType[i]].target) {
return { code: 0, data: null, msg: "请先完成任务" };
}
if (task[taskType[i]].state == 2) {
return { code: 0, data: null, msg: "不能重复领取奖励" };
}
task[taskType[i]].state = 2;
}
let data = {
task: task,
taskTime: Date.now() + 8 * 3600000
}
await db.collection(dbname).where({ _id: uid }).update({ task: JSON.stringify(task), taskTime: Date.now() + 8 * 3600000 });
return { code: 1, data: data, msg: "领取成功" };
}