Заказ IP-детализации из личного кабинета
Материал из BiTel WiKi
Версия от 09:02, 26 мая 2014; Cromeshnic (Обсуждение | вклад)
Описание
Сразу оговоримся, что всё описанное реализовывалось в версии 5.2.
На данный момент (26.05.2014) в стандартном ЛК для модуля Inet нет возможности заказа IP-детализации по flow, в отличие от модулей Dialup и IPN. Ниже приводится решение этой проблемы самостоятельно.
Последовательность действий для внедрения:
- Пишем собственный обработчик для BGInetAccounting, обрабатывающий задания на создание файлов детализации из ActiveMQ
- Настраиваем обработчик, рестартуем аккаунтинги
- Пишем Web-action в динамическом коде для ЛК
- Настраиваем экшен, рестартуем сервер, чтобы подгрузить классы вне динамического кода
- Рисуем веб-интерфейс для экшена
Порядок действий при заказе детализации:
- Клиент в ЛК выбирает день, месяц и год и жмёт "заказать детализацию"
- Выдаётся сообщение "Детализация будет доступна для скачивания через несколько минут"
- Пока задание для этого cid не выполнится, либо не истечёт таймаут, клиенту выдаётся это сообщение и в новом запросе будет отказано
- Аккаунтинг создаёт файл в определённой в конфиге директории, в субдиректории договора (по cid)
- Файл появляется у клиента в ЛК и доступен для скачивания через веб-экшен по http
- Клиент может удалить любой свой созданный файл детализации из ЛК
- Клиент не может хранить больше 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, чтобы классы были доступны как серверу, так и аккаунтингам.