106 lines
4.0 KiB
Markdown
106 lines
4.0 KiB
Markdown
# VIP Функции - Документация
|
||
|
||
## Обзор
|
||
Реализованы VIP функции с проверкой премиум статуса пользователя в базе данных.
|
||
|
||
## База данных
|
||
|
||
### Новые поля в таблице users:
|
||
- `premium` (BOOLEAN) - флаг премиум статуса
|
||
- `premium_expires_at` (TIMESTAMP) - дата окончания премиум
|
||
|
||
## Логика работы
|
||
|
||
### 1. Кнопка "VIP Поиск"
|
||
- **Если premium = false**: показывает информацию о премиум и предложение купить
|
||
- **Если premium = true**: открывает VIP поиск с фильтрами
|
||
|
||
### 2. VIP Поиск включает:
|
||
|
||
#### Быстрый VIP поиск
|
||
- Только пользователи с фото
|
||
- Только онлайн пользователи
|
||
|
||
#### Расширенный поиск
|
||
- Фильтр по возрасту
|
||
- Фильтр по городу
|
||
- Фильтр по целям знакомства
|
||
- Фильтр по хобби
|
||
- Фильтр по образу жизни
|
||
|
||
#### Поиск по целям знакомства
|
||
- Серьезные отношения
|
||
- Общение и дружба
|
||
- Развлечения
|
||
- Деловые знакомства
|
||
|
||
#### Поиск по хобби
|
||
- Фильтрация по массиву хобби в профиле
|
||
|
||
## Файлы
|
||
|
||
### Новые файлы:
|
||
- `src/services/vipService.ts` - сервис для работы с VIP функциями
|
||
- `src/controllers/vipController.ts` - контроллер VIP поиска
|
||
- `src/database/migrations/add_premium_field.sql` - миграция для premium полей
|
||
|
||
### Изменённые файлы:
|
||
- `src/handlers/callbackHandlers.ts` - добавлены VIP обработчики
|
||
|
||
## Методы VipService
|
||
|
||
### checkPremiumStatus(telegramId: string)
|
||
Проверяет премиум статус пользователя, автоматически убирает истёкший премиум.
|
||
|
||
### addPremium(telegramId: string, durationDays: number)
|
||
Добавляет премиум статус на указанное количество дней.
|
||
|
||
### vipSearch(telegramId: string, filters: VipSearchFilters)
|
||
Выполняет VIP поиск с фильтрами (только для премиум пользователей).
|
||
|
||
### getPremiumFeatures()
|
||
Возвращает описание премиум возможностей.
|
||
|
||
## Методы VipController
|
||
|
||
### showVipSearch(chatId, telegramId)
|
||
Основной метод - показывает VIP поиск или информацию о премиум.
|
||
|
||
### performQuickVipSearch(chatId, telegramId)
|
||
Быстрый VIP поиск (фото + онлайн).
|
||
|
||
### showDatingGoalSearch(chatId, telegramId)
|
||
Показывает поиск по целям знакомства.
|
||
|
||
## Тестирование
|
||
|
||
### Добавить премиум пользователю:
|
||
```sql
|
||
UPDATE users SET premium = true, premium_expires_at = NOW() + INTERVAL '30 days'
|
||
WHERE telegram_id = 'YOUR_TELEGRAM_ID';
|
||
```
|
||
|
||
### Убрать премиум:
|
||
```sql
|
||
UPDATE users SET premium = false, premium_expires_at = NULL
|
||
WHERE telegram_id = 'YOUR_TELEGRAM_ID';
|
||
```
|
||
|
||
## Callback данные
|
||
|
||
- `get_vip` / `vip_search` - показать VIP поиск
|
||
- `vip_quick_search` - быстрый VIP поиск
|
||
- `vip_advanced_search` - расширенный поиск
|
||
- `vip_dating_goal_search` - поиск по целям
|
||
- `vip_goal_{goal}` - поиск по конкретной цели
|
||
- `vip_like_{telegramId}` - VIP лайк
|
||
- `vip_superlike_{telegramId}` - VIP супер-лайк
|
||
- `vip_dislike_{telegramId}` - VIP дизлайк
|
||
|
||
## Безопасность
|
||
|
||
- Все VIP функции проверяют премиум статус
|
||
- Автоматическое удаление истёкшего премиум
|
||
- Валидация всех входных данных
|
||
- Проверка существования пользователей перед операциями
|