Заказ IP-детализации из личного кабинета

Материал из BiTel WiKi

Версия от 09:02, 26 мая 2014; Cromeshnic (Обсуждение | вклад)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Описание

Сразу оговоримся, что всё описанное реализовывалось в версии 5.2.

На данный момент (26.05.2014) в стандартном ЛК для модуля Inet нет возможности заказа IP-детализации по flow, в отличие от модулей Dialup и IPN. Ниже приводится решение этой проблемы самостоятельно.

Последовательность действий для внедрения:

  1. Пишем собственный обработчик для BGInetAccounting, обрабатывающий задания на создание файлов детализации из ActiveMQ
  2. Настраиваем обработчик, рестартуем аккаунтинги
  3. Пишем Web-action в динамическом коде для ЛК
  4. Настраиваем экшен, рестартуем сервер, чтобы подгрузить классы вне динамического кода
  5. Рисуем веб-интерфейс для экшена

Порядок действий при заказе детализации:

  1. Клиент в ЛК выбирает день, месяц и год и жмёт "заказать детализацию"
  2. Выдаётся сообщение "Детализация будет доступна для скачивания через несколько минут"
  3. Пока задание для этого cid не выполнится, либо не истечёт таймаут, клиенту выдаётся это сообщение и в новом запросе будет отказано
  4. Аккаунтинг создаёт файл в определённой в конфиге директории, в субдиректории договора (по cid)
  5. Файл появляется у клиента в ЛК и доступен для скачивания через веб-экшен по http
  6. Клиент может удалить любой свой созданный файл детализации из ЛК
  7. Клиент не может хранить больше X файлов детализации, для создания следующего необходимо удалить что-то. X задаётся в параметрах экшена,по-умолчанию 10

Обработчик для BGInetAccounting

Нам потребуется 4 класса, запакованные в jar-архив dsi_inet_ip_detail.jar:

  • ru.dsi.bgbilling.modules.inet.accounting.detail.event.InetClientDetailCreateEvent - событие заказа детализации, передаваемое через ActiveMQ из BGBillingServer в BGInetAccounting. Расширяет стандартный InetDetailCreateEvent.
  • ru.dsi.bgbilling.modules.inet.accounting.detail.InetClientDetailWorker - воркер в контексте BGInetAccounting, отлавливающий события заказа детализации
  • ru.dsi.bgbilling.modules.inet.accounting.detail.InetFlowClientDetailMaker - рабочий класс для собственно создания файлов детализации. Расширяет стандартный InetFlowDetailMaker, переопределяя метод сохранения файлов.
  • ru.dsi.bgbilling.modules.inet.accounting.detail.bean.ClientDetailUtils - управление таблицей, в которой храним информацию о заказах детализации из Web-статистики по cid договора

to be continued...

Архив кладём в /usr/bgbilling/lib/app/ и обновляем аккаунтинг-сервера через ./update.sh, чтобы классы были доступны как серверу, так и аккаунтингам.

Личные инструменты