import cloud from '@lafjs/cloud' const db = cloud.database(); const CITY = { "河北省": true, "山西省": true, "辽宁省": true, "吉林省": true, "黑龙江省": true, "江苏省": true, "浙江省": true, "安徽省": true, "福建省": true, "江西省": true, "山东省": true, "河南省": true, "湖北省": true, "湖南省": true, "广东省": true, "海南省": true, "四川省": true, "贵州省": true, "云南省": true, "陕西省": true, "甘肃省": true, "青海省": true, "港澳台": true, "北京": true, "天津": true, "上海": true, "重庆": true, "内蒙古": true, "广西": true, "西藏": true, "宁夏": true, "新疆": true, "其他": true }; export default async function (ctx: FunctionContext) { let uid = ctx.body.uid; let res = await sortBattle(uid); for (var key in CITY) { let res = await sortShengShi(key); } return { code: 1 } } /**普通排行 * @param userCollec */ async function sortBattle(uid) { let res = await db.collection("users").aggregate().project({ unionid: 1, levelAmount: 1, // 1 表示包含该字段,其他字段默认排除 endLevelNum: 1, username: 1, useravatar: 1, useravatarIcon: 1, isWhite: 1 }) .match({ isWhite: false }) .sort({ levelAmount: -1, endLevelNum: -1 }).limit(200).end(); const res1 = await db.collection("rank").where({ _id: "69fac0d98463a95668c5e5d9" }) .update({ rank: JSON.stringify(res.data) }); sendRank(JSON.stringify(res.data)); return true; } async function sendRank(rank) { let res = await fetch("https://bx7gi3d4oq.sealoshzh.site/rankLevel", { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ rank: rank, time: new Date().getHours() }) }) } /**省市地区排名前100名*/ async function sortShengShi(address) { let res = await db.collection("users").aggregate().project({ addLevel: 1, levelAmount: 1, // 1 表示包含该字段,其他字段默认排除 endLevelNum: 1, username: 1, useravatar: 1, useravatarIcon: 1, isWhite: 1, address: 1, }).addFields({ endLevelNum: { $toInt: "$endLevelNum" } }).addFields({ totalLevel: { $add: ["$levelAmount", "$endLevelNum"] } }).match({ address: address, isWhite: false, addLevel: { $gte: 5 }, }) .sort({ addLevel: -1, }).limit(200).end(); const res3 = await db.collection("sRank").where({ name: address }).update({ totoal: res.data }, { upsert: true }); return true; } import cloud from '@lafjs/cloud' const db = cloud.database(); const CITY = { "河北省": true, "山西省": true, "辽宁省": true, "吉林省": true, "黑龙江省": true, "江苏省": true, "浙江省": true, "安徽省": true, "福建省": true, "江西省": true, "山东省": true, "河南省": true, "湖北省": true, "湖南省": true, "广东省": true, "海南省": true, "四川省": true, "贵州省": true, "云南省": true, "陕西省": true, "甘肃省": true, "青海省": true, "港澳台": true, "北京": true, "天津": true, "上海": true, "重庆": true, "内蒙古": true, "广西": true, "西藏": true, "宁夏": true, "新疆": true, "其他": true }; export default async function (ctx: FunctionContext) { let uid = ctx.body.uid; let res = await sortBattle(uid); for (var key in CITY) { let res = await sortShengShi(key); } return { code: 1 } } /**普通排行 * @param userCollec */ async function sortBattle(uid) { let res = await db.collection("users").aggregate().project({ unionid: 1, levelAmount: 1, // 1 表示包含该字段,其他字段默认排除 endLevelNum: 1, username: 1, useravatar: 1, useravatarIcon: 1, isWhite: 1 }) .match({ isWhite: false }) .sort({ levelAmount: -1, endLevelNum: -1 }).limit(200).end(); const res1 = await db.collection("rank").where({ _id: "69fac0d98463a95668c5e5d9" }) .update({ rank: JSON.stringify(res.data) }); sendRank(JSON.stringify(res.data)); return true; } async function sendRank(rank) { let res = await fetch("https://bx7gi3d4oq.sealoshzh.site/rankLevel", { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ rank: rank, time: new Date().getHours() }) }) } /**省市地区排名前100名*/ async function sortShengShi(address) { let res = await db.collection("users").aggregate().project({ addLevel: 1, levelAmount: 1, // 1 表示包含该字段,其他字段默认排除 endLevelNum: 1, username: 1, useravatar: 1, useravatarIcon: 1, isWhite: 1, address: 1, }).addFields({ endLevelNum: { $toInt: "$endLevelNum" } }).addFields({ totalLevel: { $add: ["$levelAmount", "$endLevelNum"] } }).match({ address: address, isWhite: false, addLevel: { $gte: 5 }, }) .sort({ addLevel: -1, }).limit(200).end(); const res3 = await db.collection("sRank").where({ name: address }).update({ totoal: res.data }, { upsert: true }); return true; }