78 lines
2.8 KiB
JavaScript
78 lines
2.8 KiB
JavaScript
// Команды для проверки и исправления реферальных кодов
|
||
// Выполняйте в mongosh
|
||
|
||
// ============================================
|
||
// 1. ПРОВЕРИТЬ ПОЛЬЗОВАТЕЛЕЙ БЕЗ REFERRALCODE
|
||
// ============================================
|
||
print("Пользователи без referralCode:\n");
|
||
db.users.find({
|
||
referralCode: { $exists: false }
|
||
}, {
|
||
username: 1,
|
||
telegramId: 1,
|
||
createdAt: 1
|
||
}).forEach(function(user) {
|
||
print(" - " + (user.username || user._id) + " (telegramId: " + user.telegramId + ")");
|
||
});
|
||
|
||
// ============================================
|
||
// 2. ПОСЧИТАТЬ СКОЛЬКО БЕЗ REFERRALCODE
|
||
// ============================================
|
||
// db.users.countDocuments({ referralCode: { $exists: false } })
|
||
|
||
// ============================================
|
||
// 3. ПОСМОТРЕТЬ ПРИМЕРЫ REFERRALCODE
|
||
// ============================================
|
||
print("\nПримеры referralCode в базе:\n");
|
||
db.users.find({
|
||
referralCode: { $exists: true }
|
||
}, {
|
||
username: 1,
|
||
referralCode: 1
|
||
}).limit(10).forEach(function(user) {
|
||
print(" " + (user.username || user._id) + ": " + user.referralCode);
|
||
});
|
||
|
||
// ============================================
|
||
// 4. НАЙТИ ПОЛЬЗОВАТЕЛЕЙ С REFERREDBY БЕЗ REFERRALCODE
|
||
// ============================================
|
||
print("\nПользователи с referredBy, но без referralCode:\n");
|
||
db.users.find({
|
||
referredBy: { $exists: true, $ne: null },
|
||
referralCode: { $exists: false }
|
||
}).forEach(function(user) {
|
||
print(" - " + (user.username || user._id) + " -> referredBy: " + user.referredBy);
|
||
});
|
||
|
||
// ============================================
|
||
// 5. СГЕНЕРИРОВАТЬ REFERRALCODE ДЛЯ ВСЕХ БЕЗ НЕГО
|
||
// ============================================
|
||
db.users.find({
|
||
referralCode: { $exists: false }
|
||
}).forEach(function(user) {
|
||
// Генерируем код по той же логике, что в модели
|
||
var code = "REF_" + user.telegramId.slice(-8) + Math.random().toString(36).substring(2, 6).toUpperCase();
|
||
|
||
// Проверяем уникальность
|
||
var exists = db.users.findOne({ referralCode: code });
|
||
var attempts = 0;
|
||
while (exists && attempts < 10) {
|
||
code = "REF_" + user.telegramId.slice(-8) + Math.random().toString(36).substring(2, 6).toUpperCase();
|
||
exists = db.users.findOne({ referralCode: code });
|
||
attempts++;
|
||
}
|
||
|
||
if (!exists) {
|
||
db.users.updateOne(
|
||
{ _id: user._id },
|
||
{ $set: { referralCode: code } }
|
||
);
|
||
print("✅ Сгенерирован код для " + (user.username || user._id) + ": " + code);
|
||
} else {
|
||
print("⚠️ Не удалось сгенерировать уникальный код для " + (user.username || user._id));
|
||
}
|
||
});
|
||
|
||
print("\n✅ Готово!");
|
||
|