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✅ Готово!");
|
|||
|
|
|