更新云函数
This commit is contained in:
parent
a1dd6527f3
commit
d973dc95cc
|
|
@ -35,6 +35,8 @@ export default async function (ctx: FunctionContext) {
|
||||||
|
|
||||||
async function rank(db1, uid, res1, oldaddress, address) {
|
async function rank(db1, uid, res1, oldaddress, address) {
|
||||||
let add = res1.data.addLevel;
|
let add = res1.data.addLevel;
|
||||||
|
const userCat = res1.data?.userCat;
|
||||||
|
const userCatData = userCat != null ? { userCat: userCat } : {};
|
||||||
if (add < 5) {
|
if (add < 5) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
@ -57,6 +59,11 @@ async function rank(db1, uid, res1, oldaddress, address) {
|
||||||
for (let i = 0; i < total[address].length; i++) {
|
for (let i = 0; i < total[address].length; i++) {
|
||||||
if (total[address][i].id == uid) {
|
if (total[address][i].id == uid) {
|
||||||
isHave = true;
|
isHave = true;
|
||||||
|
if (userCat != null) {
|
||||||
|
total[address][i].userCat = userCat;
|
||||||
|
} else {
|
||||||
|
delete total[address][i].userCat;
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -68,6 +75,7 @@ async function rank(db1, uid, res1, oldaddress, address) {
|
||||||
addLevel: add,
|
addLevel: add,
|
||||||
time: Date.now(),
|
time: Date.now(),
|
||||||
username: res1.data?.username,
|
username: res1.data?.username,
|
||||||
|
...userCatData,
|
||||||
useravatar: res1.data?.useravatar,
|
useravatar: res1.data?.useravatar,
|
||||||
useravatarIcon: res1.data?.useravatarIcon,
|
useravatarIcon: res1.data?.useravatarIcon,
|
||||||
levelAmount: res1.data?.levelAmount
|
levelAmount: res1.data?.levelAmount
|
||||||
|
|
@ -80,6 +88,7 @@ async function rank(db1, uid, res1, oldaddress, address) {
|
||||||
addLevel: add,
|
addLevel: add,
|
||||||
time: Date.now(),
|
time: Date.now(),
|
||||||
username: res1.data?.username,
|
username: res1.data?.username,
|
||||||
|
...userCatData,
|
||||||
useravatar: res1.data?.useravatar,
|
useravatar: res1.data?.useravatar,
|
||||||
useravatarIcon: res1.data?.useravatarIcon,
|
useravatarIcon: res1.data?.useravatarIcon,
|
||||||
levelAmount: res1.data?.levelAmount
|
levelAmount: res1.data?.levelAmount
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ const ThinkingData = require('thinkingdata-node');
|
||||||
import Ip2region from 'ip2region';
|
import Ip2region from 'ip2region';
|
||||||
const query = new Ip2region();
|
const query = new Ip2region();
|
||||||
const canIos = false;
|
const canIos = false;
|
||||||
const version = "1.9.93";
|
const version = "2.0.02";
|
||||||
const AB_CONFIG_COLLECTION = "ab_config";
|
const AB_CONFIG_COLLECTION = "ab_config";
|
||||||
export default async function (ctx: FunctionContext) {
|
export default async function (ctx: FunctionContext) {
|
||||||
let code = ctx.body.code;
|
let code = ctx.body.code;
|
||||||
|
|
@ -41,6 +41,7 @@ export default async function (ctx: FunctionContext) {
|
||||||
openid: openid,
|
openid: openid,
|
||||||
unionid: unionid,
|
unionid: unionid,
|
||||||
session_key: session_key,
|
session_key: session_key,
|
||||||
|
userCat: generateUserCat(),
|
||||||
register_time: Date.now(),
|
register_time: Date.now(),
|
||||||
onlyId: ref.data.count,
|
onlyId: ref.data.count,
|
||||||
distinctId: distinctId,
|
distinctId: distinctId,
|
||||||
|
|
@ -105,7 +106,11 @@ export default async function (ctx: FunctionContext) {
|
||||||
task[key].state = 0;
|
task[key].state = 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await db.collection(dbname).where({ _id: userData._id }).update({ session_key: session_key, distinctId: distinctId, isDebug: isDebug, isFirst: false, unionid: unionid, task: JSON.stringify(task), taskTime: Date.now() + 8 * 3600000, token: token });
|
const loginUpdate: any = { session_key: session_key, distinctId: distinctId, isDebug: isDebug, isFirst: false, unionid: unionid, task: JSON.stringify(task), taskTime: Date.now() + 8 * 3600000, token: token };
|
||||||
|
if (userData.userCat == null) {
|
||||||
|
loginUpdate.userCat = generateUserCat();
|
||||||
|
}
|
||||||
|
await db.collection(dbname).where({ _id: userData._id }).update(loginUpdate);
|
||||||
}
|
}
|
||||||
if (userData?.freeze) {
|
if (userData?.freeze) {
|
||||||
return { code: 0, data: "账号封禁", msg: "账号封禁" };
|
return { code: 0, data: "账号封禁", msg: "账号封禁" };
|
||||||
|
|
@ -156,6 +161,32 @@ export default async function (ctx: FunctionContext) {
|
||||||
//console.log("查询时间:");
|
//console.log("查询时间:");
|
||||||
return { code: 1, data: userData }
|
return { code: 1, data: userData }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function generateUserCat(): string {
|
||||||
|
const weightedCats = [
|
||||||
|
{ value: "1", weight: 150 },
|
||||||
|
{ value: "2", weight: 150 },
|
||||||
|
{ value: "3", weight: 150 },
|
||||||
|
{ value: "4", weight: 150 },
|
||||||
|
{ value: "5", weight: 150 },
|
||||||
|
{ value: "6", weight: 150 },
|
||||||
|
{ value: "7", weight: 150 },
|
||||||
|
{ value: "8", weight: 150 },
|
||||||
|
{ value: "9", weight: 30 },
|
||||||
|
{ value: "10", weight: 30 },
|
||||||
|
{ value: "11", weight: 8 },
|
||||||
|
];
|
||||||
|
const totalWeight = weightedCats.reduce((total, cat) => total + cat.weight, 0);
|
||||||
|
let randomWeight = Math.random() * totalWeight;
|
||||||
|
for (let i = 0; i < weightedCats.length; i++) {
|
||||||
|
randomWeight -= weightedCats[i].weight;
|
||||||
|
if (randomWeight < 0) {
|
||||||
|
return weightedCats[i].value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return weightedCats[weightedCats.length - 1].value;
|
||||||
|
}
|
||||||
|
|
||||||
function stringToHash(input: string, algorithm: 'sha1' | 'sha256' | 'sha512' = 'sha256'): string {
|
function stringToHash(input: string, algorithm: 'sha1' | 'sha256' | 'sha512' = 'sha256'): string {
|
||||||
return createHash(algorithm).update(input).digest('hex');
|
return createHash(algorithm).update(input).digest('hex');
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -2,18 +2,18 @@ import cloud from '@lafjs/cloud';
|
||||||
const db = cloud.database();
|
const db = cloud.database();
|
||||||
import Utils from "@/Utils";
|
import Utils from "@/Utils";
|
||||||
export default async function (ctx: FunctionContext) {
|
export default async function (ctx: FunctionContext) {
|
||||||
const action=ctx.body.action;
|
const action = ctx.body.action;
|
||||||
const uid=ctx.body.uid;
|
const uid = ctx.body.uid;
|
||||||
let dbname = "users";
|
let dbname = "users";
|
||||||
const gameName = ctx.body.gameName;
|
const gameName = ctx.body.gameName;
|
||||||
if (gameName == "iaa") {
|
if (gameName == "iaa") {
|
||||||
dbname = "usersAd";
|
dbname = "usersAd";
|
||||||
}
|
}
|
||||||
if(!action){
|
if (!action) {
|
||||||
return { code: 0, data: null, msg: "未获取到action" };
|
return { code: 0, data: null, msg: "未获取到action" };
|
||||||
}
|
}
|
||||||
if(!uid){
|
if (!uid) {
|
||||||
return {code:0,data:null,msg:"未获取到uid"};
|
return { code: 0, data: null, msg: "未获取到uid" };
|
||||||
}
|
}
|
||||||
let res = await db.collection(dbname).where({ _id: uid }).getOne();
|
let res = await db.collection(dbname).where({ _id: uid }).getOne();
|
||||||
const token1 = ctx.body.token;
|
const token1 = ctx.body.token;
|
||||||
|
|
@ -23,14 +23,19 @@ export default async function (ctx: FunctionContext) {
|
||||||
return { code: 0, data: null, msg: "token校验失败" };
|
return { code: 0, data: null, msg: "token校验失败" };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (res.data && (res.data.userCat == null || res.data.userCat == undefined || res.data.userCat == "")) {
|
||||||
|
const userCat = generateUserCat();
|
||||||
|
await db.collection(dbname).where({ _id: uid }).update({ userCat: userCat });
|
||||||
|
res.data.userCat = userCat;
|
||||||
|
}
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case 'save':
|
case 'save':
|
||||||
const userData1 = JSON.parse(ctx.body.userData);
|
const userData1 = JSON.parse(ctx.body.userData);
|
||||||
if(!userData1){
|
if (!userData1) {
|
||||||
return { code: 0, data: null, msg: "未获取到userData" };
|
return { code: 0, data: null, msg: "未获取到userData" };
|
||||||
}
|
}
|
||||||
//console.error(userData1)
|
//console.error(userData1)
|
||||||
let data={
|
let data = {
|
||||||
// coinAmount:Number(userData1.coinAmount)||0,
|
// coinAmount:Number(userData1.coinAmount)||0,
|
||||||
// freezeAmount:Number(userData1.freezeAmount)||0,
|
// freezeAmount:Number(userData1.freezeAmount)||0,
|
||||||
// hammerAmount:Number(userData1.hammerAmount)||0,
|
// hammerAmount:Number(userData1.hammerAmount)||0,
|
||||||
|
|
@ -39,21 +44,22 @@ export default async function (ctx: FunctionContext) {
|
||||||
// timestamp:Date.now(),
|
// timestamp:Date.now(),
|
||||||
// register_time: Number(userData1.register_time)||Date.now(),
|
// register_time: Number(userData1.register_time)||Date.now(),
|
||||||
// userPowerTime: Number(userData1.userPowerTime) || 0,
|
// userPowerTime: Number(userData1.userPowerTime) || 0,
|
||||||
useravatar:userData1.useravatar||Math.floor(Math.random()*4)+"",
|
useravatar: userData1.useravatar || Math.floor(Math.random() * 4) + "",
|
||||||
username:userData1.username||"user",
|
username: userData1.username || "user",
|
||||||
useravatarIcon: userData1.useravatarIcon||"0",
|
useravatarIcon: userData1.useravatarIcon || "0",
|
||||||
|
userCat: userData1.userCat || res.data?.userCat,
|
||||||
}
|
}
|
||||||
//console.log(data);
|
//console.log(data);
|
||||||
let res2 = await db.collection(dbname).where({ _id: uid }).update(data);
|
let res2 = await db.collection(dbname).where({ _id: uid }).update(data);
|
||||||
if(res2.ok&&res2.updated==1){
|
if (res2.ok && res2.updated == 1) {
|
||||||
return { code:1, data: null, msg: "用户数据更新成功" }
|
return { code: 1, data: null, msg: "用户数据更新成功" }
|
||||||
}else{
|
} else {
|
||||||
return { code: 0, data: null, msg: "用户数据更新失败" }
|
return { code: 0, data: null, msg: "用户数据更新失败" }
|
||||||
}
|
}
|
||||||
case 'read':
|
case 'read':
|
||||||
let ret = await db.collection(dbname).where({ _id: uid }).getOne();
|
let ret = await db.collection(dbname).where({ _id: uid }).getOne();
|
||||||
let userData=ret.data;
|
let userData = ret.data;
|
||||||
if(ret.data){
|
if (ret.data) {
|
||||||
let share = userData.shareLv;
|
let share = userData.shareLv;
|
||||||
if (share) {
|
if (share) {
|
||||||
share = JSON.parse(share);
|
share = JSON.parse(share);
|
||||||
|
|
@ -75,6 +81,7 @@ export default async function (ctx: FunctionContext) {
|
||||||
timestamp: Number(userData.timestamp) || 0,
|
timestamp: Number(userData.timestamp) || 0,
|
||||||
useravatar: userData.useravatar || "",
|
useravatar: userData.useravatar || "",
|
||||||
username: userData.username || "user",
|
username: userData.username || "user",
|
||||||
|
userCat: userData.userCat,
|
||||||
register_time: Number(userData.register_time) || 0,
|
register_time: Number(userData.register_time) || 0,
|
||||||
monthCardTime: Number(userData.monthCardTime) || 0,
|
monthCardTime: Number(userData.monthCardTime) || 0,
|
||||||
monthCardReward: Number(userData.monthCardReward) || 0,
|
monthCardReward: Number(userData.monthCardReward) || 0,
|
||||||
|
|
@ -82,19 +89,44 @@ export default async function (ctx: FunctionContext) {
|
||||||
rebornGiftTime: rebornGiftTime,
|
rebornGiftTime: rebornGiftTime,
|
||||||
rebornGiftCount: rebornGiftCount
|
rebornGiftCount: rebornGiftCount
|
||||||
}
|
}
|
||||||
return {code:1,data:data,msg:"获取玩家数据成功"}
|
return { code: 1, data: data, msg: "获取玩家数据成功" }
|
||||||
}else{
|
} else {
|
||||||
return {code:0,data:null,msg:"获取玩家数据失败"}
|
return { code: 0, data: null, msg: "获取玩家数据失败" }
|
||||||
}
|
}
|
||||||
//return 1;
|
//return 1;
|
||||||
default:
|
default:
|
||||||
return {
|
return {
|
||||||
code:400,
|
code: 400,
|
||||||
message: '无效的操作类型,请使用 save 或 read'
|
message: '无效的操作类型,请使用 save 或 read'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function generateUserCat(): string {
|
||||||
|
const weightedCats = [
|
||||||
|
{ value: "1", weight: 150 },
|
||||||
|
{ value: "2", weight: 150 },
|
||||||
|
{ value: "3", weight: 150 },
|
||||||
|
{ value: "4", weight: 150 },
|
||||||
|
{ value: "5", weight: 150 },
|
||||||
|
{ value: "6", weight: 150 },
|
||||||
|
{ value: "7", weight: 150 },
|
||||||
|
{ value: "8", weight: 150 },
|
||||||
|
{ value: "9", weight: 30 },
|
||||||
|
{ value: "10", weight: 30 },
|
||||||
|
{ value: "11", weight: 8 },
|
||||||
|
];
|
||||||
|
const totalWeight = weightedCats.reduce((total, cat) => total + cat.weight, 0);
|
||||||
|
let randomWeight = Math.random() * totalWeight;
|
||||||
|
for (let i = 0; i < weightedCats.length; i++) {
|
||||||
|
randomWeight -= weightedCats[i].weight;
|
||||||
|
if (randomWeight < 0) {
|
||||||
|
return weightedCats[i].value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return weightedCats[weightedCats.length - 1].value;
|
||||||
|
}
|
||||||
|
|
||||||
function getTodayStartTimestamp() {
|
function getTodayStartTimestamp() {
|
||||||
const date = new Date();
|
const date = new Date();
|
||||||
date.setHours(0, 0, 0, 0);
|
date.setHours(0, 0, 0, 0);
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ export default async function (ctx: FunctionContext) {
|
||||||
rankNum = await rank(db1, uid, add, levelAmount, res1, address, levelTJ);
|
rankNum = await rank(db1, uid, add, levelAmount, res1, address, levelTJ);
|
||||||
//console.log(res1.data.unionid)
|
//console.log(res1.data.unionid)
|
||||||
if (res1.data.unionid) {
|
if (res1.data.unionid) {
|
||||||
sendRank(uid, res1.data?.useravatar, res1.data?.username, res1.data?.useravatarIcon, add, levelTJ, address, res1.data.unionid);
|
sendRank(uid, res1.data?.useravatar, res1.data?.username, res1.data?.userCat, res1.data?.useravatarIcon, add, levelTJ, address, res1.data.unionid);
|
||||||
}
|
}
|
||||||
levelTJ = 1;
|
levelTJ = 1;
|
||||||
careerAmount += 1;
|
careerAmount += 1;
|
||||||
|
|
@ -100,7 +100,7 @@ function isSameDayUTC(timestamp1, timestamp2) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
async function sendRank(uid, useravatar, username, useravatarIcon, count, levelTJ, address, unionid) {
|
async function sendRank(uid, useravatar, username, userCat, useravatarIcon, count, levelTJ, address, unionid) {
|
||||||
let res = await fetch("https://bx7gi3d4oq.sealoshzh.site/userLevel", {
|
let res = await fetch("https://bx7gi3d4oq.sealoshzh.site/userLevel", {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
|
|
@ -111,6 +111,7 @@ async function sendRank(uid, useravatar, username, useravatarIcon, count, levelT
|
||||||
unionid: unionid,
|
unionid: unionid,
|
||||||
useravatar: useravatar,
|
useravatar: useravatar,
|
||||||
username: username,
|
username: username,
|
||||||
|
...(userCat != null ? { userCat: userCat } : {}),
|
||||||
useravatarIcon: useravatarIcon,
|
useravatarIcon: useravatarIcon,
|
||||||
count: count,
|
count: count,
|
||||||
levelTJ: levelTJ,
|
levelTJ: levelTJ,
|
||||||
|
|
@ -122,6 +123,8 @@ async function sendRank(uid, useravatar, username, useravatarIcon, count, levelT
|
||||||
}
|
}
|
||||||
async function rank(db1, uid, add, levelAmount, res1, address, levelTJ) {
|
async function rank(db1, uid, add, levelAmount, res1, address, levelTJ) {
|
||||||
let rankInfo = await db.collection("sRank").where({ _id: db1 }).getOne();
|
let rankInfo = await db.collection("sRank").where({ _id: db1 }).getOne();
|
||||||
|
const userCat = res1.data?.userCat;
|
||||||
|
const userCatData = userCat != null ? { userCat: userCat } : {};
|
||||||
|
|
||||||
let total = rankInfo.data.total;
|
let total = rankInfo.data.total;
|
||||||
if (total != null) {
|
if (total != null) {
|
||||||
|
|
@ -138,18 +141,24 @@ async function rank(db1, uid, add, levelAmount, res1, address, levelTJ) {
|
||||||
total["all"][i].username = res1.data?.username,
|
total["all"][i].username = res1.data?.username,
|
||||||
total["all"][i].useravatarIcon = res1.data?.useravatarIcon,
|
total["all"][i].useravatarIcon = res1.data?.useravatarIcon,
|
||||||
total["all"][i].addLevel = add;
|
total["all"][i].addLevel = add;
|
||||||
|
if (userCat != null) {
|
||||||
|
total["all"][i].userCat = userCat;
|
||||||
|
} else {
|
||||||
|
delete total["all"][i].userCat;
|
||||||
|
}
|
||||||
total["all"][i].time = Date.now();
|
total["all"][i].time = Date.now();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (isHave == false) {
|
if (isHave == false) {
|
||||||
let length = total["all"].length;
|
let length = total["all"].length;
|
||||||
if (length < 10 || add > total["all"][length - 1].addLevel) {
|
if (length < 11 || add > total["all"][length - 1].addLevel) {
|
||||||
total["all"].push({
|
total["all"].push({
|
||||||
id: uid,
|
id: uid,
|
||||||
addLevel: add,
|
addLevel: add,
|
||||||
time: Date.now(),
|
time: Date.now(),
|
||||||
username: res1.data?.username,
|
username: res1.data?.username,
|
||||||
|
...userCatData,
|
||||||
useravatar: res1.data?.useravatar,
|
useravatar: res1.data?.useravatar,
|
||||||
useravatarIcon: res1.data?.useravatarIcon,
|
useravatarIcon: res1.data?.useravatarIcon,
|
||||||
levelAmount: levelAmount
|
levelAmount: levelAmount
|
||||||
|
|
@ -162,6 +171,7 @@ async function rank(db1, uid, add, levelAmount, res1, address, levelTJ) {
|
||||||
addLevel: add,
|
addLevel: add,
|
||||||
time: Date.now(),
|
time: Date.now(),
|
||||||
username: res1.data?.username,
|
username: res1.data?.username,
|
||||||
|
...userCatData,
|
||||||
useravatar: res1.data?.useravatar,
|
useravatar: res1.data?.useravatar,
|
||||||
useravatarIcon: res1.data?.useravatarIcon,
|
useravatarIcon: res1.data?.useravatarIcon,
|
||||||
levelAmount: levelAmount
|
levelAmount: levelAmount
|
||||||
|
|
@ -173,8 +183,8 @@ async function rank(db1, uid, add, levelAmount, res1, address, levelTJ) {
|
||||||
}
|
}
|
||||||
return a.time - b.time;
|
return a.time - b.time;
|
||||||
});
|
});
|
||||||
if (total["all"].length >= 10) {
|
if (total["all"].length >= 11) {
|
||||||
total["all"] = total["all"].slice(0, 10);
|
total["all"] = total["all"].slice(0, 11);
|
||||||
}
|
}
|
||||||
if (total[address]) {
|
if (total[address]) {
|
||||||
let isHave = false;
|
let isHave = false;
|
||||||
|
|
@ -185,6 +195,11 @@ async function rank(db1, uid, add, levelAmount, res1, address, levelTJ) {
|
||||||
total[address][i].username = res1.data?.username,
|
total[address][i].username = res1.data?.username,
|
||||||
total[address][i].useravatarIcon = res1.data?.useravatarIcon,
|
total[address][i].useravatarIcon = res1.data?.useravatarIcon,
|
||||||
total[address][i].addLevel = add;
|
total[address][i].addLevel = add;
|
||||||
|
if (userCat != null) {
|
||||||
|
total[address][i].userCat = userCat;
|
||||||
|
} else {
|
||||||
|
delete total[address][i].userCat;
|
||||||
|
}
|
||||||
total[address][i].time = Date.now();
|
total[address][i].time = Date.now();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -197,6 +212,7 @@ async function rank(db1, uid, add, levelAmount, res1, address, levelTJ) {
|
||||||
addLevel: add,
|
addLevel: add,
|
||||||
time: Date.now(),
|
time: Date.now(),
|
||||||
username: res1.data?.username,
|
username: res1.data?.username,
|
||||||
|
...userCatData,
|
||||||
useravatar: res1.data?.useravatar,
|
useravatar: res1.data?.useravatar,
|
||||||
useravatarIcon: res1.data?.useravatarIcon,
|
useravatarIcon: res1.data?.useravatarIcon,
|
||||||
levelAmount: levelAmount
|
levelAmount: levelAmount
|
||||||
|
|
@ -209,6 +225,7 @@ async function rank(db1, uid, add, levelAmount, res1, address, levelTJ) {
|
||||||
addLevel: add,
|
addLevel: add,
|
||||||
time: Date.now(),
|
time: Date.now(),
|
||||||
username: res1.data?.username,
|
username: res1.data?.username,
|
||||||
|
...userCatData,
|
||||||
useravatar: res1.data?.useravatar,
|
useravatar: res1.data?.useravatar,
|
||||||
useravatarIcon: res1.data?.useravatarIcon,
|
useravatarIcon: res1.data?.useravatarIcon,
|
||||||
levelAmount: levelAmount
|
levelAmount: levelAmount
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user