diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiCarStatusCallback.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiCarStatusCallback.java index 531a6e1cf6..f6fd4d6810 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiCarStatusCallback.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiCarStatusCallback.java @@ -9,4 +9,6 @@ public interface ITaxiCarStatusCallback { void onCarStatusChanged(boolean inOperation,String role); void onServiceDataUpdate(long dailyTimeDuration, long dailyOrderNum); + + void onCarLoginStatusChange(boolean isLogin); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.java index 224e449833..3ee26ebd52 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.java @@ -125,7 +125,7 @@ public class TaxiLoginModel { } public void release() { - + this.iTaxiLoginCallback = null; } /** diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index 0e2c7f5ea3..160fe20f3f 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -1524,4 +1524,31 @@ public class TaxiModel { mOrderStatusCallback.onCurrentOrderStatusChanged(mCurrentOCHOrder); } } + + // 取消待服务中订单 + public void logout() { + TaxiServiceManager.getInstance().logout(mContext, + new TaxiServiceCallback() { + @Override + public void onSuccess(BaseData data) { + if (null != data && 0 == data.code) { + mCarStatusCallback.onCarLoginStatusChange(false); + } + } + + @Override + public void onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastUtils.showShort(mContext.getString(R.string.network_error_tip)); + } else { + ToastUtils.showShort(mContext.getString(R.string.request_error_tip)); + } + } + + @Override + public void onFail(int code, String msg) { + ToastUtils.showShort(code + "," + msg); + } + }); + } } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java index 0c18d76e65..156193ca60 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java @@ -312,7 +312,7 @@ interface TaxiServiceApiNew { /** - * 收车/出车状态查询 + * 获取手机验证码 * @param sn * @return */ @@ -322,7 +322,7 @@ interface TaxiServiceApiNew { Observable getPhoneCode(@Header ("appId") String appId ,@Header("ticket") String ticket,@Query("sn") String sn,@Query("phone") String phone); /** - * 订单完成 + * 通过验证码登录 * @param appId * @param ticket * @param data @@ -332,5 +332,12 @@ interface TaxiServiceApiNew { @POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/orderCompleted" ) Observable gotoLoginBycode(@Header ("appId") String appId , @Header("ticket") String ticket, @Body TaxiLoginReqBean data); + /** + * 登出接口 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @GET("/autopilot-car-hailing/car/v2/driver/taxi/serviceStatus/query") + Observable logout(@Header ("appId") String appId,@Header("ticket") String ticket, + @Query("sn") String sn); } diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java index df571a4b1e..b69e9fe0e2 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceManager.java @@ -466,9 +466,23 @@ public class TaxiServiceManager { , new TaxiLoginReqBean(phone,code,sn)) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "getPhoneCode")); + .subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode")); } + /** + * 登出 + */ + public void logout(Context context, TaxiServiceCallback callback) { + mOCHTaxiServiceApi.logout( + MoGoAiCloudClientConfig.getInstance().getServiceAppId(), + MoGoAiCloudClientConfig.getInstance().getToken(), + MoGoAiCloudClientConfig.getInstance().getSn()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(getSubscribeImpl(context, callback, "logout")); + } + + private SubscribeImpl getSubscribeImpl( Context context, TaxiServiceCallback callback, String apiName) { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiLoginPresenter.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiLoginPresenter.kt index 2d48b09176..a8ede59a35 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiLoginPresenter.kt +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiLoginPresenter.kt @@ -55,6 +55,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) : override fun onDestroy(owner: LifecycleOwner) { super.onDestroy(owner) + TaxiLoginModel.getInstance().release() countDownDisposable?.let { if (!it.isDisposed) { it.dispose() diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java index add02f86c8..dd8ed6cf4e 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiPresenter.java @@ -158,6 +158,11 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS TaxiModel.getInstance().orderCompleted(); } + // 登出 + public void logout() { + TaxiModel.getInstance().logout(); + } + @Override public void onAutopilotArriveEnd() { @@ -197,6 +202,11 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS runOnUIThread(() -> mView.onServiceDataUpdate(dailyTimeDuration,dailyOrderNum)); } + @Override + public void onCarLoginStatusChange(boolean isLogin) { + mView.showLoginDialogFragment(); + } + @Override public void onOrdersInServiceChanged(@NonNull @NotNull List inServiceList) { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java index e1f8da1bc8..8f7bc31e39 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/BaseTaxiTabFragment.java @@ -202,12 +202,7 @@ public abstract class BaseTaxiTabFragment onGoToTaxiOrders()); mSettingBtn = findViewById(R.id.module_och_taxi_setting_layout); mSettingBtn.setOnClickListener(v -> { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java index f6940363cd..dc189db017 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java @@ -5,14 +5,19 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAX import android.os.Build; import android.os.Bundle; import android.text.TextUtils; +import android.view.LayoutInflater; import android.view.View; +import android.view.ViewGroup; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; import androidx.fragment.app.FragmentTransaction; import com.mogo.commons.debug.DebugConfig; +import com.mogo.eagle.core.data.temp.EventLogout; +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.taxi.R; @@ -23,6 +28,10 @@ import com.mogo.och.taxi.model.TaxiModel; import com.mogo.och.taxi.presenter.TaxiPresenter; import com.mogo.och.taxi.utils.TPRouteDataTestUtils; +import org.greenrobot.eventbus.EventBus; +import org.greenrobot.eventbus.Subscribe; +import org.greenrobot.eventbus.ThreadMode; + import java.lang.ref.WeakReference; import java.util.List; @@ -52,6 +61,13 @@ public class TaxiFragment extends BaseTaxiTabFragment(TaxiLoginDialogFragment.newInstance()); - taxiLoginDialogFragment.get().show(getParentFragmentManager(),taxiLoginDialogFragment.get().getTag()); - } - }); + } + + @Subscribe(threadMode = ThreadMode.MAIN) + public void changeOverview(EventLogout eventLogout){ + CallerLogger.INSTANCE.d(M_TAXI + TAG,"changeOverview 开始登出成功"); + mPresenter.logout(); + } + + public void showLoginDialogFragment(){ + CallerLogger.INSTANCE.d(M_TAXI + TAG,"showLoginDialogFragment 登出成功"); + CallerHmiManager.INSTANCE.hideToolsView(); + taxiLoginDialogFragment = new WeakReference<>(TaxiLoginDialogFragment.newInstance()); + taxiLoginDialogFragment.get().show(getParentFragmentManager(),taxiLoginDialogFragment.get().getTag()); } private void testRouteInfoUpload() { diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml index 58ca3d2735..cafac2daec 100644 --- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml +++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_base_fragment.xml @@ -92,7 +92,7 @@ -