forum.bitel.ru
http://forum.bitel.ru/

Web-кабинет клиента
http://forum.bitel.ru/viewtopic.php?f=66&t=9714
Страница 3 из 17

Автор:  Amir [ 29 сен 2015, 20:03 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Выложили обновление.

Автор:  Виктор [ 29 сен 2015, 20:13 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Да работает, но есть другая ошибка, при просмотре через личный кабинет Интернет --> Сессии
Код:
17:07:47,283 INFO  [ru.bitel.mybgbilling.kernel.contract.BalanceBean] (default task-17) /opt/wildfly/standalone
17:07:47,285 INFO  [ru.bitel.mybgbilling.kernel.contract.BalanceBean] (default task-17) /opt/wildfly
17:07:47,286 INFO  [ru.bitel.mybgbilling.kernel.contract.BalanceBean] (default task-17) /opt/wildfly/standalone
17:07:47,286 INFO  [ru.bitel.mybgbilling.kernel.contract.BalanceBean] (default task-17) /opt/wildfly/standalone/configuration
17:07:47,352 INFO  [stdout] (default task-17) [menu:ru.bitel.mybgbilling.kernel.menu.MenuItem@3c795b5d]
17:07:49,861 INFO  [ru.bitel.mybgbilling.kernel.navigation.NavigationBean] (default task-24) page=modules/inet/session => WEB-INF/content/modules/inet/session
17:07:49,862 INFO  [ru.bitel.mybgbilling.kernel.navigation.NavigationBean] (default task-24) moduleId=179
17:07:49,914 INFO  [ru.bitel.mybgbilling.modules.inet.InetBean] (default task-24) init
17:07:49,914 INFO  [ru.bitel.mybgbilling.modules.inet.InetBean] (default task-24) inetServTypeDirectory ru.bitel.bgbilling.kernel.directory.api.client.ClientDirectoryView@69dde81e
17:07:49,945 SEVERE [javax.enterprise.resource.webcontainer.jsf.application] (default task-24) Error Rendering View[/index.xhtml]: javax.el.ELException: /WEB-INF/content/modules/inet/session.xhtml @46,132 value="#{inetBean.inetServList}": javax.xml.ws.soap.SOAPFaultException: Проверка действий: модуль c кодом mid=179 не найден.
        at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:114)
        at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:194)
        at javax.faces.component.ComponentStateHelper.eval(ComponentStateHelper.java:182)
        at javax.faces.component.UISelectItems.getValue(UISelectItems.java:129)
        at com.sun.faces.renderkit.SelectItemsIterator.initializeItems(SelectItemsIterator.java:208)
        at com.sun.faces.renderkit.SelectItemsIterator.hasNext(SelectItemsIterator.java:135)
        at com.sun.faces.renderkit.html_basic.MenuRenderer.renderOptions(MenuRenderer.java:762)
        at com.sun.faces.renderkit.html_basic.MenuRenderer.renderSelect(MenuRenderer.java:847)
        at com.sun.faces.renderkit.html_basic.MenuRenderer.encodeEnd(MenuRenderer.java:297)
        at javax.faces.component.UIComponentBase.encodeEnd(UIComponentBase.java:919)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1863)
        at javax.faces.render.Renderer.encodeChildren(Renderer.java:176)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
        at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:114)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
        at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:114)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
        at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:114)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
        at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:114)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
        at com.sun.faces.renderkit.html_basic.HtmlBasicRenderer.encodeRecursive(HtmlBasicRenderer.java:304)
        at com.sun.faces.renderkit.html_basic.GroupRenderer.encodeChildren(GroupRenderer.java:114)
        at javax.faces.component.UIComponentBase.encodeChildren(UIComponentBase.java:889)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
        at com.sun.faces.context.PartialViewContextImpl$PhaseAwareVisitCallback.visit(PartialViewContextImpl.java:582)
        at com.sun.faces.component.visit.PartialVisitContext.invokeVisitCallback(PartialVisitContext.java:183)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1689)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
        at javax.faces.component.UIComponent.visitTree(UIComponent.java:1700)
        at com.sun.faces.context.PartialViewContextImpl.processComponents(PartialViewContextImpl.java:403)
        at com.sun.faces.context.PartialViewContextImpl.processPartial(PartialViewContextImpl.java:322)
        at javax.faces.component.UIViewRoot.encodeChildren(UIViewRoot.java:1004)
        at javax.faces.component.UIComponent.encodeAll(UIComponent.java:1856)
        at com.sun.faces.application.view.FaceletViewHandlingStrategy.renderView(FaceletViewHandlingStrategy.java:430)
        at com.sun.faces.application.view.MultiViewHandler.renderView(MultiViewHandler.java:133)
        at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
        at javax.faces.application.ViewHandlerWrapper.renderView(ViewHandlerWrapper.java:337)
        at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:120)
        at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101)
        at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:219)
        at javax.faces.webapp.FacesServlet.service(FacesServlet.java:655)
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:86)
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:62)
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36)
        at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131)
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:57)
        at io.undertow.server.handlers.DisableCacheHandler.handleRequest(DisableCacheHandler.java:33)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.security.handlers.AuthenticationConstraintHandler.handleRequest(AuthenticationConstraintHandler.java:51)
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:46)
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:64)
        at io.undertow.servlet.handlers.security.ServletSecurityConstraintHandler.handleRequest(ServletSecurityConstraintHandler.java:56)
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58)
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:72)
        at io.undertow.security.handlers.NotificationReceiverHandler.handleRequest(NotificationReceiverHandler.java:50)
        at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43)
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:282)
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:261)
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:80)
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:172)
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:199)
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:774)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: javax.el.ELException: javax.xml.ws.soap.SOAPFaultException: Проверка действий: модуль c кодом mid=179 не найден.
        at javax.el.BeanELResolver.getValue(BeanELResolver.java:368)
        at com.sun.faces.el.DemuxCompositeELResolver._getValue(DemuxCompositeELResolver.java:176)
        at com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203)
        at com.sun.el.parser.AstValue.getValue(AstValue.java:140)
        at com.sun.el.parser.AstValue.getValue(AstValue.java:204)
        at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:226)
        at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
        at org.jboss.weld.el.WeldValueExpression.getValue(WeldValueExpression.java:50)
        at com.sun.faces.facelets.el.TagValueExpression.getValue(TagValueExpression.java:109)
        ... 76 more
