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