MatchMaster/server/laf-cloud/functions/dayTaskInfo.ts

111 lines
2.8 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 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'
}
}
}