Skip to content

Strannik-37/NexignBootcamp

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Описание проекта

Ролевое веб-приложение имеющее разные узлы (микросервисы) нацеленное на тарификацию пользователей, получения отчетов выполнения тарификации, добавления пользователей, пополнение счета, изменения тарифа.

Запуск

При запуске команды docker compose up берется самая актуальная версия данного сервиса. Это происходит из-за сборки и выгрузки всех собранных модулей в Docker Hub при каждом commit-е, благодаря настроенному CI/CD в Github Actions.

Образы в Docker Hub

Тестовые данные для сервиса

Учетные записи

`Abonent`
username - acargenven4z
password - acargenven4z

`Admin`
username - mherrffero71
password - mherrffero71
Для входа в СУБД `PostgreSQL`
username - postgres
password - postgres
data base - postgres
Для входа в СУБД `MongoDB`
username - alibaba
username - alibaba
db - test

OpenApi Документация

Использованные технологии

СУБД:

  • PostgreSQL для хранения инф-ии об абонентах оператора Ромашка, тарифах (задание со звехдочкой) и пользовтелей сервиса (для авторизации)
  • MongoDB для хранения отчетов в виде JSON файлов

Брокер сообщений:

  • Artemis (activeMq) для отправки нотификаций на неоюходимые сервисы для синхронизации кэшей

Фреймворки:

Spring boot, swagger UI doc

Объяснение использованных подходов

  • Было решено сделать БД с тарифами, при помощи параметров:
    /* Фиксированные минуты для оплаты (.. минут за 100 руб) */
    private Integer fixedMinutes;

    /* Плата за фиксированное время (300 минут за .. руб или 100 минут по .. руб/минута) */
    private Float fixedPrice;

    /*
    Плата за минуту по умолчанию или после истечения фиксированного срока
    (Каждая последующая минута - 1 руб)
    */
    private Float minutePrice;

    /* Является ли входящий звонок бесплатным */
    private Boolean isIncomingFree;

    /* Плата за минуту по фиксированной ставке (первые .. минут по 0,5 р/мин)  */
    private Float fixedMinutePrice;

    /* Плата по определенному тарифу после истечения фиксированного срока */
    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private Tariff nextTariffAfterFixedMinutes;

    /* Тариф для пользователей других операторов */
    @OneToOne(fetch = FetchType.EAGER, cascade = CascadeType.ALL)
    private Tariff otherOperatorTariff;

Модуль hrs - где происходит тарификация

Модуль data - так как в разных модулях нужен был доступ к одим и тем же СУБД, то было принято решение выделить общую логику в данный модуль

Модуль brt - где происходит валидация cdr файла и выдается файл cdr+

Модуль crm - сервис на котором проиходит авторизация и который выступает в роли API gateway

Модуль cdr - сервис на котором генерируется cdr файл

About

Web application for abonents billing

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 99.4%
  • Dockerfile 0.6%