{"id":17838152,"url":"https://github.com/angryelizar/resourcebooking","last_synced_at":"2026-05-03T22:33:17.549Z","repository":{"id":257874055,"uuid":"872090702","full_name":"angryelizar/resourceBooking","owner":"angryelizar","description":"ResourceBooking API - система бронирования ресурсов (тестовое задание)","archived":false,"fork":false,"pushed_at":"2024-10-20T22:12:39.000Z","size":171,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-06-08T10:03:51.176Z","etag":null,"topics":["java","liquibase","rest-api","spring","spring-security","springboot","swagger"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/angryelizar.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-10-13T18:50:59.000Z","updated_at":"2024-10-20T22:12:42.000Z","dependencies_parsed_at":"2024-10-21T01:38:06.044Z","dependency_job_id":null,"html_url":"https://github.com/angryelizar/resourceBooking","commit_stats":null,"previous_names":["angryelizar/resourcebooking"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/angryelizar/resourceBooking","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angryelizar%2FresourceBooking","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angryelizar%2FresourceBooking/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angryelizar%2FresourceBooking/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angryelizar%2FresourceBooking/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/angryelizar","download_url":"https://codeload.github.com/angryelizar/resourceBooking/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/angryelizar%2FresourceBooking/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":274416167,"owners_count":25280900,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-10T02:00:12.551Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","liquibase","rest-api","spring","spring-security","springboot","swagger"],"created_at":"2024-10-27T20:52:28.433Z","updated_at":"2026-05-03T22:33:17.502Z","avatar_url":"https://github.com/angryelizar.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Система бронирования ресурсов\n\n## Описание проекта\n\nСистема для управления бронированием различных ресурсов, таких как переговорные комнаты, оборудование или автомобили, с интеграцией различных способов оплаты. Проект поддерживает управление ресурсами, бронирование и оплату, а также предоставляет функционал для администраторов и пользователей.\n\n### Функциональные требования:\n\n1. **Создание и управление ресурсами:**\n   - Администраторы могут добавлять, редактировать, активировать, деактивировать и удалять ресурсы.\n   - Каждый ресурс имеет уникальный идентификатор, имя, описание и статус активности.\n\n2. **Управление бронированием:**\n   - Пользователи могут бронировать ресурсы на определенное время с учетом их доступности.\n   - Система предотвращает конфликты бронирований и поддерживает оплату через различные платежные системы.\n\n3. **Интеграция оплаты:**\n   - Пользователи могут оплатить бронирование через PayPal, банковские карты и другие системы.\n   - Реализована поддержка моментальной и отложенной оплаты.\n\n4. **Управление пользователями:**\n   - Различные роли: администраторы управляют ресурсами и платежами, а пользователи бронируют и оплачивают.\n\n5. **Журналирование и логирование:**\n   - Все действия записываются в журнал через **Slf4j** от Lombok. Логи сохраняются в файл.\n\n6. **API:**\n   - REST API реализовано для всех действий, с подробной документацией через Swagger.\n\n7. **Оптимизация и производительность:**\n   - Включена поддержка пагинации для больших объемов данных.\n\n## Стек технологий:\n\n- Java 17\n- Spring Boot\n- Spring Data JPA\n- Spring Security\n- PostgreSQL\n- Lombok\n- Liquibase для миграций\n- Swagger для документации\n\n## План выполненных задач:\n\n### Миграции\n\n- Созданы и заполнены таблицы для:\n  - authorities, users, resources, bookings, payments, payment_statuses, payment_methods.\n\n### Реализация сущностей и репозиториев\n\n- Созданы модели и репозитории для:\n  - authority, user, resource, booking, payment_status, payment_method, payment.\n\n### Конфигурация\n\n- **Spring Security:** Настроен доступ к различным маршрутам в зависимости от ролей пользователей.\n- **Swagger:** Документирует каждый DTO и эндпоинт.\n- **Slf4j:** Логирование всех действий через Lombok Slf4j.\n- **GlobalExceptionHandler:** Исключения обрабатываются централизованно для каждой сущности.\n\n### Валидация данных\n\n- Все DTO, принимаемые через POST и PUT запросы, проходят валидацию на корректность.\n\n### Паттерн \"Стратегия\" для оплаты\n\n- Реализован паттерн \"Стратегия\" для работы с различными способами оплаты (банковские карты, PayPal и др.).\n\n### Функциональность\n\n- Регистрация пользователей.\n- Управление ресурсами (CRUD).\n- Бронирование ресурсов с проверкой на пересечение дат.\n- Оплата бронирований.\n- Управление платежами и статусами.\n- Пагинация для просмотра данных (брони, платежи).\n\n## Особенности проекта:\n\n- **BaseEntity** использован для моделей с общими полями.\n- **DTO на основе Record:** Использованы для передачи данных между клиентом и сервером.\n- **Оптимизация запросов:** Включена пагинация для уменьшения нагрузки на сервер при больших объемах данных.\n- **Математическая проверка пересечений бронирований:** Точное и быстрое вычисление конфликтов бронирований.\n- **Начальные данные:** Система заполняется начальными данными через Liquibase для тестирования.\n  \n### Тестовые данные:\n\n- **Администратор:**  \n  Логин: `conovalov.elizar@gmail.com`  \n  Пароль: `qwerty`\n\n- **Пользователь:**  \n  Логин: `saadanbekov@gmail.com`  \n  Пароль: `qwerty`\n\n### Запуск проекта:\n\n1. Клонируйте репозиторий.\n2. Настройте базу данных PostgreSQL.\n3. Запустите приложение через Maven/Gradle.\n4. Используйте Swagger для тестирования API.\n\n### Postman Collection:\n\nКоллекция для тестирования API доступна в проекте и может быть импортирована в Postman для демонстрации функциональности.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangryelizar%2Fresourcebooking","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fangryelizar%2Fresourcebooking","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fangryelizar%2Fresourcebooking/lists"}