54 lines
1.8 KiB
JavaScript
54 lines
1.8 KiB
JavaScript
|
|
// Простые команды 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 })");
|
||
|
|
|