nakama/backend/scripts/fixReferrals-simple.mongosh.js

54 lines
1.8 KiB
JavaScript
Raw Permalink Normal View History

2025-12-08 14:57:15 +00:00
// Простые команды mongosh для исправления рефералов
// Скопируйте и выполните в mongosh
// ============================================
// ОДНА КОМАНДА ДЛЯ ВСЕГО:
// ============================================
db.users.find({
referredBy: { $exists: true, $ne: null },
referralCounted: { $ne: true },
loginDates: { $exists: true, $ne: [] }
}).forEach(function(user) {
// Получить уникальные даты
var uniqueDates = new Set();
if (user.loginDates && Array.isArray(user.loginDates)) {
user.loginDates.forEach(function(date) {
if (!date) return;
var d = new Date(date);
d.setHours(0, 0, 0, 0);
uniqueDates.add(d.getTime());
});
}
// Если есть 2+ уникальные даты, засчитать
if (uniqueDates.size >= 2) {
var referrer = db.users.findOne({ _id: user.referredBy });
if (referrer) {
// Увеличить счетчик рефералов
var newCount = (referrer.referralsCount || 0) + 1;
db.users.updateOne(
{ _id: referrer._id },
{ $set: { referralsCount: newCount } }
);
// Пометить как засчитанного
db.users.updateOne(
{ _id: user._id },
{
$set: {
referralCounted: true,
loginDates: []
}
}
);
print("✅ ЗАСЧИТАН: " + (user.username || user._id) + " -> " + (referrer.username || referrer._id) + " (счетчик: " + newCount + ")");
}
}
});
print("\n✅ Готово! Проверьте результат командой:");
print("db.users.find({ referralsCount: { $gt: 0 } }, { username: 1, referralsCount: 1 })");