添加自动计算剩余距离的逻辑、添加通过sn也可以请求未完成订单的逻辑
This commit is contained in:
@@ -6,6 +6,7 @@ import android.text.TextUtils;
|
||||
|
||||
import com.mogo.commons.data.BaseData;
|
||||
import com.mogo.commons.network.SubscribeImpl;
|
||||
import com.mogo.commons.network.Utils;
|
||||
import com.mogo.map.MogoLatLng;
|
||||
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
@@ -480,7 +481,7 @@ class MogoOCHTaxiModel {
|
||||
if ( mOCHTaxiServiceApi == null ) {
|
||||
mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create( OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN );
|
||||
}
|
||||
mOCHTaxiServiceApi.updateOrderStatus( new OCHTaxiOrderStatus( mCurrentOCHOrder.orderNo, orderStatus.getCode() ) )
|
||||
mOCHTaxiServiceApi.updateOrderStatus( new OCHTaxiOrderStatus( Utils.getSn(), mCurrentOCHOrder.orderNo, orderStatus.getCode() ) )
|
||||
.subscribeOn( Schedulers.io() )
|
||||
.observeOn( AndroidSchedulers.mainThread() )
|
||||
.subscribe( new SubscribeImpl< BaseData >( RequestOptions.create( mContext ) ) {
|
||||
@@ -522,7 +523,7 @@ class MogoOCHTaxiModel {
|
||||
if ( mOCHTaxiServiceApi == null ) {
|
||||
mOCHTaxiServiceApi = MogoApisHandler.getInstance().getApis().getNetworkApi().create( OCHTaxiServiceApi.class, HostConst.OCH_DOMAIN );
|
||||
}
|
||||
mOCHTaxiServiceApi.queryOrder( new OCHTaxiOrderStatus( orderNo, OCHOrderStatus.None.getCode() ) )
|
||||
mOCHTaxiServiceApi.queryOrder( new OCHTaxiOrderStatus( Utils.getSn(), orderNo, OCHOrderStatus.None.getCode() ) )
|
||||
.subscribeOn( Schedulers.io() )
|
||||
.observeOn( AndroidSchedulers.mainThread() )
|
||||
.subscribe( new SubscribeImpl< OCHTaxiOrderResponse2 >( RequestOptions.create( mContext ) ) {
|
||||
|
||||
@@ -29,6 +29,16 @@ class OCHTaxiOrderResponse implements Parcelable {
|
||||
// 站点
|
||||
public List< OCHTaxiStation > drivingRoutes;
|
||||
|
||||
/**
|
||||
* @param distance
|
||||
*/
|
||||
public void decreaseTravelDistance( double distance ) {
|
||||
travelDistance -= ( ( float ) distance / 1000f );
|
||||
if ( travelDistance < 0 ) {
|
||||
travelDistance = 0;
|
||||
}
|
||||
}
|
||||
|
||||
public static class OCHTaxiStation implements Parcelable {
|
||||
public String siteId;
|
||||
public String siteName;
|
||||
|
||||
@@ -5,14 +5,19 @@ public
|
||||
* @author congtaowang
|
||||
* @since 2021/1/15
|
||||
*
|
||||
* 修改网约车-出租车订单状态的数据结构
|
||||
* 修改/查询网约车-出租车订单状态的数据结构
|
||||
*/
|
||||
class OCHTaxiOrderStatus {
|
||||
|
||||
public String sn;// 不排除本地没有缓存订单号的情况
|
||||
public String orderNo;
|
||||
public int orderDispatchType;
|
||||
|
||||
public OCHTaxiOrderStatus( String orderNo, int orderDispatchType ) {
|
||||
|
||||
public OCHTaxiOrderStatus( String sn,
|
||||
String orderNo,
|
||||
int orderDispatchType ) {
|
||||
this.sn = sn;
|
||||
this.orderNo = orderNo;
|
||||
this.orderDispatchType = orderDispatchType;
|
||||
}
|
||||
|
||||
@@ -1,12 +1,14 @@
|
||||
package com.mogo.och.taxi.ui;
|
||||
|
||||
import android.location.Location;
|
||||
import android.os.Bundle;
|
||||
import android.view.View;
|
||||
import android.widget.TextView;
|
||||
import android.widget.Toast;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
|
||||
import com.mogo.map.MogoLatLng;
|
||||
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
|
||||
import com.mogo.module.common.MogoApisHandler;
|
||||
import com.mogo.och.BaseOchFragment;
|
||||
import com.mogo.och.taxi.IMogoADASAutoPilotStatusChangedListener;
|
||||
@@ -19,11 +21,11 @@ import com.mogo.och.view.SlidePanelView;
|
||||
import com.mogo.service.adas.IMogoAdasOCHCallback;
|
||||
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
|
||||
import com.mogo.service.statusmanager.StatusDescriptor;
|
||||
import com.mogo.utils.CoordinateUtils;
|
||||
import com.mogo.utils.TipToast;
|
||||
import com.mogo.utils.UiThreadHandler;
|
||||
import com.mogo.utils.logger.Logger;
|
||||
|
||||
import java.util.UUID;
|
||||
|
||||
public
|
||||
/**
|
||||
* @author congtaowang
|
||||
@@ -34,7 +36,8 @@ public
|
||||
class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > implements OCHTaxiView,
|
||||
IMogoStatusChangedListener,
|
||||
IMogoOCHTaxiArriveCallback,
|
||||
IMogoADASAutoPilotStatusChangedListener {
|
||||
IMogoADASAutoPilotStatusChangedListener,
|
||||
IMogoCarLocationChangedListener2 {
|
||||
|
||||
public static final String TAG = "OCHTaxiFragment";
|
||||
|
||||
@@ -71,7 +74,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
mDistance = findViewById( R.id.module_och_taxi_order_distance );
|
||||
|
||||
initListeners();
|
||||
initOrderStatus();
|
||||
updateOrderStatus();
|
||||
if ( MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getStatusManagerApi()
|
||||
@@ -89,6 +92,10 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
.registerStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this );
|
||||
OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( this );
|
||||
OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( this );
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getRegisterCenterApi()
|
||||
.registerCarLocationChangedListener( TAG, this );
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@@ -122,12 +129,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
}
|
||||
}
|
||||
|
||||
private void initOrderStatus() {
|
||||
if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) {
|
||||
mStartStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().startStation );
|
||||
mEndStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().endStation );
|
||||
mDistance.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().travelDistance + " km" );
|
||||
}
|
||||
/**
|
||||
* 初始化订单信息
|
||||
*/
|
||||
private void updateOrderStatus() {
|
||||
updateOrderBaseStatusInfo();
|
||||
if ( MogoOCHTaxiModel.getInstance().isArriveAtEndStation() ) {
|
||||
Logger.d( TAG, "已经达到终点" );
|
||||
slidePanelView.setVisibility( View.VISIBLE );
|
||||
@@ -144,7 +150,7 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
Logger.d( TAG, "乘客已上车" );
|
||||
if ( MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_ENABLE ) {
|
||||
slidePanelView.setVisibility( View.VISIBLE );
|
||||
} else if ( MogoApisHandler.getInstance().getApis().getAdasControllerApi().getAutopilotStatus() == IMogoAdasOCHCallback.STATUS_AUTOPILOT_DISABLE ) {
|
||||
} else {
|
||||
slidePanelView.setVisibility( View.GONE );
|
||||
}
|
||||
slidePanelView.setText( getString( R.string.module_och_taxi_arrive_at_start_station ) );
|
||||
@@ -156,23 +162,34 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新订单基本信息
|
||||
*/
|
||||
private void updateOrderBaseStatusInfo() {
|
||||
if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) {
|
||||
mStartStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().startStation );
|
||||
mEndStationName.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().endStation );
|
||||
mDistance.setText( MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().travelDistance + " km" );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArriveAtStartStation() {
|
||||
Logger.d( TAG, "通知达到起点" );
|
||||
initOrderStatus();
|
||||
updateOrderStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTheWay2StartStation() {
|
||||
Logger.d( TAG, "去往上车站点" );
|
||||
initOrderStatus();
|
||||
updateOrderStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onArriveAtEndStation() {
|
||||
Logger.d( TAG, "通知达到终点" );
|
||||
onAutopilotStatusChanged( false );
|
||||
initOrderStatus();
|
||||
updateOrderStatus();
|
||||
MogoOCHTaxiModel.getInstance().updateOCHOrderStatus( OCHOrderStatus.ArriveAtEndStation, new OCHOrderStatusCallback() {
|
||||
@Override
|
||||
public void onSuccess( Object data ) {
|
||||
@@ -190,19 +207,23 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
Logger.d( TAG, "更新状态失败2" );
|
||||
}
|
||||
} );
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getRegisterCenterApi()
|
||||
.unregisterCarLocationChangedListener( TAG, this );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onTheWay2EndStation() {
|
||||
Logger.d( TAG, "通知去往终点" );
|
||||
onAutopilotStatusChanged( true );
|
||||
initOrderStatus();
|
||||
updateOrderStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onUserArriveAtStartStation() {
|
||||
Logger.d( TAG, "通知乘客已上车" );
|
||||
initOrderStatus();
|
||||
updateOrderStatus();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -214,6 +235,10 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
.unregisterStatusChangedListener( TAG, StatusDescriptor.VR_MODE, this );
|
||||
OCHTaxiUiController.getInstance().setOCHTaxiArriveCallback( null );
|
||||
OCHTaxiUiController.getInstance().setAutoPilotStatusChangedListener( null );
|
||||
MogoApisHandler.getInstance()
|
||||
.getApis()
|
||||
.getRegisterCenterApi()
|
||||
.unregisterCarLocationChangedListener( TAG, this );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -253,11 +278,11 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
@Override
|
||||
public void onAutoPilotStatusChanged( int status, String reason ) {
|
||||
Logger.d( TAG, "status = %s, reason = %s", status, reason );
|
||||
TipToast.shortTip( reason );
|
||||
if ( status == IMogoAdasOCHCallback.STATUS_AUTOPILOT_RUNNING ) {
|
||||
resetOCHTaxiOrderAutopilotStatus();
|
||||
} else {
|
||||
initOrderStatus();
|
||||
TipToast.shortTip( reason );
|
||||
updateOrderStatus();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -284,4 +309,40 @@ class OCHTaxiFragment extends BaseOchFragment< OCHTaxiView, OCHTaxiPresenter > i
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onCarLocationChanged( MogoLatLng latLng ) {
|
||||
|
||||
}
|
||||
|
||||
private Location mLocation;
|
||||
|
||||
@Override
|
||||
public void onCarLocationChanged2( Location location ) {
|
||||
OCHTaxiUiController.getInstance().runOnUIThread( () -> {
|
||||
calculateTravelDistance( location );
|
||||
} );
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据位置信息计算当前剩余距离
|
||||
*
|
||||
* @param location
|
||||
*/
|
||||
private void calculateTravelDistance( Location location ) {
|
||||
if ( location == null ) {
|
||||
return;
|
||||
}
|
||||
if ( mLocation == null ) {
|
||||
mLocation = location;
|
||||
}
|
||||
double distance = CoordinateUtils.calculateLineDistance(
|
||||
location.getLongitude(), location.getLatitude(),
|
||||
mLocation.getLongitude(), mLocation.getLatitude()
|
||||
);
|
||||
if ( MogoOCHTaxiModel.getInstance().checkCurrentOCHOrder() ) {
|
||||
MogoOCHTaxiModel.getInstance().getCurrentOCHOrder().decreaseTravelDistance( distance );
|
||||
updateOrderBaseStatusInfo();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -102,7 +102,11 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi
|
||||
|
||||
@Override
|
||||
public void onTheWay2StartStation() {
|
||||
|
||||
runOnUIThread( () -> {
|
||||
if ( mOCHTaxiArriveCallback != null ) {
|
||||
mOCHTaxiArriveCallback.onTheWay2StartStation();
|
||||
}
|
||||
} );
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -141,7 +145,7 @@ class OCHTaxiUiController implements IMogoOCHTaxiArriveCallback, IMogoADASAutoPi
|
||||
} );
|
||||
}
|
||||
|
||||
private void runOnUIThread( Runnable executor ) {
|
||||
public void runOnUIThread( Runnable executor ) {
|
||||
if ( executor == null ) {
|
||||
return;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user