Пишу тут, потому что в HD неудобно простыни текста выкладывать со скринами.
Из HD сюда будет вести обращение.Доброго времени суток господа уважаемые разработчики.
Есть несколько проблем в модуле TV, которые прямо не дают новый год спокойно встретить.
Посодействуйте, пожалуйста.
Код:
Сервер: 8.0.1125 / 23.12.2019 11:06:50
os: Linux; java: Java HotSpot(TM) 64-Bit Server VM, v.1.8.0_221
tv: 8.0.247 / 20.12.2019 04:12:57
1) Прекращение действия аккаунта по периоду.Вчера (23.12.2019) завёл аккаунт от 23.12.2019. Закрыл его сразу же этим же числом.
Скрин от сегодня (24.12.2019)как это выглядит сегодня.
Теоретически должна отработать задача "Активация/деактивация аккаунтов по периоду" и заблокировать такой аккаунт.
Сегодня (24.12.2019) проверяю, но этого (блокировки) не произошло. На текущий момент на портале это выглядит так.
Предположительно это из-за того, что в
ru.bitel.bgbilling.modules.tv.task.TvAccountPeriodTask для удаления аккаунта используется
Код:
ep.publish((Event)new OmTvAccountStateModifyEvent(this.moduleId, 0, tvAccount, (short)(-1), 0));
Который в лог ругается
Код:
OmTvAccountStateModifyEvent - DeviceState DELETED in OmTvAccountStateModifyEvent!
А вот если ручками я закрываю какой-нибудь сервис вчерашним числом - там бросается
OmTvAccountModifyEvent.
2) При добавлении аккаунта будущим числом - NPEserver.errror.logПредполагаю, что проблема в ru.bitel.bgbilling.modules.tv.api.server.service.TvAccountServiceImpl в методе publishEvent.
Идёт условие в результате которого newTvAccount заведённый будущим числом становится null
Код:
if (newTvAccount != null && newDeviceState == -1) {
newTvAccount = null;
}
И в дальнейшем на null не проверяется и просто пуляется событие OmTvAccountModifyEvent.
3) Добавление аккаунта с одинаковым логиномПри добавлении аккаунта будущим числом, с таким же логином который действует на текущий момент (но будет закрыт ранее, чем начнёт действовать новый аккаунт) - выходит ошибка "логин уже используется".
https://youtu.be/yTf9FJ4iHYUПредполагаю, что проблема в ru.bitel.bgbilling.modules.tv.api.server.service.TvAccountServiceImpl.
Условие
Код:
if (s.getDeviceState() == -1 && !TimeUtils.checkDateIntervalsIntersection(tvAccount.getDateFrom(), tvAccount.getDateTo(), s.getDateFrom(), s.getDateTo()))
для аккаунтов заведённых будущим числом всегда будет false из-за выражения s.getDeviceState() == -1.