Приложение для розыгрыша призов
- Авторизация максимально простая
- Пароли хранятся в незащищенном виде
- Middleware в стандартном виде не дают доступа к параметрам uri, поэтому проверка доступности в хендлерах
- Нет логирования
- На тестах я здался :)
- Создать
.envфайл с локальными переменными, за основу можно взять.env.dist - Запустить команду
docker-compose up -d - Запустить
docker exec igame-app composer install - Запуск нагрузочного тестирования
ab -n 10000 -c 150 -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VySWQiOjF9.-aZ-fmWj6R_sG58mKbGaDiUijHH26sOupSsajQ7q548' -m POST http://localhost:8090/v1/game/draws/1/prizes - Запуск команды по отправке денег
docker exec -it igame-app apps/igame/bin/console count, гдеcountколичество обрабатываемых записей за раз - Url для подключения к базе
jdbc:mysql://localhost:3306/igame
- Доступные роуты:
POST /v1/oauth/authorize - получение роута по имени и паролю, параметры {"username": "user1", "password": "pass1"} GET /v1/game/players - получение информации игрока GET /v1/game/draws - получение доступных розыгрышей игрока POST /v1/game/draws/{id}/prizes - получить приз в рамках розыгрыша, если есть доступные попытки GET /v1/game/draws/{id}/prizes - призы в рамках одного розыгрыша PATCH v1/game/prizes/{type}/{id} - обновление статуса приза, type бывает трех видов (money, object, points), тело запроса {"status": "{status}"}, статус бывает двух типов: replaced - замена на очки и declined - отказ - Структура проекта:
iGame |-- apps - driving adapters |-- src |--IGame - domen |-- etc - config - Схема бд, сам файл с начальными данными в папке /etc/database

- Основная логика находится в классах PrizeCreator и PrizeStatusChanger