119 lines
4.4 KiB
JavaScript
119 lines
4.4 KiB
JavaScript
|
|
// Команды для исправления рефералов конкретного пользователя
|
|||
|
|
// Замените USER_ID на ID пользователя, у которого должны быть рефералы
|
|||
|
|
|
|||
|
|
// ============================================
|
|||
|
|
// 1. НАЙТИ ПОЛЬЗОВАТЕЛЯ ПО USERNAME ИЛИ ID
|
|||
|
|
// ============================================
|
|||
|
|
// var userId = db.users.findOne({ username: "USERNAME" })._id;
|
|||
|
|
// или
|
|||
|
|
// var userId = ObjectId("USER_ID");
|
|||
|
|
|
|||
|
|
// ============================================
|
|||
|
|
// 2. НАЙТИ ВСЕХ РЕФЕРАЛОВ ЭТОГО ПОЛЬЗОВАТЕЛЯ
|
|||
|
|
// ============================================
|
|||
|
|
// db.users.find({ referredBy: userId }).forEach(function(ref) {
|
|||
|
|
// print("Реферал: " + (ref.username || ref._id));
|
|||
|
|
// print(" Засчитан: " + (ref.referralCounted || false));
|
|||
|
|
// print(" Дат входа: " + (ref.loginDates ? ref.loginDates.length : 0));
|
|||
|
|
// if (ref.loginDates && ref.loginDates.length > 0) {
|
|||
|
|
// print(" Даты: " + ref.loginDates.map(function(d) { return new Date(d).toLocaleDateString('ru-RU'); }).join(', '));
|
|||
|
|
// }
|
|||
|
|
// print("---");
|
|||
|
|
// });
|
|||
|
|
|
|||
|
|
// ============================================
|
|||
|
|
// 3. ЗАСЧИТАТЬ ВСЕХ РЕФЕРАЛОВ КОНКРЕТНОГО ПОЛЬЗОВАТЕЛЯ
|
|||
|
|
// (замените USER_ID на ID пользователя)
|
|||
|
|
// ============================================
|
|||
|
|
var userId = ObjectId("ЗАМЕНИТЕ_НА_ID_ПОЛЬЗОВАТЕЛЯ");
|
|||
|
|
|
|||
|
|
// Найти пользователя
|
|||
|
|
var user = db.users.findOne({ _id: userId });
|
|||
|
|
if (!user) {
|
|||
|
|
print("❌ Пользователь не найден!");
|
|||
|
|
} else {
|
|||
|
|
print("👤 Пользователь: " + (user.username || user._id));
|
|||
|
|
print(" Текущий счетчик рефералов: " + (user.referralsCount || 0));
|
|||
|
|
print("\n🔍 Поиск рефералов...\n");
|
|||
|
|
|
|||
|
|
var fixed = 0;
|
|||
|
|
var needMoreDays = 0;
|
|||
|
|
var alreadyCounted = 0;
|
|||
|
|
|
|||
|
|
db.users.find({ referredBy: userId }).forEach(function(ref) {
|
|||
|
|
print("Реферал: " + (ref.username || ref._id));
|
|||
|
|
|
|||
|
|
// Если уже засчитан, пропускаем
|
|||
|
|
if (ref.referralCounted === true) {
|
|||
|
|
print(" ✅ Уже засчитан");
|
|||
|
|
alreadyCounted++;
|
|||
|
|
print("---\n");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Получить уникальные даты
|
|||
|
|
var uniqueDates = new Set();
|
|||
|
|
if (ref.loginDates && Array.isArray(ref.loginDates)) {
|
|||
|
|
ref.loginDates.forEach(function(date) {
|
|||
|
|
if (!date) return;
|
|||
|
|
var d = new Date(date);
|
|||
|
|
d.setHours(0, 0, 0, 0);
|
|||
|
|
uniqueDates.add(d.getTime());
|
|||
|
|
});
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print(" Уникальных дат: " + uniqueDates.size);
|
|||
|
|
if (uniqueDates.size > 0) {
|
|||
|
|
var datesArray = Array.from(uniqueDates).map(function(t) {
|
|||
|
|
return new Date(t).toLocaleDateString('ru-RU');
|
|||
|
|
});
|
|||
|
|
print(" Даты: " + datesArray.join(', '));
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
// Если есть 2+ уникальные даты, засчитать
|
|||
|
|
if (uniqueDates.size >= 2) {
|
|||
|
|
var newCount = (user.referralsCount || 0) + 1;
|
|||
|
|
|
|||
|
|
// Увеличить счетчик рефералов
|
|||
|
|
db.users.updateOne(
|
|||
|
|
{ _id: userId },
|
|||
|
|
{ $set: { referralsCount: newCount } }
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
// Пометить реферала как засчитанного
|
|||
|
|
db.users.updateOne(
|
|||
|
|
{ _id: ref._id },
|
|||
|
|
{
|
|||
|
|
$set: {
|
|||
|
|
referralCounted: true,
|
|||
|
|
loginDates: []
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
);
|
|||
|
|
|
|||
|
|
user.referralsCount = newCount; // Обновить локальную переменную
|
|||
|
|
|
|||
|
|
print(" ✅ ЗАСЧИТАН! Новый счетчик: " + newCount);
|
|||
|
|
fixed++;
|
|||
|
|
} else if (uniqueDates.size > 0) {
|
|||
|
|
print(" ⏳ Нужно еще " + (2 - uniqueDates.size) + " уникальных дат");
|
|||
|
|
needMoreDays++;
|
|||
|
|
} else {
|
|||
|
|
print(" 📅 Нет дат входа");
|
|||
|
|
needMoreDays++;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
print("---\n");
|
|||
|
|
});
|
|||
|
|
|
|||
|
|
print("\n📊 Итого:");
|
|||
|
|
print(" ✅ Засчитано новых: " + fixed);
|
|||
|
|
print(" ✅ Уже были засчитаны: " + alreadyCounted);
|
|||
|
|
print(" ⏳ Требуется больше дней: " + needMoreDays);
|
|||
|
|
|
|||
|
|
// Обновить счетчик пользователя
|
|||
|
|
var finalUser = db.users.findOne({ _id: userId });
|
|||
|
|
print("\n 📈 Финальный счетчик рефералов: " + (finalUser.referralsCount || 0));
|
|||
|
|
}
|
|||
|
|
|