diff --git a/app/database/crud/user.py b/app/database/crud/user.py index d6a2ff32..5c862226 100644 --- a/app/database/crud/user.py +++ b/app/database/crud/user.py @@ -124,48 +124,10 @@ async def update_user( async def add_user_balance( db: AsyncSession, user: User, - user_id: int, - amount_kopeks: int, - description: str = "Пополнение баланса" -) -> User: - try: - result = await db.execute( - select(User).where(User.id == user_id) - ) - user = result.scalar_one_or_none() - - if not user: - logger.error(f"Пользователь с ID {user_id} не найден") - return False - - old_balance = user.balance_kopeks - user.balance_kopeks += amount_kopeks - user.updated_at = datetime.utcnow() - - await db.commit() - await db.refresh(user) - - logger.info(f"💰 Баланс пользователя {user.telegram_id} изменен: {old_balance} → {user.balance_kopeks} (изменение: {amount_kopeks})") - return True - - except Exception as e: - logger.error(f"Ошибка изменения баланса пользователя {user_id}: {e}") - await db.rollback() - return False - -async def add_user_balance_by_id( - db: AsyncSession, - user_id: int, amount_kopeks: int, description: str = "Пополнение баланса" ) -> bool: - try: - user = await get_user_by_telegram_id(db, user_id) - if not user: - logger.error(f"❌ Пользователь с telegram_id {user_id} не найден") - return False - old_balance = user.balance_kopeks user.balance_kopeks += amount_kopeks user.updated_at = datetime.utcnow() @@ -175,7 +137,7 @@ async def add_user_balance_by_id( await create_transaction( db=db, - user_id=user.id, + user_id=user.id, type=TransactionType.DEPOSIT, amount_kopeks=amount_kopeks, description=description @@ -184,9 +146,32 @@ async def add_user_balance_by_id( await db.commit() await db.refresh(user) - logger.info(f"💰 Пополнен баланс пользователя {user_id}: {old_balance} -> {user.balance_kopeks} коп (+{amount_kopeks})") + logger.info(f"💰 Баланс пользователя {user.telegram_id} изменен: {old_balance} → {user.balance_kopeks} (изменение: +{amount_kopeks})") return True + except Exception as e: + logger.error(f"Ошибка изменения баланса пользователя {user.id}: {e}") + await db.rollback() + return False + +async def add_user_balance_by_id( + db: AsyncSession, + telegram_id: int, + amount_kopeks: int, + description: str = "Пополнение баланса" +) -> bool: + try: + user = await get_user_by_telegram_id(db, telegram_id) + if not user: + logger.error(f"Пользователь с telegram_id {telegram_id} не найден") + return False + + return await add_user_balance(db, user, amount_kopeks, description) + + except Exception as e: + logger.error(f"Ошибка пополнения баланса пользователя {telegram_id}: {e}") + return False + except Exception as e: logger.error(f"❌ Ошибка пополнения баланса пользователя {user_id}: {e}") await db.rollback()