119 lines
4.3 KiB
TypeScript
119 lines
4.3 KiB
TypeScript
import cloud from '@lafjs/cloud'
|
|
const db = cloud.database();
|
|
import Utils from "@/Utils";
|
|
export default async function (ctx: FunctionContext) {
|
|
const action = ctx.body.action;
|
|
const uid = ctx.body.uid;
|
|
let dbname = "users";
|
|
const gameName = ctx.body.gameName;
|
|
if (gameName == "iaa") {
|
|
dbname = "usersAd";
|
|
}
|
|
if (!action) {
|
|
return { code: 0, data: null, msg: "未获取到action" };
|
|
}
|
|
|
|
if (!uid) {
|
|
return { code: 0, data: null, msg: "未获取到uid" };
|
|
}
|
|
let data = {
|
|
freezeAmount: 0,
|
|
hammerAmount: 0,
|
|
magicAmount: 0,
|
|
hourglassAmount: 0,
|
|
rocketAmount: 0,
|
|
infiniteHourglassTime: 0,
|
|
infiniteRocketTime: 0,
|
|
timestamp: Date.now()
|
|
}
|
|
|
|
switch (action) {
|
|
case 'save':
|
|
let user = await db.collection(dbname).where({ _id: uid }).getOne();
|
|
const token = ctx.body.token;
|
|
if (user.data && user.data.token) {
|
|
let istoken = Utils.checkToken(token, user.data.token);
|
|
if (!istoken) {
|
|
return { code: 0, data: null, msg: "token校验失败" };
|
|
}
|
|
}
|
|
data.freezeAmount = user.data?.freezeAmount || 0;
|
|
data.hammerAmount = user.data?.hammerAmount || 0;
|
|
data.magicAmount = user.data?.magicAmount || 0;
|
|
data.hourglassAmount = user.data?.hourglassAmount || 0;
|
|
data.rocketAmount = user.data?.rocketAmount || 0;
|
|
data.infiniteHourglassTime = user.data?.infiniteHourglassTime || 0;
|
|
data.infiniteRocketTime = user.data?.infiniteRocketTime || 0;
|
|
let propType = Number(ctx.body.propType);
|
|
let propData = ctx.body.propData;
|
|
if (!propType && propType != 0) {
|
|
return { code: 0, data: null, msg: "未获取到propType" };
|
|
}
|
|
if (!propData) {
|
|
return { code: 0, data: null, msg: "未获取到propData" }
|
|
}
|
|
if (propType === 2001) {
|
|
data.freezeAmount = Number(propData);
|
|
} else if (propType === 2002) {
|
|
data.hammerAmount = Number(propData);
|
|
} else if (propType === 2003) {
|
|
data.magicAmount = Number(propData);
|
|
} else if (propType === 0) {
|
|
// 处理 all 类型,从 propData 中分别赋值
|
|
propData = JSON.parse(propData);
|
|
if (propData.freeze !== undefined) {
|
|
data.freezeAmount = Number(propData.freeze);
|
|
}
|
|
if (propData.hammer !== undefined) {
|
|
data.hammerAmount = Number(propData.hammer);
|
|
}
|
|
if (propData.magic_wand !== undefined) {
|
|
data.magicAmount = Number(propData.magic_wand);
|
|
}
|
|
if (propData.hourglass !== undefined) data.hourglassAmount = Number(propData.hourglass);
|
|
if (propData.rocket !== undefined) data.rocketAmount = Number(propData.rocket);
|
|
if (propData.infinite_hourglass !== undefined) data.infiniteHourglassTime = Number(propData.infinite_hourglass);
|
|
if (propData.infinite_rocket !== undefined) data.infiniteRocketTime = Number(propData.infinite_rocket);
|
|
}
|
|
let ret = await db.collection(dbname).where({ _id: uid }).update(data);
|
|
return {
|
|
code: 1, data: {
|
|
freeze: data.freezeAmount,
|
|
hammer: data.hammerAmount,
|
|
magic_wand: data.magicAmount,
|
|
hourglass: data.hourglassAmount,
|
|
rocket: data.rocketAmount,
|
|
infinite_hourglass: data.infiniteHourglassTime,
|
|
infinite_rocket: data.infiniteRocketTime,
|
|
timestamp: data.timestamp,
|
|
}, msg: "用户数据更新成功"
|
|
}
|
|
case 'read':
|
|
let res = await db.collection(dbname).where({ _id: uid }).getOne();
|
|
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校验失败" };
|
|
}
|
|
}
|
|
return {
|
|
code: 1, data: {
|
|
freeze: res.data.freezeAmount || 0,
|
|
hammer: res.data.hammerAmount || 0,
|
|
magic_wand: res.data.magicAmount || 0,
|
|
hourglass: res.data.hourglassAmount || 0,
|
|
rocket: res.data.rocketAmount || 0,
|
|
infinite_hourglass: res.data.infiniteHourglassTime || 0,
|
|
infinite_rocket: res.data.infiniteRocketTime || 0,
|
|
timestamp: res.data.timestamp || 0,
|
|
}, msg: "成功"
|
|
}
|
|
default:
|
|
return {
|
|
code: 400,
|
|
message: '无效的操作类型,请使用 save 或 read'
|
|
}
|
|
}
|
|
}
|