159 lines
5.0 KiB
TypeScript
159 lines
5.0 KiB
TypeScript
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;
|
|
} |