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

97 lines
3.0 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,
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;
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) {
data.freezeAmount = Number(propData.freeze);
}
if (propData.hammer) {
data.hammerAmount = Number(propData.hammer);
}
if (propData.magic_wand) {
data.magicAmount = Number(propData.magic_wand);
}
}
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,
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,
timestamp: res.data.timestamp ||0,
}, msg: "成功"
}
default:
return {
code: 400,
message: '无效的操作类型,请使用 save 或 read'
}
}
}