Update files

This commit is contained in:
glpshchn 2025-12-04 21:23:15 +03:00
parent cd7930699d
commit 7ae1b2b8d8
1 changed files with 31 additions and 5 deletions

View File

@ -174,13 +174,19 @@ const authenticate = async (req, res, next) => {
if (!user) { if (!user) {
// Обработка реферального кода из start_param // Обработка реферального кода из start_param
let referredBy = null; let referredBy = null;
if (startParam && startParam.startsWith('ref_')) { if (startParam) {
const referralCode = startParam; // Проверяем регистронезависимо (может быть ref_ или REF_)
const referrer = await User.findOne({ referralCode }); const normalizedStartParam = startParam.toLowerCase();
if (normalizedStartParam.startsWith('ref_')) {
// Ищем реферера по коду (регистронезависимо)
const referrer = await User.findOne({
referralCode: { $regex: new RegExp(`^${startParam}$`, 'i') }
});
if (referrer) { if (referrer) {
referredBy = referrer._id; referredBy = referrer._id;
} }
} }
}
user = new User({ user = new User({
telegramId: normalizedUser.id.toString(), telegramId: normalizedUser.id.toString(),
@ -195,6 +201,26 @@ const authenticate = async (req, res, next) => {
// Счетчик рефералов увеличивается только когда пользователь создаст первый пост // Счетчик рефералов увеличивается только когда пользователь создаст первый пост
// (см. routes/posts.js) // (см. routes/posts.js)
} else { } else {
// Для существующих пользователей тоже можно установить referredBy,
// если они еще не создали пост и пришли по реферальной ссылке
if (startParam && !user.referredBy) {
const normalizedStartParam = startParam.toLowerCase();
if (normalizedStartParam.startsWith('ref_')) {
const referrer = await User.findOne({
referralCode: { $regex: new RegExp(`^${startParam}$`, 'i') }
});
if (referrer) {
// Проверяем, создал ли пользователь уже посты
const Post = require('../models/Post');
const userPostsCount = await Post.countDocuments({ author: user._id });
if (userPostsCount === 0) {
// Пользователь еще не создал посты, можно установить referredBy
user.referredBy = referrer._id;
await user.save();
}
}
}
}
// Обновлять только если есть новые данные, не перезаписывать существующие пустыми значениями // Обновлять только если есть новые данные, не перезаписывать существующие пустыми значениями
if (normalizedUser.username) { if (normalizedUser.username) {
user.username = normalizedUser.username; user.username = normalizedUser.username;