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 3c8722af68..72f3883b6e 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 @@ -123,6 +123,9 @@ class MogoOCHTaxiModel { } mRetryCounter = 0; queryOldOrder2RestoreOrderStatus( mCurrentOCHOrder.orderNo ); + } else { + // 解决本地没有缓存订单号的问题 + queryOldOrder2RestoreOrderStatus( null ); } } @@ -142,7 +145,7 @@ class MogoOCHTaxiModel { queryOCHOrderStatus( orderNo, new OCHOrderStatusCallback< OCHTaxiOrderResponse2 >() { @Override public void onSuccess( OCHTaxiOrderResponse2 data ) { - if ( data == null && data.result != null ) { + if ( data == null || data.result == null ) { clearCurrentOCHOrder(); return; } @@ -208,6 +211,9 @@ class MogoOCHTaxiModel { } private void convertCurrentOrder( OCHTaxiOrderResponse2 data ) { + if ( mCurrentOCHOrder == null ) { + mCurrentOCHOrder = new OCHTaxiOrderResponse(); + } mCurrentOCHOrder.orderNo = data.result.orderNo; mCurrentOCHOrder.orderDispatchType = data.result.orderDispatchType; mCurrentOCHOrder.endStation = data.result.endStation; @@ -517,9 +523,6 @@ class MogoOCHTaxiModel { * @param orderNo 订单号 */ public void queryOCHOrderStatus( String orderNo, OCHOrderStatusCallback< OCHTaxiOrderResponse2 > callback ) { - if ( mCurrentOCHOrder == null ) { - return; - } if ( mOCHTaxiServiceApi == null ) { mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create( OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN ); } 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 4a60bee679..e1b2568e92 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 @@ -169,7 +169,13 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) { mStartStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().startStation ); mEndStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().endStation ); - mDistance.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().travelDistance + " km" ); + double distance = MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().travelDistance; + if ( distance * 1000 >= 1000 ) { + mDistance.setText( String.format( "%.1f km", distance ) ); + } else { + mDistance.setText( ( ( int ) ( distance * 1000 ) ) + " m" ); + } + } } @@ -239,6 +245,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i .getApis() .getRegisterCenterApi() .unregisterCarLocationChangedListener( TAG, this ); + mLocation = null; } @Override @@ -333,6 +340,9 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i if ( location == null ) { return; } + if ( !MogoOCHTaxiModel.getInstance().isOnTheWay2EndStation() ) { + return; + } if ( mLocation == null ) { mLocation = location; } @@ -344,5 +354,6 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().decreaseTravelDistance( distance ); updateOrderBaseStatusInfo(); } + mLocation = location; } }