/* * @(#) BOSSBandServiceAdapter.java 1.0.0 2015年7月20日 下午1:33:33 */ package com.ycsoft.boss.remoting.aaa; import java.rmi.RemoteException; import java.util.ArrayList; import java.util.List; import org.apache.axis2.AxisFault; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.AAASubscriberServiceInfo; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.ActivateSubscriberRequestMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.CancelSubscriberServiceRequestMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.DeactivateSubscriberRequestMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.DeleteAAASubscriberRequestMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.ModifySubscriberServiceRequestMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.NewAAASubscriberRequestMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.OrderSubscriberServiceRequestMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.QuerySubscriberServiceRequestMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.QuerySubscriberServiceResult; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.QuerySubscriberServiceResultMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.ResetAAASubscriberPswdRequestMsg; import com.ycsoft.boss.remoting.aaa.AAAInterfaceBusinessMgrServiceStub.ResultHeader; /** * 该接口与华为的WS进行交互,这里并不包含所有的接口,仅包含BOSS系统需要的业务接口。 * * @see AAARequestUtils * * @author Killer */ public class BOSSBandServiceAdapter { private AAAInterfaceBusinessMgrServiceStub aaaStub; private Logger LOG = LoggerFactory.getLogger(getClass()); public BOSSBandServiceAdapter(){ try { aaaStub = new AAAInterfaceBusinessMgrServiceStub(); } catch (AxisFault e) { LOG.error("创建AAA Stub时错误,请检查网络是否通畅!", e); } } /** 开户 */ public boolean create(final NewAAASubscriberRequestMsg request)throws AAAException{ return applyTemplate(new Callback(){ @Override public ResultHeader doCallback() throws RemoteException { return aaaStub.newAAASubscriber(request).getResultHeader(); } }); } /** * 开户 * @see AAARequestUtils#buildNewAAASubscriberRequestMsg(long, String, String, Integer) */ public boolean create(long doneCode, String bandId, String pswd, Integer policyId)throws AAAException{ NewAAASubscriberRequestMsg request = AAARequestUtils.buildNewAAASubscriberRequestMsg(doneCode, bandId, pswd, policyId); return create(request); } /** 销户 */ public boolean delete(final DeleteAAASubscriberRequestMsg request)throws AAAException{ return applyTemplate(new Callback(){ @Override public ResultHeader doCallback() throws RemoteException { return aaaStub.deleteAAASubscriber(request).getResultHeader(); } }); } /** * 销户 * @see AAARequestUtils#buildDeleteAAASubscriberRequestMsg(long, String) */ public boolean delete(long doneCode, String bandId)throws AAAException{ DeleteAAASubscriberRequestMsg request = AAARequestUtils.buildDeleteAAASubscriberRequestMsg(doneCode, bandId); return delete(request); } /** 暂停用户 */ public boolean pause(final DeactivateSubscriberRequestMsg request)throws AAAException{ return applyTemplate(new Callback(){ @Override public ResultHeader doCallback() throws RemoteException { return aaaStub.deactivateSubscriber(request).getResultHeader(); } }); } /** * 暂停用户 * @see AAARequestUtils#buildDeactivateSubscriberRequestMsg(long, String) */ public boolean pause(long doneCode, String bandId)throws AAAException{ DeactivateSubscriberRequestMsg request = AAARequestUtils.buildDeactivateSubscriberRequestMsg(doneCode, bandId); return pause(request); } /** 恢复用户 */ public boolean resume(final ActivateSubscriberRequestMsg request)throws AAAException{ return applyTemplate(new Callback(){ @Override public ResultHeader doCallback() throws RemoteException { return aaaStub.activateSubscriber(request).getResultHeader(); } }); } /** * 恢复用户 * @see AAARequestUtils#buildActivateSubscriberRequestMsg(long, String) */ public boolean resume(long doneCode, String bandId)throws AAAException{ ActivateSubscriberRequestMsg request = AAARequestUtils.buildActivateSubscriberRequestMsg(doneCode, bandId); return resume(request); } /** 重置密码 */ public boolean resetPswd(final ResetAAASubscriberPswdRequestMsg request)throws AAAException{ return applyTemplate(new Callback(){ @Override public ResultHeader doCallback() throws RemoteException { return aaaStub.resetAAASubscriberPswd(request).getResultHeader(); } }); } /** * 重置密码 * @see AAARequestUtils#buildResetAAASubscriberPswdRequestMsg(long, String, String) */ public boolean resetPswd(long doneCode, String bandId, String newPswd)throws AAAException{ ResetAAASubscriberPswdRequestMsg request = AAARequestUtils.buildResetAAASubscriberPswdRequestMsg(doneCode, bandId, newPswd); return resetPswd(request); } /** 订购业务 */ public boolean orderService(final OrderSubscriberServiceRequestMsg request)throws AAAException{ return applyTemplate(new Callback(){ @Override public ResultHeader doCallback() throws RemoteException { return aaaStub.orderSubscriberService(request).getResultHeader(); } }); } /** * 订购业务 * @see AAARequestUtils#buildOrderSubscriberServiceRequestMsg(long, String, Integer, String, String) */ public boolean orderService(long doneCode, String userId, Integer policyId, String effectTime, String expireTime)throws AAAException{ OrderSubscriberServiceRequestMsg request = AAARequestUtils.buildOrderSubscriberServiceRequestMsg(doneCode, userId, policyId, effectTime, expireTime); return orderService(request); } /** 取消用户下所有订购业务 */ public boolean cancelOrder(final CancelSubscriberServiceRequestMsg request)throws AAAException{ return applyTemplate(new Callback(){ @Override public ResultHeader doCallback() throws RemoteException { return aaaStub.cancelSubscriberService(request).getResultHeader(); } }); } /** * 取消用户下所有订购业务 * @see AAARequestUtils#buildCancelSubscriberServiceRequestMsg(long, String) */ public boolean cancelOrder(long doneCode, String userId)throws AAAException{ CancelSubscriberServiceRequestMsg request = AAARequestUtils.buildCancelSubscriberServiceRequestMsg(doneCode, userId); return cancelOrder(request); } /** * 查询用户订购记录 * TODO 查询订购有问题 没有实现 * @see AAARequestUtils#buildQuerySubscriberServiceMsg(long, String) */ public List<AAASubscriberServiceInfoWrapper> querySubscriberService(long doneCode, String userId)throws AAAException{ QuerySubscriberServiceRequestMsg request = AAARequestUtils.buildQuerySubscriberServiceMsg(doneCode, userId); return querySubscriberService(request); } public List<AAASubscriberServiceInfoWrapper> querySubscriberService(QuerySubscriberServiceRequestMsg request)throws AAAException{ ResultHeader result = null; QuerySubscriberServiceResult obj = null; try { QuerySubscriberServiceResultMsg resultMsg = aaaStub.querySubscriberService(request); result = resultMsg.getResultHeader(); obj = resultMsg.getQuerySubscriberServiceResult(); } catch (RemoteException e) { throw new AAAException(e); } if(AAAResultUtils.success(result)){ List<AAASubscriberServiceInfoWrapper> aaas = new ArrayList<>( obj.getAAASubscriberServiceInfo().length); for (AAASubscriberServiceInfo a: obj.getAAASubscriberServiceInfo()) { aaas.add(new AAASubscriberServiceInfoWrapper(a)); } return aaas; }else{ throw new AAAException(result); } } /** 修改订购业务 */ public boolean modifyOrderService(final ModifySubscriberServiceRequestMsg request)throws AAAException{ return applyTemplate(new Callback(){ @Override public ResultHeader doCallback() throws RemoteException { return aaaStub.modifySubscriberService(request).getResultHeader(); } }); } /** * 修改订购业务 * @see AAARequestUtils#buildModifySubscriberServiceRequestMsg(long, String, Integer, String, String) */ public boolean modifyOrderService(long doneCode, String userId, Integer policyId, String effectTime, String expireTime)throws AAAException{ ModifySubscriberServiceRequestMsg request = AAARequestUtils.buildModifySubscriberServiceRequestMsg(doneCode, userId, policyId, effectTime, expireTime); return modifyOrderService(request); } public boolean applyTemplate(Callback callback)throws AAAException{ ResultHeader result = null; try { result = callback.doCallback(); } catch (RemoteException e) { throw new AAAException(e); } if(AAAResultUtils.success(result)){ return true; }else{ throw new AAAException(result); } } private interface Callback{ ResultHeader doCallback()throws RemoteException; } }