fix: использование AccountService вместо UserService для поиска владельцев счетов

Проблема:
- UserService.get_user_by_account() искал в User.account_number (старое поле)
- Новая система хранит счета в отдельной таблице Account

Решение:
- Заменен на AccountService.get_account_owner() в обеих функциях
- add_participants_by_accounts_bulk()
- remove_participants_by_accounts_bulk()
- Теперь правильно находит владельцев через таблицу Account
- Улучшены сообщения об ошибках с указанием номера карты
This commit is contained in:
2025-11-17 08:45:47 +09:00
parent 27db838b32
commit 7b3f459b80
2 changed files with 13 additions and 9 deletions

View File

@@ -571,13 +571,15 @@ class ParticipationService:
formatted_account = format_account_number(account_number)
if not formatted_account:
results["invalid_accounts"].append(account_input)
results["errors"].append(f"Неверный формат счета: {account_number}")
results["errors"].append(f"Неверный формат счета: {account_input}")
continue
# Ищем пользователя по номеру счёта
user = await UserService.get_user_by_account(session, formatted_account)
# Ищем владельца счёта через таблицу Account
from ..core.registration_services import AccountService
user = await AccountService.get_account_owner(session, formatted_account)
if not user:
results["errors"].append(f"Пользователь с счётом {formatted_account} не найден")
card_info = f" (карта: {card_number})" if card_number else ""
results["errors"].append(f"Пользователь с счётом {formatted_account}{card_info} не найден")
continue
# Пробуем добавить в розыгрыш
@@ -634,14 +636,16 @@ class ParticipationService:
formatted_account = format_account_number(account_number)
if not formatted_account:
results["invalid_accounts"].append(account_input)
results["errors"].append(f"Неверный формат счета: {account_number}")
results["errors"].append(f"Неверный формат счета: {account_input}")
continue
# Ищем пользователя по номеру счёта
user = await UserService.get_user_by_account(session, formatted_account)
# Ищем владельца счёта через таблицу Account
from ..core.registration_services import AccountService
user = await AccountService.get_account_owner(session, formatted_account)
if not user:
card_info = f" (карта: {card_number})" if card_number else ""
results["not_found"] += 1
results["details"].append(f"Не найден: {formatted_account}")
results["details"].append(f"Не найден: {formatted_account}{card_info}")
continue
# Пробуем удалить из розыгрыша