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 action = ctx.body.action; const uid = ctx.body.uid; if (!action) { return { code: 0, data: null, msg: "未获取到action" }; } if (!uid) { return { code: 0, data: null, msg: "未获取到uid" }; } 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; let taskTime=res.data.taskTime||0; 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]; } const now = new Date(Date.now() + 8 * 3600000); now.setHours(0, 0, 0, 0); // 直接修改当前Date对象 const timestamp = now.getTime(); if (timestamp > taskTime) { for (var key in task) { task[key].value = 0; task[key].state = 0; } } switch (action) { case 'save': let task1 = ctx.body.task; if (!task1) { return { code: 0, data: null, msg: "请输入task数据" }; } task1 = JSON.parse(task1); for (var key in task) { task[key].value = task1[key].value; } for (var key in task) { if (task[key].state == 0) { if (task[key].value >= task[key].target) { task[key].state = 1; } } } await db.collection(dbname).where({ _id: uid }).update({ task: JSON.stringify(task), taskTime: Date.now() + 8 * 3600000 }); return { code: 1, data: { task: task }, msg: "用户数据更新成功" } case 'read': for (var key in task) { if (!task[key].state) { task[key].state = 0; } if (task[key].state != 2) { if (task[key].value >= task[key].target) { task[key].state = 1; } } } return { code: 1, data: { task: task }, msg: "成功" } default: return { code: 400, message: '无效的操作类型,请使用 save 或 read' } } }