Caused by: javax.xml.ws.soap.SOAPFaultException: Проверка действий: модуль c кодом mid=179 не найден.
        at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:160)
        at com.sun.proxy.$Proxy111.inetServList(Unknown Source)
        at ru.bitel.mybgbilling.modules.inet.InetBean.getInetServList(InetBean.java:122)
        at ru.bitel.mybgbilling.modules.inet.InetBean$Proxy$_$$_WeldSubclass.getInetServList(Unknown Source)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:497)
        at javax.el.BeanELResolver.getValue(BeanELResolver.java:363)
        ... 84 more
Caused by: org.apache.cxf.binding.soap.SoapFault: Проверка действий: модуль c кодом mid=179 не найден.
        at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.unmarshalFault(Soap11FaultInInterceptor.java:86)
        at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:52)
        at org.apache.cxf.binding.soap.interceptor.Soap11FaultInInterceptor.handleMessage(Soap11FaultInInterceptor.java:41)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
        at org.apache.cxf.interceptor.AbstractFaultChainInitiatorObserver.onMessage(AbstractFaultChainInitiatorObserver.java:113)
        at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:140)
        at org.apache.cxf.jaxws.handler.soap.SOAPHandlerInterceptor.handleMessage(SOAPHandlerInterceptor.java:71)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
        at org.apache.cxf.endpoint.ClientImpl.onMessage(ClientImpl.java:802)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponseInternal(HTTPConduit.java:1645)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.handleResponse(HTTPConduit.java:1533)
        at org.apache.cxf.transport.http.HTTPConduit$WrappedOutputStream.close(HTTPConduit.java:1336)
        at org.apache.cxf.transport.AbstractConduit.close(AbstractConduit.java:56)
        at org.apache.cxf.transport.http.HTTPConduit.close(HTTPConduit.java:652)
        at org.apache.cxf.interceptor.MessageSenderInterceptor$MessageSenderEndingInterceptor.handleMessage(MessageSenderInterceptor.java:62)
        at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:307)
        at org.apache.cxf.endpoint.ClientImpl.doInvoke(ClientImpl.java:516)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:425)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:326)
        at org.apache.cxf.endpoint.ClientImpl.invoke(ClientImpl.java:279)
        at org.apache.cxf.frontend.ClientProxy.invokeSync(ClientProxy.java:96)
        at org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:138)
        ... 92 more

Ругается на: Проверка действий: модуль c кодом mid=179 не найден. Если это относится к BGBilling то у нас модуль с другим кодом

Автор:  Amir [ 29 сен 2015, 20:17 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Да, забыл дописать - сейчас пока меню прописывается в WEB-INF/mybgbilling-menu.groovy
И там же указан код модуля Inet для пунктов меню. Нужно поменять 179 на ваш ID и запустить mybgbilling_reload.sh

Соответственно лучше сразу создать файлики
mybgbilling-conf.groovy.orig
mybgbilling-menu.groovy.orig

Автор:  Виктор [ 29 сен 2015, 20:51 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Amir, спасибо, вопрос вот какой, возможно ли использовать адрес страницы без /my не используя nginx, где порт поменять понятно, поменять /my на что-то другое, думаю тоже не проблема, а вот убрать и чтобы не запускалась страница Welcome to WildFly 9 не нашел

Автор:  Amir [ 29 сен 2015, 21:12 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Попробуйте в WEB-INF/jboss-web.xml поменять /my на / и выполнить mybgbilling_reload.sh.

Автор:  Виктор [ 29 сен 2015, 21:25 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Получилось, в прошлый раз менял, не отработало так

Автор:  Amir [ 29 сен 2015, 21:36 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Проверьте что после перезапуска wildfly нормально отрабатывает.
Есть еще настройки за это отвечающие:
http://stackoverflow.com/questions/2410 ... cation-war
https://developer.jboss.org/thread/2429 ... 0&tstart=0

Автор:  Виктор [ 29 сен 2015, 21:47 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Перезапустил, все работает, если будут проблемы, внесу изменения как по ссылкам

Автор:  skyb [ 02 окт 2015, 17:24 ]
Заголовок сообщения:  Re: Web-кабинет клиента

а подскажите какой функционал уже есть в ЛК ? какие платежные системы прикручены?

Автор:  Amir [ 02 окт 2015, 19:38 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Ядро и Inet (не полностью).
Paymaster.

Автор:  zavndw [ 08 окт 2015, 12:02 ]
Заголовок сообщения:  Re: Web-кабинет клиента

как обновлять это приложение?

Автор:  Amir [ 08 окт 2015, 15:44 ]
Заголовок сообщения:  Re: Web-кабинет клиента

В последнем архиве вместе с wildfly в папке bin скрипты mybgbilling-*.sh

Автор:  Arcad77 [ 09 окт 2015, 01:31 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Колоссальный объем в 140М - при сервере в 70М !!!!
Интересно что туда такого весомого вложили ???

Автор:  Amir [ 19 окт 2015, 20:47 ]
Заголовок сообщения:  Re: Web-кабинет клиента

В полном архиве - сервер приложений Java EE Wildfly (JBoss).

Автор:  Jimson [ 20 окт 2015, 16:34 ]
Заголовок сообщения:  Re: Web-кабинет клиента

На сколько я понял новый ЛК является клиентом по отношению к серверу биллинга, а не его частью, с сервером он общается через webServices и для его работы выделяется отдельный login/password.
Как следствие внутренний параноик хочет знать необходимый и достаточный набор прав для этого пользователя.

Автор:  Amir [ 20 окт 2015, 20:17 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Клиентом является серверная часть нового ЛК.

Пока нет такого списка, к тому же он будет расширяться.
Можно попробовать все запретить и разрешать те действия, на которые будет ругаться в ЛК.

Скорее всего в итоге будем добавлять специального пользователя "Пользователь" с ID=-1, т.к. во многих логах userId==-1 означает что действие выполнено через ЛК.
И с какой-нибудь дополнительной проверкой IP-адреса, с которого идет запрос.

Автор:  Jimson [ 20 окт 2015, 21:20 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Amir писал(а):
И с какой-нибудь дополнительной проверкой IP-адреса, с которого идет запрос.

Так суть не в том что можно залогиниться откуда угодно, а в том что ЛК торчит наружу и не факт что там не окажется дыры. Ограничение прав добавляет немного спокойствия.

Поставил, запустил, все заработало. На первый взгляд пепелац слишком монстрообразный для ЛК, и речь не о мегабайтах, порог вхождения очень высокий. Ведь ЛК такая штука где каждый клиент (оператор) хочет реализовать что то свое, не только лого поменять. С одной стороны никто не мешает реализовать все что захочется, пишем свои классы, рисуем xhtml, с другой стороны решения среднестатистического ISP уровня wordpress, а тут j2ee/jsp в полный рост.
Выходит вы тут выступаете в роли локомотива, продвигаете enterprise решения среди ISP :)

Хочу сам немного сориентироваться, поправьте если я не прав. Вы пишите свои классы под wildfly, которые по сути являются поставщиками данных, получают их из bgb через WebServices (soap) и затем эти данные можно визуализировать - xhtml. Учитывая что многие клиенты озадачатся собственным дизайном ЛК понадобится большая гибкость этих классов и подробная документация. Вот, например, я сразу обратил внимание на "ИНТЕРНЕТ" в sidebar menu, кастомизировать это пока нельзя?
Если требуется добавить что то в ЛК, то я должен написать свои классы (покурив предварительно документацию на wildfly) и добавить их в контент. Это надо отдельный "war" делать или как то добавлять в MyBGBilling.war ?

Автор:  Amir [ 03 ноя 2015, 05:17 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Чтобы могли сильно менять внешний вид, не сильно влезая в наш код, мы прикрутили bootstrap.
В сложных случаях нужно будет менять layout.xhtml.

По поводу меню - будет возможность менять, пока не решили как.

Контент каждой странички - отдельный xhtml, например, WEB-INF/content/kernel/status.xhtml.
Классы-"поставщики данных" могут быть использованы в любом xhtml (т.е. нет привязки одна страница - один поставщик).
Но конкретно сейчас для каждой страницы есть свой класс, плюс она может использовать другие.

Можете посмотреть тот же status.xhtml из последней сборки - убрали там всё лишнее, стало близко к обычному html.
Вот StatusBean.class, с которым эта страница работает через #{statusBean. ...}
Код:
package ru.bitel.mybgbilling.kernel.contract;

import java.io.Serializable;
import java.time.LocalDate;
import java.time.ZoneId;
import java.util.Collections;
import java.util.Date;
import java.util.List;

import javax.enterprise.context.ConversationScoped;
import javax.inject.Named;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import ru.bitel.bgbilling.common.BGException;
import ru.bitel.bgbilling.kernel.contract.api.common.bean.ContractStatus;
import ru.bitel.bgbilling.kernel.contract.api.common.service.ContractStatusService;
import ru.bitel.bgbilling.kernel.contract.api.common.service.ContractStatusService.ContractStatusChangeParameters;
import ru.bitel.bgbilling.kernel.contract.status.common.bean.Status;
import ru.bitel.bgbilling.kernel.directory.api.common.Directory;
import ru.bitel.common.function.Lazy;
import ru.bitel.mybgbilling.kernel.common.AbstractConversationBean;
import ru.bitel.mybgbilling.kernel.common.inject.BGInject;
import ru.bitel.mybgbilling.kernel.common.inject.BGInjection;
import bitel.billing.common.TimeUtils;

@Named
@ConversationScoped
@BGInjection
public class StatusBean
   extends AbstractConversationBean
   implements Serializable
{
   private static final Logger logger = LoggerFactory.getLogger( StatusBean.class );

   @BGInject
   private ContractStatusService contractStatusService;

   @BGInject(type = Status.class)
   private Directory<Status> statusDirectory;

   private Lazy<List<ContractStatus>> contractStatusList;

   private Lazy<ContractStatusChangeParameters> contractStatusChangeParameters;

   private Date changeDate;

   @Override
   protected void init()
      throws BGException
   {
      super.init();

      populate();
   }

   public String getStatusTitle( int id )
      throws BGException
   {
      Status status = statusDirectory.get( id );
      if( status != null )
      {
         return status.getTitle();
      }

      return null;
   }

   public Date getChangeDate()
   {
      return changeDate;
   }

   public void setChangeDate( Date changeDate )
      throws BGException
   {
      if( changeDate != null )
      {
         final ContractStatusChangeParameters params = getContractStatusChangeParameters();

         if( params.getDate() != null )
         {
            if( TimeUtils.dateBefore( changeDate, params.getDate() ) )
            {
               changeDate = params.getDate();
            }
         }
         else if( params.getDateList() != null && params.getDateList().size() > 0 )
         {
            changeDate = params.getDateList().get( 0 );
         }
         else if( changeDate.toInstant().atZone( ZoneId.systemDefault() ).toLocalDate().compareTo( LocalDate.now() ) > 0 )
         {
            changeDate = null;
         }
      }

      this.changeDate = changeDate;
   }

   public List<ContractStatus> getContractStatusList()
      throws BGException
   {
      return contractStatusList.get();
   }

   public ContractStatusChangeParameters getContractStatusChangeParameters()
      throws BGException
   {
      return contractStatusChangeParameters.get();
   }

   public void populate()
      throws BGException
   {
      customerBean.populate();

      contractStatusList = Lazy.of( ( ) -> reverse( contractStatusService.contractStatusList( getContractId(), null ) ) );

      contractStatusChangeParameters = Lazy.of( ( ) -> contractStatusService.contractStatusChangeParametersGet( getContractId() ) );
   }

   public void changeStatus( int status, Date date, String comment )
      throws BGException
   {
      logger.debug( "changeStatus" );

      ContractStatus contractStatus = new ContractStatus();
      contractStatus.setContractId( getContractId() );
      contractStatus.setStatus( status );
      contractStatus.setDateFrom( date );
      contractStatus.setDateTo( null );
      contractStatus.setComment( comment != null ? comment : "Изменено абонентом" );

      contractStatusService.contractStatusChange( contractStatus, true );

      changeDate = null;

      populate();
   }

   public void cancelStatus( String comment )
      throws BGException
   {
      logger.debug( "cancelStatus" );

      ContractStatus contractStatus = new ContractStatus();
      contractStatus.setContractId( getContractId() );
      contractStatus.setStatus( customerBean.getContract().getStatus() );
      contractStatus.setDateFrom( new Date() );
      contractStatus.setDateTo( null );
      contractStatus.setComment( comment != null ? comment : "Изменено абонентом (отмена смены статуса)" );

      contractStatusService.contractStatusChange( contractStatus, true );

      changeDate = null;

      populate();
   }
}

Как видите, почти ничего лишнего - поля формы (с getter'ами и setter'ами) и методы, которые можно вызывать.
Чем мне нравится JSF, что там нельзя вызвать метод (ни через post, ни через javascript), если вызов не прописан в .jsf/.xhtml.
http://stackoverflow.com/questions/3710 ... st-or-some
http://stackoverflow.com/questions/9619 ... javascript
http://stackoverflow.com/questions/1105 ... t-rendered

Автор:  Dog [ 08 ноя 2015, 21:38 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Amir писал(а):
Ядро и Inet (не полностью).
Paymaster.

а есть какие то перспективы по срокам? или скорее всего это будет не в 6.2?

Автор:  Amir [ 09 ноя 2015, 19:09 ]
Заголовок сообщения:  Re: Web-кабинет клиента

По срокам, когда станет официально не бета-версией или когда будет поддерживать все модули?
Добавлять поддержку модулей будем постепенно, по запросам. Например, сейчас в очереди voiceip и helpdesk.
Не бета-версией станет, думаю, в январе. С 6.2 будет работать, но возможно не все модули будут поддерживаться.

Автор:  zavndw [ 09 ноя 2015, 20:05 ]
Заголовок сообщения:  Re: Web-кабинет клиента

так, я только подтянул до 6.2) может все будут?)

Автор:  Amir [ 09 ноя 2015, 20:41 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Прям все наши модули используете? :)

Автор:  Dog [ 09 ноя 2015, 23:48 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Amir писал(а):
По срокам, когда станет официально не бета-версией или когда будет поддерживать все модули?
...
Не бета-версией станет, думаю, в январе. С 6.2 будет работать, но возможно не все модули будут поддерживаться.

интересует поддержка моудлей rentsoft, tv. есть ли перспективы по этим модулям в 6.2 версии?

в январе это хорошо.

Автор:  Виктор [ 10 ноя 2015, 17:40 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Добрый день, Amir
В новом личном кабинете текст новости отображается не полностью в отличии от стандартного web-интерфейса пользователя, есть ли какие-нибудь ограничения на данный момент?
Из пожеланий поддержки модулей, HelpDesk, RentSoft

Автор:  Amir [ 10 ноя 2015, 18:17 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Отправьте в личку как выглядит текст новости в клиенте биллинга.

Автор:  Виктор [ 11 ноя 2015, 12:57 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Amir, отправил в личку

Автор:  zavndw [ 15 ноя 2015, 07:29 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Поставил последнюю версию.
1) Договора являющиеся суб договорами не находит :(
2) В папке bin/init.d нет юнита для systemd, хотя в образах виртуальных машин он есть :( добавьте пожалуйста
3) Поменял id модуля inet но на всех пунктах выдает ошибку NullPointerException, лог во вложении
Вложение:
wildfly.log [77.46 КБ]
Скачиваний: 572

P.S. В папке bin/service/ смотрю лежат файлы для windows, может не стоит давать такой возможности?
Цитата:
Следует учитывать, что ОС семейства Windows не являются оптимальными для запуска серверных приложений. Их применение снижает производительность дисковой подсистемы и оптимальность использования ресурсов аппаратуры. Кроме того, операционные системы данной серии менее гибко управляемы. Для запуска высоконагруженных биллинговых систем используйте ОС *NIX семейств. Ещё одним негативным фактором использования Windows является усложнение предоставления тех. поддержки по причине отсутствия полноценного shell доступа.
ОС семейства Windows НЕ РЕКОМЕНДУЮТСЯ разработчиками BGBilling для установки серверной части программы, однако хорошо подходят для запуска клиентского приложения.

Windows-prepare_for_windows

Автор:  dimOn [ 15 ноя 2015, 14:22 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Цитата:
P.S. В папке bin/service/ смотрю лежат файлы для windows, может не стоит давать такой возможности?
Тем не менее некоторая часть клиентов держит серверные приложения на винде.

Автор:  zavndw [ 15 ноя 2015, 14:23 ]
Заголовок сообщения:  Re: Web-кабинет клиента

И это не есть хорошо

Автор:  zavndw [ 19 ноя 2015, 20:08 ]
Заголовок сообщения:  Re: Web-кабинет клиента

Добавьте пожалуйста PSB и QIWI
P.S а знак $ в балансе так и задуман?

Страница 3 из 17 Часовой пояс: UTC + 5 часов [ Летнее время ]
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/