From bf3f5e340bc34e3cd5a069aea7c7527547999d87 Mon Sep 17 00:00:00 2001 From: yangyakun Date: Wed, 24 Apr 2024 21:31:31 +0800 Subject: [PATCH] =?UTF-8?q?[6.4.0]=20[=E7=99=BB=E5=BD=95fragment=20?= =?UTF-8?q?=E5=86=85=E5=AD=98=E6=B3=84=E6=BC=8F=E3=80=81=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E5=89=8D=E5=85=88=E8=B5=B0=E4=B8=80=E9=81=8D=E9=80=9A=E7=94=A8?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3]?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mogo/och/bus/presenter/BusPresenter.java | 7 +- .../charter/presenter/DriverM1Presenter.kt | 3 +- .../com/mogo/och/biz/login/LoginProvider.kt | 24 ++- .../login/callback/ITaxiLoginCallback.java | 2 + .../mogo/och/biz/login/model/LoginModel.kt | 151 +++++++++++++++++- .../login/model/LoginStatusDefaultModel.kt | 51 ------ .../och/biz/login/model/LoginStatusModel.java | 138 ---------------- .../och/biz/login/presenter/LoginPresenter.kt | 31 +++- .../mogo/och/biz/login/ui/LoginFragment.kt | 88 +++++----- .../module/biz/login/LoginStatusManager.kt | 6 + .../module/biz/provider/CommonService.kt | 2 + .../mogo/och/facade/route/FacadeProvider.kt | 2 + .../mogo/och/shuttle/ShuttleDriverProvider.kt | 12 +- .../och/shuttle/presenter/BusPresenter.java | 7 +- .../java/com/mogo/commons/mvp/Presenter.java | 1 + 15 files changed, 273 insertions(+), 252 deletions(-) delete mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginStatusDefaultModel.kt delete mode 100644 OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginStatusModel.java diff --git a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index b68ebf7d47..f3809d38a6 100644 --- a/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/bus/driver/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -59,10 +59,9 @@ public class BusPresenter extends Presenter public BusPresenter(BusFragment view) { super(view); //2021.11.1 鹰眼架构整合,由IMoGoAutopilotStatusListener逐步替代IMogoAdasOCHCallback接口 - OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG,this); OrderModel.getInstance().init(); OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp()); - LoginStatusManager.INSTANCE.addListener(TAG,this); + } @Override @@ -84,6 +83,8 @@ public class BusPresenter extends Presenter OrderModel.getInstance().setControllerStatusCallback(this); OrderModel.getInstance().setPassengerCallback(this); OrderModel.getInstance().setAdasStatusCallback(this); + OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG,this); + LoginStatusManager.INSTANCE.addListener(TAG,this); } public void releaseListener() { @@ -93,6 +94,8 @@ public class BusPresenter extends Presenter OrderModel.getInstance().setPassengerCallback(null); OrderModel.getInstance().setAdasStatusCallback(null); OCHAdasAbilityManager.getInstance().release(); + OchAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG); + LoginStatusManager.INSTANCE.removeListener(TAG); } public void abortTask() { diff --git a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt index 828008694b..26fd6be7c3 100644 --- a/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt +++ b/OCH/charter/driver/src/main/java/com/magic/mogo/och/charter/presenter/DriverM1Presenter.kt @@ -48,7 +48,6 @@ class DriverM1Presenter(view: DriverM1Fragment?) : DriverM1Model.get().init(context) OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp()) registerListener() - LoginStatusManager.addListener(TAG,this) } private fun registerListener() { @@ -57,6 +56,7 @@ class DriverM1Presenter(view: DriverM1Fragment?) : StopSideManager.addListener(TAG,this) DriverM1Model.get().setDriverM1OrderCallback(this) DriverM1Model.get().setChangeDestCallback(this) + LoginStatusManager.addListener(TAG,this) } private fun releaseListener() { @@ -64,6 +64,7 @@ class DriverM1Presenter(view: DriverM1Fragment?) : OchAutoPilotStatusListenerManager.removeListener(TAG) DriverM1Model.get().setDriverM1OrderCallback(null) DriverM1Model.get().setChangeDestCallback(null) + LoginStatusManager.removeListener(TAG) } override fun onDestroy(owner: LifecycleOwner) { diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt index 77daa59d3b..41db86def2 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/LoginProvider.kt @@ -9,7 +9,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.util.UiThreadHandler import com.mogo.och.biz.login.callback.ILoginViewCallback -import com.mogo.och.biz.login.model.LoginStatusDefaultModel +import com.mogo.och.biz.login.model.LoginModel import com.mogo.och.biz.login.ui.LoginFragment import com.mogo.och.biz.login.ui.LoginPassengerFragment import com.mogo.och.common.module.constant.OchCommonConst @@ -35,7 +35,7 @@ import com.mogo.och.common.module.utils.FlavorUtils class LoginProvider : LoginService { private val tag = LoginProvider::class.java.simpleName - private lateinit var loginFragment: Fragment + private var loginFragment: Fragment?=null private var loginStatus: LoginStatusEnum = LoginStatusEnum.None private var businessEnum: BusinessEnum = BusinessEnum.None private var openOrderStatusEnum: OpenOrderStatusEnum = OpenOrderStatusEnum.None @@ -54,7 +54,21 @@ class LoginProvider : LoginService { override fun getFragment(): Fragment { CallerLogger.d(tag, "getFragment:${loginFragment}") - return loginFragment + if(loginFragment==null){ + loginFragment = if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) { + LoginFragment() + } else if (AppIdentityModeUtils.isPassenger(FunctionBuildConfig.appIdentityMode)) { + LoginPassengerFragment() + } else { + LoginFragment() + } + } + return loginFragment!! + } + + override fun resetFragment() { + super.resetFragment() + loginFragment = null } override fun getStatusBarView(context: Context): View { @@ -80,12 +94,12 @@ class LoginProvider : LoginService { override fun queryLoginStatusByNet() { CallerLogger.d(tag, "queryLoginStatusByNet") - LoginStatusDefaultModel.queryCarStatus() + LoginModel.queryCarStatus() } override fun loginOut(mLatitude: Double, mLongitude: Double) { CallerLogger.d(tag, "loginOut mLatitude:${mLatitude}--mLongitude:${mLongitude}") - LoginStatusDefaultModel.logout(mLatitude, mLongitude) + LoginModel.logout(mLatitude, mLongitude) } override fun checkBusiness(businessType: Int): Boolean { diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/callback/ITaxiLoginCallback.java b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/callback/ITaxiLoginCallback.java index ee4a439542..d8106b4e98 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/callback/ITaxiLoginCallback.java +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/callback/ITaxiLoginCallback.java @@ -7,4 +7,6 @@ package com.mogo.och.biz.login.callback; */ public interface ITaxiLoginCallback { void getPhoneCodeSuccess(); + default void searchStatusSuccess(){} + } diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt index c02c91fa69..91c7e5bd86 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginModel.kt @@ -2,18 +2,39 @@ package com.mogo.och.biz.login.model import android.annotation.SuppressLint import android.content.Context +import com.mogo.commons.AbsMogoApplication +import com.mogo.commons.storage.SharedPrefsMgr import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager -import com.mogo.commons.storage.SharedPrefsMgr +import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager.getChassisLocationGCJ02 +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.GsonUtils import com.mogo.eagle.core.utilcode.util.NetworkUtils import com.mogo.och.biz.R +import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean import com.mogo.och.biz.login.bean.TaxiLoginReqBean import com.mogo.och.biz.login.bean.TaxiLoginRespBean +import com.mogo.och.biz.login.bean.TaxiLogoutReqBean import com.mogo.och.biz.login.callback.ITaxiLoginCallback import com.mogo.och.biz.login.net.OchCommonServiceManager +import com.mogo.och.biz.login.net.OchCommonServiceManager.logout +import com.mogo.och.biz.login.net.OchCommonServiceManager.queryDriverServiceStatus +import com.mogo.och.common.module.biz.login.LoginStatusEnum +import com.mogo.och.common.module.biz.login.LoginStatusEnum.Companion.valueOf +import com.mogo.och.common.module.biz.login.LoginStatusManager +import com.mogo.och.common.module.constant.OchCommonConst +import com.mogo.och.common.module.manager.socket.lan.bean.BusCacheKey +import com.mogo.och.common.module.manager.socket.lan.bean.LoginCacheStatus import com.mogo.och.common.module.network.OchCommonServiceCallback +import com.mogo.och.common.module.utils.DateTimeUtil import com.mogo.och.common.module.utils.ToastUtilsOch import com.mogo.och.common.module.wigets.toast.ToastCharterUtils +import com.mogo.och.data.manager.cache.CacheDataManager +import io.reactivex.Observable +import io.reactivex.disposables.Disposable +import java.util.concurrent.TimeUnit /** * Created by pangfan on 2021/8/19 @@ -27,8 +48,14 @@ object LoginModel { private val TAG = "TaxiLoginModel" private var mContext: Context? = null var iTaxiLoginCallback: ITaxiLoginCallback? = null + private var subscribe: Disposable? = null + + init { + mContext = AbsMogoApplication.getApp() + } + fun init(context: Context) { - mContext = context.applicationContext + } fun hasInit(): Boolean { @@ -47,7 +74,6 @@ object LoginModel { } fun release() { - mContext = null iTaxiLoginCallback = null } @@ -96,10 +122,7 @@ object LoginModel { if (null != data && 0 == data.code) { // 获取验证码成功 ToastCharterUtils.showToastShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) - LoginStatusDefaultModel.queryCarStatus() - mContext?.let { c -> - SharedPrefsMgr.getInstance().putString("och_account", phone) - } + queryCarStatus() } else { if (data != null) { ToastCharterUtils.showToastShort(data.code.toString()) @@ -122,4 +145,118 @@ object LoginModel { } } + /** + * 接单状态和登录状态查询 + * 1、初始化查询 + * 2、错误重试 + * 3、错误重试 + * 4、登出后重试 + * 5、变更出车状态查下 + * 6、变更出车状态查下 + * 7、网络状态变更后查询 + * 8、登录页面关闭后查下状态 + */ + fun queryCarStatus() { + mContext?.let { + queryDriverServiceStatus(it, object : OchCommonServiceCallback { + override fun onSuccess(data: DriverStatusQueryRespBean) { + if (null != data && 0 == data.code) { + // 不用登录也可以获得支持的业务模式 + LoginStatusManager.setBusinessType(data.data.businessType) + // 后台已登录 + if (valueOf(data.data.driverStatus) == LoginStatusEnum.Login) { + // 业务不支持 去退出登录 + if (!LoginStatusManager.checkBusiness(data.data.businessType)) { + val mLatitude = getChassisLocationGCJ02().latitude + val mLongitude = getChassisLocationGCJ02().longitude + LoginStatusManager.loginOut(mLatitude, mLongitude) + return + } + } + LoginStatusManager.setOpenOrderType(data.data.servingStatus) + LoginStatusManager.setLoginStatus(data.data.driverStatus) + LoginStatusManager.setLoginInfo(data.data) + d(SceneConstant.M_TAXI + TAG, "登录信息:$data") + loginSuccess(data) + } + } + + override fun onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastCharterUtils.showToastShort(mContext!!.getString(R.string.network_error_tip)) + } else { + ToastCharterUtils.showToastShort(mContext!!.getString(R.string.request_error_tip)) + } + subscribe = Observable.timer(5, TimeUnit.SECONDS) + .subscribe { aLong: Long? -> queryCarStatus() } + } + + override fun onFail(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage(code, msg) + if (code == OchCommonConst.WAIT_TAKEN) { + subscribe = Observable.timer(3, TimeUnit.SECONDS) + .subscribe { aLong: Long? -> queryCarStatus() } + } else { + loginFail(LoginStatusManager.isLogin()) + } + } + }) + } + } + + // 登出 + fun logout(mLatitude: Double, mLongitude: Double) { + val location4Login = TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude) + logout( + mContext!!, location4Login, + object : OchCommonServiceCallback { + override fun onSuccess(data: BaseData) { + if (null != data && 0 == data.code) { + loginFail(false) + queryCarStatus() + } + } + + override fun onError() { + if (!NetworkUtils.isConnected(mContext)) { + ToastCharterUtils.showToastShort(mContext!!.getString(R.string.network_error_tip)) + } else { + ToastCharterUtils.showToastShort(mContext!!.getString(R.string.request_error_tip)) + } + } + + override fun onFail(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage(code, msg) + } + }) + } + + fun loginSuccess(data: DriverStatusQueryRespBean?) { + CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginSuccess:${LoginStatusManager.isLogin()}") + if (LoginStatusManager.isLogin()) { + SharedPrefsMgr.getInstance().putString("och_account", data?.data?.phone) + } else { + SharedPrefsMgr.getInstance().putString("och_account", "") + } + + data?.data?.driverStatus?.let { updateLoginLocalStatus(it) } + + iTaxiLoginCallback?.searchStatusSuccess() + } + + private fun updateLoginLocalStatus(loginStatus: Int = 0) { + val loginCacheStatus = LoginCacheStatus(loginStatus, DateTimeUtil.getCurrentTimeStamp()) + mContext?.let { + CacheDataManager.instance.putCacheData( + it, BusCacheKey.BUS_LOGIN_STATUS_CACHE, + GsonUtils.toJson(loginCacheStatus)) + } + } + + + fun loginFail(isLogin: Boolean) { + CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginFail:$isLogin") + updateLoginLocalStatus(0) + } + } \ No newline at end of file diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginStatusDefaultModel.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginStatusDefaultModel.kt deleted file mode 100644 index ecd10f5d5f..0000000000 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginStatusDefaultModel.kt +++ /dev/null @@ -1,51 +0,0 @@ -package com.mogo.och.biz.login.model - -import android.annotation.SuppressLint -import com.mogo.commons.AbsMogoApplication -import com.mogo.commons.storage.SharedPrefsMgr -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger -import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant -import com.mogo.eagle.core.utilcode.util.GsonUtils -import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean -import com.mogo.och.common.module.biz.login.LoginStatusManager -import com.mogo.och.common.module.manager.socket.lan.bean.BusCacheKey -import com.mogo.och.common.module.manager.socket.lan.bean.LoginCacheStatus -import com.mogo.och.common.module.utils.DateTimeUtil -import com.mogo.och.data.manager.cache.CacheDataManager - -@SuppressLint("StaticFieldLeak") -object LoginStatusDefaultModel : LoginStatusModel() { - - - const val TAG = "OchCommonLoginStatusDefaultModel" - - - init { - mContext = AbsMogoApplication.getApp(); - } - - override fun loginSuccess(data: DriverStatusQueryRespBean?) { - CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginSuccess:${LoginStatusManager.isLogin()}") - if (LoginStatusManager.isLogin()) { - SharedPrefsMgr.getInstance().putString("och_account", data?.data?.phone) - } else { - SharedPrefsMgr.getInstance().putString("och_account", "") - } - - data?.data?.driverStatus?.let { updateLoginLocalStatus(it) } - - } - - private fun updateLoginLocalStatus(loginStatus: Int = 0) { - val loginCacheStatus = LoginCacheStatus(loginStatus,DateTimeUtil.getCurrentTimeStamp()) - CacheDataManager.instance.putCacheData(mContext, BusCacheKey.BUS_LOGIN_STATUS_CACHE, - GsonUtils.toJson(loginCacheStatus)) - } - - - override fun loginFail(isLogin: Boolean) { - CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginFail:$isLogin") - updateLoginLocalStatus(0) - } - -} \ No newline at end of file diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginStatusModel.java b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginStatusModel.java deleted file mode 100644 index e7809ba4f6..0000000000 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/model/LoginStatusModel.java +++ /dev/null @@ -1,138 +0,0 @@ -package com.mogo.och.biz.login.model; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; - -import android.content.Context; - -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.eagle.core.utilcode.util.NetworkUtils; -import com.mogo.och.biz.R; -import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean; -import com.mogo.och.biz.login.bean.TaxiLogoutReqBean; -import com.mogo.och.biz.login.net.OchCommonServiceManager; -import com.mogo.och.common.module.biz.login.LoginStatusEnum; -import com.mogo.och.common.module.biz.login.LoginStatusManager; -import com.mogo.och.common.module.constant.OchCommonConst; -import com.mogo.och.common.module.network.OchCommonServiceCallback; -import com.mogo.och.common.module.utils.ToastUtilsOch; -import com.mogo.och.common.module.wigets.toast.ToastCharterUtils; - -import java.util.concurrent.TimeUnit; - -import io.reactivex.Observable; -import io.reactivex.disposables.Disposable; - -public abstract class LoginStatusModel { - - private static final String TAG = "OchCommonLoginStatusModel"; - - protected Context mContext; - - private Disposable subscribe; - - - protected abstract void loginSuccess(DriverStatusQueryRespBean data); - - protected abstract void loginFail(boolean isLogin); - - /** - * 接单状态和登录状态查询 - * 1、初始化查询 - * 2、错误重试 - * 3、错误重试 - * 4、登出后重试 - * 5、变更出车状态查下 - * 6、变更出车状态查下 - * 7、网络状态变更后查询 - * 8、登录页面关闭后查下状态 - */ - public void queryCarStatus() { - OchCommonServiceManager.queryDriverServiceStatus(mContext, - new OchCommonServiceCallback() { - @Override - public void onSuccess(DriverStatusQueryRespBean data) { - if (null != data && 0 == data.code) { - // 不用登录也可以获得支持的业务模式 - LoginStatusManager.setBusinessType(data.data.businessType); - // 后台已登录 - if (LoginStatusEnum.valueOf(data.data.driverStatus)==LoginStatusEnum.Login) { - // 业务不支持 去退出登录 - if (!LoginStatusManager.checkBusiness(data.data.businessType)) { - double mLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude(); - double mLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude(); - LoginStatusManager.loginOut(mLatitude,mLongitude); - return; - } - } - LoginStatusManager.setOpenOrderType(data.data.servingStatus); - LoginStatusManager.setLoginStatus(data.data.driverStatus); - LoginStatusManager.setLoginInfo(data.data); - CallerLogger.d(M_TAXI + TAG, "登录信息:" + data); - loginSuccess(data); - } - } - - @Override - public void onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastCharterUtils.showToastShort(mContext.getString(R.string.network_error_tip)); - } else { - ToastCharterUtils.showToastShort(mContext.getString(R.string.request_error_tip)); - } - subscribe = Observable.timer(5, TimeUnit.SECONDS).subscribe(aLong -> { - queryCarStatus(); - }); - } - - @Override - public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); - if(code== OchCommonConst.WAIT_TAKEN){ - subscribe = Observable.timer(3, TimeUnit.SECONDS).subscribe(aLong -> { - queryCarStatus(); - }); - }else { - loginFail(LoginStatusManager.isLogin()); - } - } - }); - } - - // 登出 - public void logout(double mLatitude,double mLongitude) { - TaxiLogoutReqBean.Location4Login location4Login = new TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude); - OchCommonServiceManager.logout(mContext,location4Login, - new OchCommonServiceCallback() { - @Override - public void onSuccess(BaseData data) { - if (null != data && 0 == data.code) { - loginFail(false); - queryCarStatus(); - } - } - - @Override - public void onError() { - if (!NetworkUtils.isConnected(mContext)) { - ToastCharterUtils.showToastShort(mContext.getString(R.string.network_error_tip)); - } else { - ToastCharterUtils.showToastShort(mContext.getString(R.string.request_error_tip)); - } - } - - @Override - public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); - } - }); - } - - public void release() { - if(subscribe!=null&&!subscribe.isDisposed()){ - subscribe.dispose(); - } - } - -} diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt index d9b2d52a92..64da832b38 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/presenter/LoginPresenter.kt @@ -3,16 +3,14 @@ package com.mogo.och.biz.login.presenter import androidx.lifecycle.LifecycleOwner import com.mogo.commons.AbsMogoApplication import com.mogo.commons.mvp.Presenter -import com.mogo.eagle.core.data.config.FunctionBuildConfig import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.RegexUtils +import com.mogo.eagle.core.utilcode.util.StringUtils import com.mogo.och.biz.R import com.mogo.och.biz.login.callback.ITaxiLoginCallback import com.mogo.och.biz.login.ui.LoginFragment import com.mogo.och.biz.login.model.LoginModel -import com.mogo.och.biz.login.model.LoginStatusDefaultModel -import com.mogo.och.common.module.biz.login.BusinessEnum import com.mogo.och.common.module.biz.login.LoginStatusManager import com.mogo.och.common.module.wigets.toast.ToastCharterUtils import io.reactivex.Observable @@ -33,6 +31,9 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT private val TAG = LoginPresenter::class.java.simpleName + private var phone:String?=null + private var code:String?=null + init { initListeners() CallerLogger.d(SceneConstant.M_TAXI + TAG, "网约车-Init") @@ -43,6 +44,8 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT LoginModel.setiTaxiLoginCallback(this) } + + fun getPhoneCode(phone:String){ if(!LoginModel.hasInit()){ initListeners() @@ -104,11 +107,25 @@ class LoginPresenter(view: LoginFragment?) : Presenter(view), IT ToastCharterUtils.showToastShort(R.string.module_och_taxi_login_code_error) return } - if(!LoginStatusManager.checkBusiness(LoginStatusManager.getBusInessType().code)){ - LoginStatusDefaultModel.queryCarStatus() + LoginModel.queryCarStatus() + mView?.closeSoftInput() + this.phone = phone + this.code = code + } + + override fun searchStatusSuccess() { + if (StringUtils.isEmpty(phone) || StringUtils.isEmpty(code)) { return } - mView?.closeSoftInput() - LoginModel.gotoLogin(phone,code) + if(!LoginStatusManager.checkBusiness(LoginStatusManager.getBusInessType().code)){ + LoginModel.queryCarStatus() + return + } + if(!StringUtils.isEmpty(phone)&&!StringUtils.isEmpty(code)) { + LoginModel.gotoLogin(phone!!, code!!) + } + this.phone = null + this.code = null } + } \ No newline at end of file diff --git a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt index 5f0544505e..4b0dfa7535 100644 --- a/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt +++ b/OCH/common/biz/src/main/java/com/mogo/och/biz/login/ui/LoginFragment.kt @@ -4,6 +4,7 @@ import android.graphics.Rect import android.os.SystemClock import android.view.* import android.view.ViewTreeObserver.OnGlobalLayoutListener +import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.content.ContextCompat import androidx.core.widget.addTextChangedListener import com.mogo.commons.mvp.MvpFragment @@ -41,12 +42,40 @@ import kotlinx.android.synthetic.main.biz_login_view.eiv_Info */ class LoginFragment : MvpFragment(), ILoginViewCallback { + private var biz_cl_driver_main: ConstraintLayout? = null + + private var onlayoutListener: OnGlobalLayoutListener? = object : OnGlobalLayoutListener { + override fun onGlobalLayout() { + try { + biz_cl_driver_main?.let { + val rect = Rect() + it.getWindowVisibleDisplayFrame(rect) + val mainInvisibleHeight = it.rootView.height - rect.bottom + if (mainInvisibleHeight > 100) { + val outLocation = IntArray(2) + biz_acbtn_login.getLocationInWindow(outLocation) + val srollHeight = (outLocation[1] + biz_acbtn_login.height) - rect.bottom + if (srollHeight > 0) { + it.scrollTo(0, srollHeight) + } + CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "滚动的距离:$srollHeight") + } else { + it.scrollTo(0, 0) + } + } + } catch (e: Exception) { + e.printStackTrace() + } + } + } + override fun getLayoutId(): Int { return R.layout.biz_login_view } override fun initViews() { - CallerLogger.d(TAG,"init") + CallerLogger.d(TAG, "init") + biz_cl_driver_main = mRootView.findViewById(R.id.biz_cl_driver_main) inputPhoneNormal() initBg() initListener() @@ -57,7 +86,7 @@ class LoginFragment : MvpFragment(), ILoginView } private fun initListener() { - CallerLogger.d(TAG,"initListener") + CallerLogger.d(TAG, "initListener") mRootView.isFocusable = true mRootView.isFocusableInTouchMode = true mRootView.setOnTouchListener { _, event -> @@ -76,32 +105,6 @@ class LoginFragment : MvpFragment(), ILoginView biz_actv_welcome_login_title.setOnClickListener { continuousClick() } - biz_cl_driver_main.viewTreeObserver.addOnGlobalLayoutListener(object :OnGlobalLayoutListener{ - override fun onGlobalLayout() { - try { - if (biz_cl_driver_main==null) { - - }else{ - val rect = Rect() - biz_cl_driver_main.getWindowVisibleDisplayFrame(rect) - val mainInvisibleHeight = biz_cl_driver_main.rootView.height - rect.bottom - if (mainInvisibleHeight > 100) { - val outLocation = IntArray(2) - biz_acbtn_login.getLocationInWindow(outLocation) - val srollHeight = (outLocation[1] + biz_acbtn_login.height) - rect.bottom - if (srollHeight > 0) { - biz_cl_driver_main.scrollTo(0, srollHeight) - } - CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "滚动的距离:$srollHeight") - } else { - biz_cl_driver_main.scrollTo(0, 0) - } - } - }catch (e:Exception){ - e.printStackTrace() - } - } - }) biz_actv_login_get_code.onClick { mPresenter?.getPhoneCode(biz_ace_login_phone_value.text.toString()) } @@ -118,9 +121,10 @@ class LoginFragment : MvpFragment(), ILoginView bv_switch_business.selectBusniess() true } - RxUtils.createSubscribe(10_000) { - CallerLogger.d(TAG,"宽度${biz_cl_driver_main.width}----${biz_cl_driver_main.height}----${biz_cl_driver_main.visibility}") - } + } + + override fun onDetach() { + super.onDetach() } /** @@ -145,14 +149,24 @@ class LoginFragment : MvpFragment(), ILoginView biz_ace_login_phone_value.text?.clear() biz_ace_login_phone_value.setHint(R.string.module_och_taxi_login_phone_error) context?.let { - biz_ace_login_phone_value.setHintTextColor(ContextCompat.getColor(it, R.color.taxi_EF262C)) + biz_ace_login_phone_value.setHintTextColor( + ContextCompat.getColor( + it, + R.color.taxi_EF262C + ) + ) biz_ace_login_phone_value.setBackgroundResource(R.drawable.taxi_login_phone_error) } } private fun inputPhoneNormal() { context?.let { - biz_ace_login_phone_value.setHintTextColor(ContextCompat.getColor(it, R.color.taxi_878890)) + biz_ace_login_phone_value.setHintTextColor( + ContextCompat.getColor( + it, + R.color.taxi_878890 + ) + ) biz_ace_login_phone_value.setBackgroundResource(R.drawable.taxi_login_phone_normal) } } @@ -191,18 +205,20 @@ class LoginFragment : MvpFragment(), ILoginView } override fun checkAllEnv( - reason:String + reason: String ) { // 司机屏不用处理 只处理 后台返回的业务模型就行 } override fun onResume() { + biz_cl_driver_main?.viewTreeObserver?.addOnGlobalLayoutListener(onlayoutListener) super.onResume() - CallerLogger.d(TAG,"onResume") + CallerLogger.d(TAG, "onResume") } override fun onPause() { + biz_cl_driver_main?.viewTreeObserver?.removeOnGlobalLayoutListener(onlayoutListener) super.onPause() - CallerLogger.d(TAG,"onPause") + CallerLogger.d(TAG, "onPause") } } \ No newline at end of file diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt index 2ad7abd155..cecf71e9e8 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/login/LoginStatusManager.kt @@ -22,6 +22,12 @@ object LoginStatusManager : CallerBase() { } throw ClassNotFoundException("没有找到登录Fragment"); } + @JvmStatic + fun resetFragment(){ + loginService?.let { + return it.resetFragment() + } + } @JvmStatic fun loginOut(mLatitude: Double, mLongitude: Double) { diff --git a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/provider/CommonService.kt b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/provider/CommonService.kt index 6e3e70fc90..3c7c909910 100644 --- a/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/provider/CommonService.kt +++ b/OCH/common/common/src/main/java/com/mogo/och/common/module/biz/provider/CommonService.kt @@ -9,6 +9,8 @@ interface CommonService : IProvider { fun getFragment(): Fragment + fun resetFragment(){} + fun getStatusBarView(context: Context): View fun invokeByName(type:String,value:Any){} diff --git a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt index 611a8e09e2..79e8a446d3 100644 --- a/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt +++ b/OCH/facade/src/main/java/com/mogo/och/facade/route/FacadeProvider.kt @@ -56,12 +56,14 @@ abstract class FacadeProvider : IMoGoFunctionProvider, ILoginCallback { val fragment = if (LoginStatusManager.isLogin()) { val fragment = getFragment() injectStatusBar() + LoginStatusManager.resetFragment() fragment } else { removeStatusBar() CallerHmiManager.hideToolsView() ToggleDebugView.toggleDebugView.dismiss() SopView.sopView.dismiss() + commonService?.resetFragment() LoginStatusManager.getFragment() } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/ShuttleDriverProvider.kt b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/ShuttleDriverProvider.kt index 86aa46d082..ff8e351db4 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/ShuttleDriverProvider.kt +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/ShuttleDriverProvider.kt @@ -18,15 +18,21 @@ import com.mogo.och.common.module.biz.provider.CommonServiceImpl class ShuttleDriverProvider : CommonServiceImpl() { private val TAG = ShuttleDriverProvider::class.java.simpleName - private lateinit var busFragment: ShuttleFragment + private var busFragment: ShuttleFragment?=null override fun init(context: Context) { d(SceneConstant.M_TAXI + TAG, "init") - busFragment = ShuttleFragment() } override fun getFragment(): Fragment { - return busFragment + if(busFragment==null){ + busFragment = ShuttleFragment() + } + return busFragment!! + } + + override fun resetFragment() { + busFragment = null } } diff --git a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java index dd91f6c089..26021e655b 100644 --- a/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java +++ b/OCH/shuttle/driver/src/main/java/com/mogo/och/shuttle/presenter/BusPresenter.java @@ -59,10 +59,9 @@ public class BusPresenter extends Presenter public BusPresenter(ShuttleFragment view) { super(view); //2021.11.1 鹰眼架构整合,由IMoGoAutopilotStatusListener逐步替代IMogoAdasOCHCallback接口 - OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG,this); OrderModel.getInstance().init(); OCHAdasAbilityManager.getInstance().init(AbsMogoApplication.getApp()); - LoginStatusManager.INSTANCE.addListener(TAG,this); + } @Override @@ -85,6 +84,8 @@ public class BusPresenter extends Presenter OrderModel.getInstance().setSlidePanelHideCallback(this); OrderModel.getInstance().setControllerStatusCallback(this); OrderModel.getInstance().setAdasStatusCallback(this); + OchAutoPilotStatusListenerManager.INSTANCE.addListener(TAG,this); + LoginStatusManager.INSTANCE.addListener(TAG,this); } public void releaseListener() { @@ -93,6 +94,8 @@ public class BusPresenter extends Presenter OrderModel.getInstance().setControllerStatusCallback(null); OrderModel.getInstance().setAdasStatusCallback(null); OCHAdasAbilityManager.getInstance().release(); + OchAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG); + LoginStatusManager.INSTANCE.removeListener(TAG); } public void abortTask() { diff --git a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/Presenter.java b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/Presenter.java index a4942158e5..3b08ad745f 100644 --- a/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/Presenter.java +++ b/foudations/mogo-commons/src/main/java/com/mogo/commons/mvp/Presenter.java @@ -51,6 +51,7 @@ public abstract class Presenter< V extends IView > implements LifecycleObserver @OnLifecycleEvent( Lifecycle.Event.ON_DESTROY ) public void onDestroy( @NonNull LifecycleOwner owner ) { + this.mView = null; } @OnLifecycleEvent( Lifecycle.Event.ON_ANY )