Skip to content

PavelRost/city

Repository files navigation

Данные проект посвящен симуляции жизни города

Описание

Проект разбит на модули (микросеврисы), которые отвечают за конкретное направление в городе. Доступны следующие модули:

  1. Auth - Модуль авторизации пользователя
  2. Bank - управление банковским счетом пользователя.
  3. Car - управление личным транспортом жителей города.
  4. Citizen - управление жителями в городе.
  5. CityStarter - для конфигурации некоторых бинов и добавления аннотации для логирования.
  6. Gateway - реализация паттерна проектирования Gateway
  7. House - управление недвижимостью жителей города.
  8. Log - логика логирования (есть реализация посредством Rest / Websocket)
  9. Orchestrator - имплементация паттерна SAGA.
  10. Passport - управление паспорта граждан.
  11. Police - для управления водительскими удостоверениями, выданными автошколой.
  12. School - автошкола, которая выдает права.

Примеры особенностей проекта

  1. При заказе автомобиля происходит проверка счета жителя в банке, а также запрос в Полицию и проверку наличия и актуальности водительских прав у жителя.
  2. Все запросы в проекте идут через модуль Gateway.
  3. Реализован паттерн SAGA посредством оркестрации.
  4. Отдельный сервис логирования, который фиксирует изменения количество каждой сущности в городе и записывает в БД.
  5. В сервисе жителей каждые (любой указанный интервал) происходит регистрация 10 новых жителей, а затем происходит сравнение с сервисом логирования. Если количество не совпало и в момент добавления был добавлен житель, но происходит удаление 10 жителей добавленных по таймеру.
  6. Каждые (любой указанный интервал) происходит розыгрыш 1 автомобиля среди всех жителей. При этом оформить предзаказ на автомобиль в этом момент нельзя, т.к. все продавцы тоже участвуют в розыгрыше.
  7. Лотерея по розыгрышу автомобилей с обманом :) Победить может только тот житель, который является работником завода.
  8. Логирование реализовано через WebSocket.
  9. Реализована аутентификация и авторизация пользователя.

Примеры технологий

  1. Spring Boot 3.1
  2. PostgreSql
  3. Spring Data Jpa
  4. Spring Retry
  5. WebSocket
  6. Kafka
  7. Docker
  8. Spring AOP
  9. Lombok
  10. Liquibase

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages