diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java index 1ded643d76..77d1f26193 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/MogoOCHTaxiModel.java @@ -17,6 +17,7 @@ import com.mogo.och.taxi.ui.OCHTaxiUiController; import com.mogo.service.adas.IMogoAdasOCHCallback; import com.mogo.service.adas.RemoteControlAutoPilotParameters; import com.mogo.service.adas.entity.AdasOCHData; +import com.mogo.service.connection.IMogoLifecycleListener; import com.mogo.service.connection.IMogoOnMessageListener; import com.mogo.service.intent.IMogoIntentListener; import com.mogo.utils.NetworkUtils; @@ -78,6 +79,7 @@ class MogoOCHTaxiModel { private Context mContext; private OCHTaxiOrderResponse mCurrentOCHOrder; private OCHArriveNotifyCallback mNotifyCallback; + private OCHSocketLifeCycleLisnter mSocketLifeCycleLisnter; private IMogoCarLocationChangedListener2 mCarLocationChangedListener2; /** * 是否达到起始站点 @@ -125,6 +127,10 @@ class MogoOCHTaxiModel { .getApis() .getSocketManagerApi( context ) .registerOnMessageListener( 401019, mOrderStatusMsgListener = new OrderStatusMsgListener() ); + MogoApisHandler.getInstance() + .getApis() + .getSocketManagerApi(context) + .registerLifecycleListener(10010,mSocketLifeCycleLisnter = new OCHSocketLifeCycleLisnter()); MogoApisHandler.getInstance() .getApis() .getAdasControllerApi() @@ -153,13 +159,6 @@ class MogoOCHTaxiModel { mOCHRHCarstatus = data.data.status == 1 ? 1:0; - if (mOCHRHCarstatus == 1){ - timeLoop(); - }else { - if (mDisposable != null ){ - mDisposable.dispose(); - } - } //更新view OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus==1); //刷新数据 @@ -193,40 +192,9 @@ class MogoOCHTaxiModel { private void restoreOrderInfo() { Logger.d( TAG, "重新查询订单状态" ); mRetryCounter = 0; -// if ( mCurrentOCHOrder == null ) { -// // 订单恢复 -// String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER ); -// Logger.d(TAG,"restoreOrderInfo:"+orderInfo); -// if ( !TextUtils.isEmpty( orderInfo ) ) { -// mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class ); -// } -// } -// query2RestoreOrderStatus(mCurrentOCHOrder == null ? null : mCurrentOCHOrder.orderNo); query2RestoreOrderStatus(null); } -// private void restoreOrderInfo_() { -// Logger.d( TAG, "重新查询订单状态" ); -// mRetryCounter = 0; -// if ( mCurrentOCHOrder == null ) { -// // 订单恢复 -// String orderInfo = SharedPrefsMgr.getInstance( mContext ).getString( SP_KEY_OCH_TAXI_ORDER ); -// if ( !TextUtils.isEmpty( orderInfo ) ) { -// mCurrentOCHOrder = GsonUtil.objectFromJson( orderInfo, OCHTaxiOrderResponse.class ); -// if ( mCurrentOCHOrder == null ) { -// // 解决本地没有缓存订单号的问题 -// query2RestoreOrderStatus( null ); -// } else { -// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); -// } -// } else { -// // 解决本地没有缓存订单号的问题 -// query2RestoreOrderStatus( null ); -// } -// } else { -// query2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); -// } -// } /** * 查询订单状态,来恢复旧订单(因crash导致应用重启、断网没收到推送等)状态 *
@@ -320,6 +288,58 @@ class MogoOCHTaxiModel {
} );
}
+ /**
+ * 用于长连接
+ * @param orderNo
+ */
+ private void querryOrderStatusForMakeUp( String orderNo ) {
+ Logger.e(TAG,"querryOrderStatusForMakeUp:"+orderNo);
+ queryOCHOrderStatus( orderNo, new OCHOrderStatusCallback< OCHTaxiOrderResponse2 >() {
+ @Override
+ public void onSuccess( OCHTaxiOrderResponse2 data ) {
+ Logger.d( TAG, "querryOrderStatusForMakeUp:"+ data.toString());
+ if ( data == null || data.data == null) {
+ Logger.d( TAG, "订单已取消或已完成" );
+ clearCurrentOCHOrder();
+ OCHTaxiUiController.getInstance().onOrderStatusChanged(OCHOrderStatus.None.getCode());
+ return;
+ }
+ convertCurrentOrder( data );
+ OCHOrderStatus status = OCHOrderStatus.valueOf( data.data.orderDispatchType );
+ switch ( status ) {
+ case JourneyCompleted:
+ TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_completed ) );
+ OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType);
+ clearCurrentOCHOrder();
+ break;
+ case Cancel:
+ TipToast.shortTip( mContext.getString( R.string.module_och_taxi_order_cancel ) );
+ OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType);
+ clearCurrentOCHOrder();
+ break;
+ case OnTheWayToStartStation:
+ default:
+ mIsArriveAtStartStation = false;
+ mIsArriveAtEndStation = false;
+ mIsOnTheWay2EndStation = false;
+ OCHTaxiUiController.getInstance().onOrderStatusChanged(data.data.orderDispatchType);
+ mOrderMsgListener.onMsgReceived( mCurrentOCHOrder );
+ break;
+ }
+ }
+
+ @Override
+ public void onError() {
+
+ }
+
+ @Override
+ public void onFail() {
+ Logger.w( TAG, "查询订单失败" );
+ }
+ } );
+ }
+
/**
* 将查询到的订单转换成推送的订单数据,目前两者数据结构不一样
*
@@ -405,8 +425,6 @@ class MogoOCHTaxiModel {
super.onSuccess(o);
Logger.d(TAG,"OCHCarStatusResponse:"+o.data.status);
mOCHRHCarstatus = o.data.status;
-// mIsWork = mOCHRHCarstatus.status == 1;
-// mOCHRHCarstatus.status = status;
OCHTaxiUiController.getInstance().onOperationChanged(mOCHRHCarstatus == 1);
updateData(mOCHRHCarstatus);
Logger.d(TAG,"changeCarStatus:"+status);
@@ -525,14 +543,6 @@ class MogoOCHTaxiModel {
return mIsArriveAtEndStation;
}
-// /**
-// * 用户是否达到上车站点
-// *
-// * @return
-// */
-// public boolean isUserArriveAtStartStation() {
-// return mIsUserArriveAtStartStation;
-// }
/**
* 设置去往终点状态
@@ -583,7 +593,6 @@ class MogoOCHTaxiModel {
if ( !isArriveAtStartStation() ) {
registerCarLocationListener();
}
-// OCHTaxiUiController.getInstance().addFragment();
OCHTaxiUiController.getInstance().onOrderStatusChanged(mCurrentOCHOrder.orderDispatchType);
}
}
@@ -624,6 +633,13 @@ class MogoOCHTaxiModel {
.unregisterCarLocationChangedListener( TAG, mCarLocationChangedListener2 );
}
+ public void unregisterSocketListener(){
+ MogoApisHandler.getInstance()
+ .getApis()
+ .getSocketManagerApi(mContext)
+ .unregisterLifecycleListener(10010);
+ }
+
/**
* 后端长链推送通知订单状态被改变
*/
@@ -648,12 +664,10 @@ class MogoOCHTaxiModel {
switch ( status ) {
case Cancel:
clearCurrentOCHOrder();
-// OCHTaxiUiController.getInstance().removeFragment();
OCHTaxiUiController.getInstance().onOrderStatusChanged(status.getCode());
break;
case UserArriveAtStartStation:
mIsArriveAtStartStation = true;
-// mIsUserArriveAtStartStation = true;
OCHTaxiUiController.getInstance().onUserArriveAtStartStation();
break;
default:
@@ -663,6 +677,38 @@ class MogoOCHTaxiModel {
}
}
+ private class OCHSocketLifeCycleLisnter implements IMogoLifecycleListener {
+
+ @Override
+ public void onConnectFailure() {
+ Logger.e(TAG,"socket onConnectFailure");
+ }
+
+ @Override
+ public void onConnectSuccess() {
+ Logger.e(TAG,"socket onConnectSuccess");
+ stopSocketMakeUp();
+ }
+
+ @Override
+ public void onConnectLost() {
+ Logger.e(TAG,"socket onConnectLost");
+ startSocketMakeUp();
+ }
+ }
+
+ public void startSocketMakeUp(){
+ if (mOCHRHCarstatus == 1){
+ timeLoop();
+ }
+ }
+
+ public void stopSocketMakeUp(){
+ if (mDisposable != null){
+ mDisposable.dispose();
+ }
+ }
+
/**
* 自动驾驶本地通知订单到站
*/
@@ -853,7 +899,7 @@ class MogoOCHTaxiModel {
}
}
- private static final int PERIOD = 3 * 1000;
+ private static final int PERIOD = 1 * 1000;
private static final int DELAY = 100;
private Disposable mDisposable;
/**
@@ -864,6 +910,6 @@ class MogoOCHTaxiModel {
.map((aLong -> aLong + 1))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
- .subscribe(aLong -> query2RestoreOrderStatus(null));
+ .subscribe(aLong -> querryOrderStatusForMakeUp(null));
}
}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
index 34dea5c9c6..b7e177fb3f 100644
--- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/OCHTaxiFragment.java
@@ -232,7 +232,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
@Override
public void onSuccess( Object data ) {
Logger.d( TAG, "更新状态成功" );
-// onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode());
+ onOrderStatusChanged(OCHOrderStatus.ArriveAtEndStation.getCode());
}
@Override
@@ -279,6 +279,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
.getRegisterCenterApi()
.unregisterCarLocationChangedListener( TAG, this );
MogoOCHTaxiModel.getInstance().unregisterCarLocationListener();
+ MogoOCHTaxiModel.getInstance().unregisterSocketListener();
mLocation = null;
}
@@ -296,7 +297,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
Logger.d( TAG, "更新状态成功" );
MogoOCHTaxiModel.getInstance().clearCurrentOCHOrder();
MogoOCHTaxiModel.getInstance().cancelAutopilot();
-// OCHTaxiUiController.getInstance().onOrderStatusChanged(0);
+ OCHTaxiUiController.getInstance().onOrderStatusChanged(0);
}
@Override
@@ -336,7 +337,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
@Override
public void onSuccess( Object data ) {
Logger.d( TAG, "更新状态成功" );
-// onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode());
+ onOrderStatusChanged(OCHOrderStatus.OnTheWayToEndStation.getCode());
}
@Override
diff --git a/build.gradle b/build.gradle
index eae2a8b0ee..7f4a78dd55 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,13 +4,13 @@ apply from: "javadoc.gradle"
buildscript {
repositories {
- maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
+ maven { url 'https://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'https://maven.aliyun.com/repository/public' }
maven { url 'https://maven.aliyun.com/repository/google' }
maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }
maven { url 'https://maven.aliyun.com/repository/jcenter' }
- maven { url 'http://nexus.zhidaoauto.com/repository/maven-releases/' }
- maven { url 'http://nexus.zhidaoauto.com/repository/maven-public/' }
+ maven { url 'https://nexus.zhidaoauto.com/repository/maven-releases/' }
+ maven { url 'https://nexus.zhidaoauto.com/repository/maven-public/' }
google()
}
dependencies {
diff --git a/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
index 8ed63e49e4..96c6d75427 100644
--- a/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
+++ b/foudations/mogo-aicloud-services-apk/src/main/java/com/mogo/aicloud/services/socket/MogoAiCloudSocketManager.java
@@ -8,11 +8,13 @@ import com.mogo.cloud.socket.IMogoCloudSocketMsgAckListener;
import com.mogo.cloud.socket.IMogoCloudSocketOnMessageListener;
import com.mogo.cloud.socket.SocketManager;
import com.mogo.cloud.socket.entity.MsgBody;
+import com.mogo.service.connection.IMogoLifecycleListener;
import com.mogo.service.connection.IMogoMsgAckListener;
import com.mogo.service.connection.IMogoOnMessageListener;
import com.mogo.service.connection.IMogoSocketManager;
import com.mogo.utils.logger.Logger;
import com.zhidao.ptech.connsvr.commom.protocol.MogoCommon;
+import com.zhidao.socket.ConnectionLifecycleListener;
import java.util.ArrayList;
import java.util.List;
@@ -26,7 +28,7 @@ import java.util.concurrent.ConcurrentHashMap;
* 长链实现:基于 netty
*/
@Keep
-public class MogoAiCloudSocketManager implements IMogoSocketManager {
+public class MogoAiCloudSocketManager extends ConnectionLifecycleListener implements IMogoSocketManager {
private static final String TAG = "MogoAiCloudSocketManager-apk";
@@ -54,6 +56,7 @@ public class MogoAiCloudSocketManager implements IMogoSocketManager {
* key - msgType
*/
private final Map