mirror of
https://github.com/anatolykopyl/vk-bingo.git
synced 2026-03-26 12:54:25 +00:00
🎨 Извлечение функции
This commit is contained in:
@@ -51,21 +51,23 @@ cardsCollection.aggregate([
|
|||||||
]).toArray().then((memeCount) => {
|
]).toArray().then((memeCount) => {
|
||||||
cardsCollection.countDocuments().then((totalCount) => {
|
cardsCollection.countDocuments().then((totalCount) => {
|
||||||
let quota, quotaTimes
|
let quota, quotaTimes
|
||||||
let activeUsers = 0
|
|
||||||
|
|
||||||
quota = totalCount/memeCount.length // Квота мемов на человека
|
quota = totalCount/memeCount.length // Квота мемов на человека
|
||||||
console.log(totalCount + " мемов всего. Квота: " + quota)
|
console.log(totalCount + " мемов всего. Квота: " + quota)
|
||||||
|
|
||||||
// Подсчет количества активных пользователей
|
function activeUsers() {
|
||||||
|
let activeUsers = 0
|
||||||
memeCount.forEach((person) => {
|
memeCount.forEach((person) => {
|
||||||
if (person.count > quota/10)
|
if (person.count > quota/10)
|
||||||
activeUsers++
|
activeUsers++
|
||||||
})
|
})
|
||||||
|
return activeUsers
|
||||||
|
}
|
||||||
|
|
||||||
memeCount.forEach((person) => {
|
memeCount.forEach((person) => {
|
||||||
// Во сколько раз превышена квота:
|
// Во сколько раз превышена квота:
|
||||||
// (колич. астивных человек в конфе * колич. мемов данного человека / мемов всего)
|
// (колич. астивных человек в конфе * колич. мемов данного человека / мемов всего)
|
||||||
quotaTimes = activeUsers*person.count/totalCount
|
quotaTimes = activeUsers()*person.count/totalCount
|
||||||
if (quotaTimes > 1) {
|
if (quotaTimes > 1) {
|
||||||
dropProb[person._id] = 1 - (1/quotaTimes)
|
dropProb[person._id] = 1 - (1/quotaTimes)
|
||||||
} else {
|
} else {
|
||||||
@@ -96,8 +98,7 @@ app.post('/api/auth', async (req, res) => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
app.get('/api/card', async (req, res) => {
|
app.get('/api/card', async (req, res) => {
|
||||||
if (req.session.loggedIn) {
|
async function drawCard() {
|
||||||
try {
|
|
||||||
let card
|
let card
|
||||||
// Тянем карты и отбрасываем их в соответствии с их вероятностью отбрасывания
|
// Тянем карты и отбрасываем их в соответствии с их вероятностью отбрасывания
|
||||||
do {
|
do {
|
||||||
@@ -110,11 +111,11 @@ app.get('/api/card', async (req, res) => {
|
|||||||
]).toArray()
|
]).toArray()
|
||||||
card = card[0]
|
card = card[0]
|
||||||
} while (Math.random() < dropProb[card.name])
|
} while (Math.random() < dropProb[card.name])
|
||||||
res.status(200).send(card)
|
return card
|
||||||
} catch (e) {
|
|
||||||
console.log("Error: " + e)
|
|
||||||
res.status(500).send()
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (req.session.loggedIn) {
|
||||||
|
res.status(200).send(await drawCard())
|
||||||
} else {
|
} else {
|
||||||
res.status(403).send()
|
res.status(403).send()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user