Skip to content

muchnik/mobile-services

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Тестовое задание для YOTA

Задание

Сделать простую реализацию сервиса тарификации услуг сотовой связи (минут звонков и гигабайт интернета).

Сервис должен позволять:

  • Начислять пакеты минут и гигабайтов, имеющих время жизни
  • Расходовать (вычитать) минуты и гигабайты из пакета
  • Получать количество доступных минут и гигабайт
  • Активировать и блокировать сим-карты

Технологии для использования:

  • Spring Boot
  • Gradle
  • Любая встраиваемая СУБД
  • Любые другие библиотеки

Код должен быть опубликован на github и содержать всё необходимое для работы с приложением описание.

Решение должно быть реализовано в виде самостоятельного jar файла и не должно требовать каких-либо других зависимостей для запуска.

Ожидается высокая степень покрытия тестами.

Заметки

  1. При старте приложения база наполняется тестовыми данными
  2. Используется Java 8
  3. В проекте настроены две системы сборки: Maven & Gradle

Запуск

  1. Скомпилировать проект (включить Annotation Processor для Lombok и поставить Lombok Plugin для IDEA)
  2. Запустить из IDE через MobileServicesApplication#main или после сборки Gradle bootJar из build/libs с помощью java -jar mobile-services-1.0.jar
  3. Запустить из IDE через MobileServicesApplication#main или после сборки Maven package из target с помощью java -jar mobile-services-1.0.jar

Использование

  • WebUI для встроенной базы данных: http://localhost:8080/h2-console/
    • JDBC Url: jdbc:h2:mem:test
    • User: sa
    • Password:
  • API доступно на порту 8080
Метод Тело запроса Адрес Описание
GET пусто localhost:8080/api/v1/sim-card/${номер_телефона}/ Получить сим-карту (обьект)
GET пусто localhost:8080/api/v1/sim-card/${номер_телефона}/status Статус сим-карты
PUT {"value": <true/false>} localhost:8080/api/v1/sim-card/${номер_телефона}/status Обновить статус сим-карты
GET пусто localhost:8080/api/v1/sim-card/${номер_телефона}/minutes/total Количество активных минут
GET пусто localhost:8080/api/v1/sim-card/${номер_телефона}/traffic/total Количество активных гигабайт
GET пусто localhost:8080/api/v1/sim-card/${номер_телефона}/minutes/packages Количество активных пакетов минут
GET пусто localhost:8080/api/v1/sim-card/${номер_телефона}/traffic/packages Количество активных пакетов гигабайт
POST {"basePackageId": "<id базового пакета>","addition": <Количество минут>,"daysToLive": "<Время жизни (дней)>"} localhost:8080/api/v1/sim-card/${номер_телефона}/minutes Добавить пакет минут к сим-карте
POST {"basePackageId": "<id базового пакета>","addition": <Количество гигабайт>,"daysToLive": "<Время жизни (дней)>"} localhost:8080/api/v1/sim-card/${номер_телефона}/traffic Добавить пакет гигабайт к сим-карте
GET пусто localhost:8080/api/v1/packages-of-minutes/${id_пакета} Получить базовый пакет минут (обьект)
GET пусто localhost:8080/api/v1/traffic-packages/${id_пакета} Получить базовый пакет траффика (обьект)
GET пусто localhost:8080/api/v1/packages-of-minutes/ Получить все базовые пакеты минут (список)
GET пусто localhost:8080/api/v1/traffic-packages/ Получить все базовые пакеты траффика (список)
POST {"name":"<имя_пакета>","type":"<FREE_ROAMING \ FAVORITE_NUMBER>"} localhost:8080/api/v1/packages-of-minutes/ Сохранить в базу базовый пакет минут
POST {"name":"<имя_пакета>","type":"<YOUTUBE \ FREE_MESSENGER>"} localhost:8080/api/v1/traffic-packages/ Сохранить в базу базовый пакет траффика
PUT {"value": <количество минут (отр или пол)>} localhost:8080/api/v1/packages-of-minutes/details/${details_id} Расходовать или добавлять минуты в пакет минут
PUT {"value": <количество гигабайт (отр или пол)>} localhost:8080/api/v1/traffic-packages/details/${details_id} Расходовать или добавлять гигабайты в пакет траффика

Контакты

About

Test task for YOTA

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages