forum.bitel.ru http://forum.bitel.ru/ |
|
[фичреквест] События доступа к тарифным опциям http://forum.bitel.ru/viewtopic.php?f=22&t=5574 |
Страница 1 из 1 |
Автор: | Cromeshnic [ 07 июн 2011, 11:22 ] |
Заголовок сообщения: | [фичреквест] События доступа к тарифным опциям |
Фичреквест: - Событие на выдачу списка доступных опций (тыц) - Событие "перед активацией тарифной опции" с возможностью запретить активацию и возвратить текст ошибки - Гибкое редактирование опций договора в клиенте (тыц) Первое и второе мне сейчас понадобилось для следующего: Подключать опции и менять тарифы через лк у нас могут только те клиенты, у которых заключено доп соглашение к договору, описывающее эти процедуры. Сейчас подписавшим доп. соглашение в биллинге проставляется группа тарифов и группа "Турбокнопка" на договоре, которая разрешает активировать опцию. Проблема в том, что клиент без доп соглашения заходит в раздел "Тарифные опции" и видит пустой экран. С точки зрения маркетинга же правильнее было бы показывать ему эти опции неактивными, либо активными, но при попытке подключить их клиенту бы выдавалось сообщение о необходимости заключения доп соглашения. Когда опций нет совсем, он как бы и не знает о их существовании. Если я сам смогу рулить доступом к опциям на уровне скриптов, то всё это решаемо. Плюс, можно будет давать доступ к опциям в зависимости от времени дня, баланса, наработки по определённым услугам или фазы луны ![]() Может мне написать патч? ![]() |
Автор: | Cromeshnic [ 07 июн 2011, 11:25 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
Ещё пример применения: опции с квотой по трафику/времени/наработке. Опция доступна, пока месячная квота не исчерпана. |
Автор: | skyb [ 07 июн 2011, 11:27 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
На самом деле неплохо было бы иметь доступ к опциям(активации, деактивации) со скриптов. |
Автор: | snark [ 07 июн 2011, 18:12 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
+1 к просьбе ТС |
Автор: | max [ 07 июн 2011, 23:35 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
поддерживаю |
Автор: | Dog [ 08 июн 2011, 03:10 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
+1 |
Автор: | Amir [ 17 июн 2011, 18:41 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
Цитата: - Гибкое редактирование опций договора в клиенте Речь об активации на любой период или же редактирование периода активированной опции? Первое легко сделать, для второго нужно отслеживать обновления кэшей в других серверах. |
Автор: | Cromeshnic [ 20 июн 2011, 07:23 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
Насколько я понимаю, для второго достаточно выстрелить TariffOptionChanged, чтобы обновить кэш опций сессий в радуисе: Код: BillingEventBus.publish(new TariffOptionChanged(cid));
|
Автор: | Cromeshnic [ 20 июн 2011, 13:51 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
Как-то так, например: Добавляем два события для скриптов: - GetAvailableContractTariffOptions extends LocalEvent - TariffOptionActivateEvent extends LocalEvent Код: package ru.bitel.bgbilling.kernel.tariff.option.server.bean.event; import java.util.Date; import java.util.List; import ru.bitel.bgbilling.kernel.tariff.option.common.bean.ContractTariffOption; import ru.bitel.bgbilling.kernel.tariff.option.common.bean.TariffOption; import bitel.billing.server.contract.bean.Contract; import ru.bitel.bgbilling.kernel.event.LocalEvent; public class GetAvailableContractTariffOptions extends LocalEvent { private static final long serialVersionUID = -8540903770573008054L; private Contract contract; private Date date; private List<TariffOption> availableTariffOptons; private List<ContractTariffOption> currentContractOptions; public GetAvailableContractTariffOptions(Contract contract, Date date, List<TariffOption> availableTariffOptons, List<ContractTariffOption> currentContractOptions) { super(0,contract.getId(),contract.getSuperId(),0); this.contract = contract; this.date = date; this.availableTariffOptons = availableTariffOptons; this.currentContractOptions = currentContractOptions; } public Contract getContract() { return contract; } public Date getDate() { return date; } public List<TariffOption> getAvailableTariffOptons() { return availableTariffOptons; } public void setAvailableTariffOptons(List<TariffOption> availableTariffOptons) { this.availableTariffOptons = availableTariffOptons; } public List<ContractTariffOption> getCurrentContractOptions() { return currentContractOptions; } } Код: package ru.bitel.bgbilling.kernel.tariff.option.server.bean.event; import ru.bitel.bgbilling.kernel.tariff.option.common.bean.ContractTariffOption; import bitel.billing.server.contract.bean.Charge; import ru.bitel.bgbilling.kernel.event.LocalEvent; public class TariffOptionActivateEvent extends LocalEvent { private static final long serialVersionUID = -1619381846416198092L; private String error = null; private ContractTariffOption contractOption; private Charge charge; public TariffOptionActivateEvent(int userId, int cid, ContractTariffOption contractOption, Charge charge) { super(0, cid, -1, userId); this.contractOption = contractOption; this.charge = charge; } public String getError() { return error; } public void setError(String error) { this.error = error; } public ContractTariffOption getContractOption() { return contractOption; } public void setContractOption(ContractTariffOption contractOption) { this.contractOption = contractOption; } public Charge getCharge() { return charge; } public void setCharge(Charge charge) { this.charge = charge; } } Вставляем вызовы этих событий в классы ContractTariffOptionActivateManager и TariffOptionManager: в ContractTariffOptionActivateManager, перед строкой 240 (BGBillingServer v 5.1 build 665 from 14.06.2011 11:39:55): Код: TariffOptionActivateEvent event = new TariffOptionActivateEvent(userId, cid, contractOption, charge); ru.bitel.bgbilling.kernel.event.EventProcessor.getInstance().request(event); if(event.getError()!=null){ throw new BGMessageException(event.getError()); } charge = event.getCharge(); contractOption = event.getContractOption(); if(null==contractOption){ throw new BGMessageException(); } В TariffOptionManager перед строкой 147 (BGBillingServer v 5.1 build 665 from 14.06.2011 11:39:55): Код: GetAvailableContractTariffOptions event = new GetAvailableContractTariffOptions(contract, date, result, currentContractOptions); ru.bitel.bgbilling.kernel.event.EventProcessor.getInstance().request(event); result = event.getAvailableTariffOptons(); if(null==result){ result = new ArrayList<TariffOption>(); } Потестировал эти события на тестовом сервере с подмененными классами - всё работает. Итого имеем: - Возможность модифицировать список доступных опций для договора (как в веб так и в клиенте, правда нельзя определить, откуда именно) - Возможность запретить активацию опции на договоре с указанием причины (возможна разная логика для web и различных пользователей клиента биллинга) - Возможность модифицировать опцию договора перед активацией (менять режим активации, даты...) - Возможность задавать/изменять расход при активации опции |
Автор: | Cromeshnic [ 20 июн 2011, 13:52 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
Краудсорсинг, ага ![]() |
Автор: | Amir [ 20 июн 2011, 14:35 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
В 5.2 - нет, там уже нет BillingEventBus. Там через mq/EventProcessor. И по данным события не просто сбрасывает кэш, а обновляет его. |
Автор: | Amir [ 20 июн 2011, 14:38 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
Это уже сделали в 5.2 (кроме setCharge/getCharge, тоже надо бы добавить) ![]() Осталось только редактирование активированной опции и дополнительные режимы активации. |
Автор: | Cromeshnic [ 20 июн 2011, 17:17 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
Круто, а в 5.1 можно? |
Автор: | skyb [ 20 июн 2011, 17:37 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
Cromeshnic писал(а): Круто, а в 5.1 можно? ![]() |
Автор: | Amir [ 20 июн 2011, 20:00 ] |
Заголовок сообщения: | Re: [фичреквест] События доступа к тарифным опциям |
К сожалению, нет ![]() Т.к. код 5.2 уже сильно отличается от 5.1 - недавно делали платную доработку в модуле карточек - замучались патчить на 5.1. |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |