[6.4.0]
[登录fragment 内存泄漏、登录前先走一遍通用接口]
This commit is contained in:
@@ -59,10 +59,9 @@ public class BusPresenter extends Presenter<BusFragment>
|
||||
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<BusFragment>
|
||||
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<BusFragment>
|
||||
OrderModel.getInstance().setPassengerCallback(null);
|
||||
OrderModel.getInstance().setAdasStatusCallback(null);
|
||||
OCHAdasAbilityManager.getInstance().release();
|
||||
OchAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG);
|
||||
LoginStatusManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
public void abortTask() {
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -7,4 +7,6 @@ package com.mogo.och.biz.login.callback;
|
||||
*/
|
||||
public interface ITaxiLoginCallback {
|
||||
void getPhoneCodeSuccess();
|
||||
default void searchStatusSuccess(){}
|
||||
|
||||
}
|
||||
|
||||
@@ -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<DriverStatusQueryRespBean> {
|
||||
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<BaseData> {
|
||||
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)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<DriverStatusQueryRespBean>() {
|
||||
@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<BaseData>() {
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<LoginFragment?>(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<LoginFragment?>(view), IT
|
||||
LoginModel.setiTaxiLoginCallback(this)
|
||||
}
|
||||
|
||||
|
||||
|
||||
fun getPhoneCode(phone:String){
|
||||
if(!LoginModel.hasInit()){
|
||||
initListeners()
|
||||
@@ -104,11 +107,25 @@ class LoginPresenter(view: LoginFragment?) : Presenter<LoginFragment?>(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
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<LoginFragment?, LoginPresenter?>(), 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<LoginFragment?, LoginPresenter?>(), 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<LoginFragment?, LoginPresenter?>(), 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<LoginFragment?, LoginPresenter?>(), 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<LoginFragment?, LoginPresenter?>(), 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<LoginFragment?, LoginPresenter?>(), 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")
|
||||
}
|
||||
}
|
||||
@@ -22,6 +22,12 @@ object LoginStatusManager : CallerBase<ILoginCallback>() {
|
||||
}
|
||||
throw ClassNotFoundException("没有找到登录Fragment");
|
||||
}
|
||||
@JvmStatic
|
||||
fun resetFragment(){
|
||||
loginService?.let {
|
||||
return it.resetFragment()
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun loginOut(mLatitude: Double, mLongitude: Double) {
|
||||
|
||||
@@ -9,6 +9,8 @@ interface CommonService : IProvider {
|
||||
|
||||
fun getFragment(): Fragment
|
||||
|
||||
fun resetFragment(){}
|
||||
|
||||
fun getStatusBarView(context: Context): View
|
||||
|
||||
fun invokeByName(type:String,value:Any){}
|
||||
|
||||
@@ -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()
|
||||
}
|
||||
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -59,10 +59,9 @@ public class BusPresenter extends Presenter<ShuttleFragment>
|
||||
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<ShuttleFragment>
|
||||
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<ShuttleFragment>
|
||||
OrderModel.getInstance().setControllerStatusCallback(null);
|
||||
OrderModel.getInstance().setAdasStatusCallback(null);
|
||||
OCHAdasAbilityManager.getInstance().release();
|
||||
OchAutoPilotStatusListenerManager.INSTANCE.removeListener(TAG);
|
||||
LoginStatusManager.INSTANCE.removeListener(TAG);
|
||||
}
|
||||
|
||||
public void abortTask() {
|
||||
|
||||
@@ -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 )
|
||||
|
||||
Reference in New Issue
Block a user