diff --git a/OCH/mogo-och-common-module/build.gradle b/OCH/mogo-och-common-module/build.gradle index 1f74335527..927d871c22 100644 --- a/OCH/mogo-och-common-module/build.gradle +++ b/OCH/mogo-och-common-module/build.gradle @@ -1,6 +1,8 @@ apply plugin: 'com.android.library' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' +apply plugin: 'kotlin-kapt' +apply plugin: 'com.alibaba.arouter' android { compileSdkVersion 31 @@ -14,6 +16,22 @@ android { testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles "consumer-rules.pro" + //ARouter apt 参数 + kapt { + useBuildCache = false + arguments { + arg("AROUTER_MODULE_NAME", project.getName()) + } + } + } + + compileOptions { + sourceCompatibility JavaVersion.VERSION_1_8 + targetCompatibility JavaVersion.VERSION_1_8 + } + + kotlinOptions { + jvmTarget = "1.8" } buildTypes { @@ -34,6 +52,10 @@ dependencies { androidTestImplementation 'androidx.test.ext:junit:1.1.1' androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' implementation rootProject.ext.dependencies.amapnavi3dmap + implementation rootProject.ext.dependencies.rxandroid + + implementation rootProject.ext.dependencies.arouter + kapt rootProject.ext.dependencies.aroutercompiler if (Boolean.valueOf(USE_MAVEN_PACKAGE)) { implementation rootProject.ext.dependencies.mogoutils diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/DriverStatusQueryRespBean.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/DriverStatusQueryRespBean.java similarity index 90% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/DriverStatusQueryRespBean.java rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/DriverStatusQueryRespBean.java index ac630c9ecf..903fece224 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/DriverStatusQueryRespBean.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/DriverStatusQueryRespBean.java @@ -1,4 +1,4 @@ -package com.mogo.och.taxi.bean; +package com.mogo.och.common.module.biz.bean; import com.mogo.eagle.core.data.BaseData; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginReqBean.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLoginReqBean.java similarity index 81% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginReqBean.java rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLoginReqBean.java index 0591d3f878..ebe1fa2731 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginReqBean.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLoginReqBean.java @@ -1,8 +1,8 @@ -package com.mogo.och.taxi.bean; +package com.mogo.och.common.module.biz.bean; /** - * Created by pangfan on 2021/8/19 - * 司机端准备好或者乘客已验证上车请求参数 + * Created by yangyakun on 2021/8/19 + * 通过手机号验证码登录 */ public class TaxiLoginReqBean { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginRespBean.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLoginRespBean.java similarity index 54% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginRespBean.java rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLoginRespBean.java index c1265a9be3..9cda2a96c6 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginRespBean.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLoginRespBean.java @@ -1,14 +1,14 @@ -package com.mogo.och.taxi.bean; +package com.mogo.och.common.module.biz.bean; import com.mogo.eagle.core.data.BaseData; /** - * Created by pangfan on 2021/8/19 - * 司机端准备好或者乘客已验证上车请求参数 + * Created by yangyakun on 2021/8/19 + * 通过验证码登录 */ public class TaxiLoginRespBean extends BaseData { - public TaxiLoginRespBean.Result data; + public Result data; public static class Result { public Double lat; diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginSmsReqBean.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLoginSmsReqBean.java similarity index 54% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginSmsReqBean.java rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLoginSmsReqBean.java index 3a4d4d7a4f..3c246bc153 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginSmsReqBean.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLoginSmsReqBean.java @@ -1,8 +1,8 @@ -package com.mogo.och.taxi.bean; +package com.mogo.och.common.module.biz.bean; /** - * Created by pangfan on 2021/8/19 - * 司机端准备好或者乘客已验证上车请求参数 + * Created by yyk on 2021/8/19 + * 获取验证码 */ public class TaxiLoginSmsReqBean { diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLogoutReqBean.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLogoutReqBean.java similarity index 77% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLogoutReqBean.java rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLogoutReqBean.java index ced9b2eddb..22e63dd838 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLogoutReqBean.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/TaxiLogoutReqBean.java @@ -1,8 +1,8 @@ -package com.mogo.och.taxi.bean; +package com.mogo.och.common.module.biz.bean; /** - * Created by pangfan on 2021/8/19 - * 司机端准备好或者乘客已验证上车请求参数 + * Created by yyk on 2021/8/19 + * 登出请求参数 */ public class TaxiLogoutReqBean { public String sn; diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/callback/ILoginCallback.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/callback/ILoginCallback.java new file mode 100644 index 0000000000..481a2cd75b --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/callback/ILoginCallback.java @@ -0,0 +1,9 @@ +package com.mogo.och.common.module.biz.callback; + +import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; + +public interface ILoginCallback { + void loginSuccess(DriverStatusQueryRespBean data); + + void loginFail(boolean isLogin); +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/callback/ILoginViewCallback.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/callback/ILoginViewCallback.kt new file mode 100644 index 0000000000..033e900e77 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/callback/ILoginViewCallback.kt @@ -0,0 +1,13 @@ +package com.mogo.och.common.module.biz.callback + +interface ILoginViewCallback { + /** + * 展示登录页面 + */ + fun showLoginDialogFragment() + + /** + * 隐藏登录页面 + */ + fun hideLoginDialogFragment() +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiLoginCallback.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/callback/ITaxiLoginCallback.java similarity index 58% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiLoginCallback.java rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/callback/ITaxiLoginCallback.java index a8f35171cb..5cbca0d853 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiLoginCallback.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/callback/ITaxiLoginCallback.java @@ -1,11 +1,4 @@ -package com.mogo.och.taxi.callback; - -import androidx.annotation.NonNull; - -import com.mogo.och.taxi.bean.OrderQueryRespBean; -import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean; - -import java.util.List; +package com.mogo.och.common.module.biz.callback; /** * Created on 2021/9/8 diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/LoginStatusManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/LoginStatusManager.kt new file mode 100644 index 0000000000..8f290529b7 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/LoginStatusManager.kt @@ -0,0 +1,38 @@ +package com.mogo.och.common.module.biz.constant + +object LoginStatusManager { + /** + * 登录状态 + */ + private var loginStatus: TaxiLoginStatusEnum = TaxiLoginStatusEnum.None + + @JvmStatic + fun setLoginStatus(status: Int) { + when (status) { + 0 -> { + this.loginStatus = TaxiLoginStatusEnum.Logout + } + 1 -> { + this.loginStatus = TaxiLoginStatusEnum.Login + } + else -> { + this.loginStatus = TaxiLoginStatusEnum.None + } + } + } + @JvmStatic + fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) { + this.loginStatus = loginStatus + } + @JvmStatic + fun getLoginStatus(): TaxiLoginStatusEnum { + return loginStatus + } + @JvmStatic + fun isLogin():Boolean { + if(loginStatus== TaxiLoginStatusEnum.Login){ + return true + } + return false + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt new file mode 100644 index 0000000000..55a0b5cc2a --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt @@ -0,0 +1,28 @@ +package com.mogo.och.common.module.biz.constant + +import com.mogo.commons.debug.DebugConfig + +/** + * Created on 2021/12/6 + */ +class OchCommonConst { + companion object { + + private const val BASE_URL_OCH_DEV = "http://tech-dev.zhidaohulian.com" + private const val BASE_URL_OCH_QA = "https://tech-qa.zhidaohulian.com" + private const val BASE_URL_OCH_RELEASE = "https://tech.zhidaohulian.com" + + @JvmStatic + fun getBaseUrl(): String { + return when (DebugConfig.getNetMode()) { + DebugConfig.NET_MODE_DEV, DebugConfig.NET_MODE_DEMO -> BASE_URL_OCH_DEV + DebugConfig.NET_MODE_QA -> BASE_URL_OCH_QA + DebugConfig.NET_MODE_RELEASE -> BASE_URL_OCH_RELEASE + else -> BASE_URL_OCH_RELEASE + } + } + // token 失效 重新获取token + const val WAIT_TAKEN = 100046 + + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiLoginStatusEnum.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/TaxiLoginStatusEnum.kt similarity index 90% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiLoginStatusEnum.kt rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/TaxiLoginStatusEnum.kt index 5e19782f5e..451196d777 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiLoginStatusEnum.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/TaxiLoginStatusEnum.kt @@ -1,4 +1,4 @@ -package com.mogo.och.taxi.constant +package com.mogo.och.common.module.biz.constant /** * Created on 2022/08/19 diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt similarity index 78% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.kt rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt index bdef0b53fd..08f1acc43f 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt @@ -1,21 +1,20 @@ -package com.mogo.och.taxi.model +package com.mogo.och.common.module.biz.model import android.annotation.SuppressLint import android.content.Context import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.utilcode.util.NetworkUtils -import com.mogo.och.taxi.model.TaxiLoginModel -import com.mogo.och.taxi.callback.ITaxiLoginCallback -import com.mogo.module.common.MogoApisHandler -import com.mogo.map.navi.IMogoCarLocationChangedListener2 -import com.mogo.och.taxi.network.TaxiServiceManager -import com.mogo.och.taxi.network.TaxiServiceCallback import com.mogo.eagle.core.utilcode.util.ToastUtils -import com.mogo.och.taxi.R -import com.mogo.och.taxi.bean.TaxiLoginReqBean -import com.mogo.och.taxi.bean.TaxiLoginRespBean -import com.mogo.och.taxi.constant.TaxiLoginStatusEnum -import com.mogo.och.taxi.utils.StatusManager +import com.mogo.map.navi.IMogoCarLocationChangedListener2 +import com.mogo.module.common.MogoApisHandler +import com.mogo.och.common.module.R +import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean +import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean +import com.mogo.och.common.module.biz.callback.ITaxiLoginCallback +import com.mogo.och.common.module.biz.constant.TaxiLoginStatusEnum +import com.mogo.och.common.module.biz.constant.LoginStatusManager +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback +import com.mogo.och.common.module.biz.network.OchCommonServiceManager /** * Created by pangfan on 2021/8/19 @@ -24,7 +23,7 @@ import com.mogo.och.taxi.utils.StatusManager * 网约车 - 出租车业务逻辑处理 */ @SuppressLint("StaticFieldLeak") -object TaxiLoginModel{ +object OchCommonLoginModel{ private val TAG = "TaxiLoginModel" private var mContext: Context? = null @@ -34,10 +33,7 @@ object TaxiLoginModel{ fun init(context: Context) { mContext = context.applicationContext // 达到起始站围栏监听 - MogoApisHandler.getInstance() - .apis - .registerCenterApi - .registerCarLocationChangedListener(TAG, mCarLocationChangedListener2) + MogoApisHandler.getInstance().apis.registerCenterApi.registerCarLocationChangedListener(TAG, mCarLocationChangedListener2) } fun hasInit():Boolean{ @@ -73,8 +69,8 @@ object TaxiLoginModel{ * 获取手机验证码 */ fun getPhoneCode(phone: String?) { - TaxiServiceManager.getInstance().getPhoneCode(mContext, phone, - object : TaxiServiceCallback { + OchCommonServiceManager.getInstance().getPhoneCode(mContext, phone, + object : OchCommonServiceCallback { override fun onSuccess(data: BaseData?) { if (null != data && 0 == data.code) { // 获取验证码成功 @@ -103,13 +99,13 @@ object TaxiLoginModel{ fun gotoLogin(phone: String, code: String) { val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude) - TaxiServiceManager.getInstance().gotoLoginBycode(mContext, phone, code, location4Login, - object : TaxiServiceCallback { + OchCommonServiceManager.getInstance().gotoLoginBycode(mContext, phone, code, location4Login, + object : OchCommonServiceCallback { override fun onSuccess(data: TaxiLoginRespBean?) { if (null != data && 0 == data.code) { // 获取验证码成功 ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) - StatusManager.setLoginStatus(TaxiLoginStatusEnum.Login) + LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Login) iTaxiLoginCallback?.loginSuccess() } else { if (data != null) { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt new file mode 100644 index 0000000000..c935981982 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt @@ -0,0 +1,41 @@ +package com.mogo.och.common.module.biz.model + +import android.annotation.SuppressLint +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean +import com.mogo.och.common.module.biz.callback.ILoginCallback +import com.mogo.och.common.module.biz.callback.ILoginViewCallback +import com.mogo.och.common.module.biz.constant.LoginStatusManager + +@SuppressLint("StaticFieldLeak") +object OchCommonLoginStatusDefaultModel : OchCommonLoginStatusModel() { + + + const val TAG = "OchCommonLoginStatusDefaultModel" + + + var loginCallback: ILoginCallback? = null + var loginViewCallback: ILoginViewCallback? = null + + override fun loginSuccess(data: DriverStatusQueryRespBean?) { + CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginSuccess:${LoginStatusManager.isLogin()}") + if (LoginStatusManager.isLogin()) { + loginViewCallback?.hideLoginDialogFragment() + } else { + loginViewCallback?.showLoginDialogFragment() + } + loginCallback?.loginSuccess(data) + } + + override fun loginFail(isLogin: Boolean) { + CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginFail:$isLogin") + if (isLogin) { + loginViewCallback?.hideLoginDialogFragment() + } else { + loginViewCallback?.showLoginDialogFragment() + } + loginCallback?.loginFail(isLogin) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java new file mode 100644 index 0000000000..0b1e9f0bfb --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java @@ -0,0 +1,128 @@ +package com.mogo.och.common.module.biz.model; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; + +import android.content.Context; + +import com.mogo.commons.AbsMogoApplication; +import com.mogo.eagle.core.data.BaseData; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.eagle.core.utilcode.util.NetworkUtils; +import com.mogo.eagle.core.utilcode.util.ToastUtils; +import com.mogo.och.common.module.R; +import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; +import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean; +import com.mogo.och.common.module.biz.constant.LoginStatusManager; +import com.mogo.och.common.module.biz.constant.OchCommonConst; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; +import com.mogo.och.common.module.biz.network.OchCommonServiceManager; +import com.mogo.och.common.module.utils.ToastUtilsOch; + +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observable; +import io.reactivex.disposables.Disposable; + +public abstract class OchCommonLoginStatusModel { + + private static final String TAG = "OchCommonLoginStatusModel"; + + protected Context mContext; + + private Disposable subscribe; + + + public void init() { + mContext = AbsMogoApplication.getApp(); + queryCarStatus(); + } + + protected abstract void loginSuccess(DriverStatusQueryRespBean data); + + protected abstract void loginFail(boolean isLogin); + + /** + * 接单状态和登录状态查询 + * 1、初始化查询 + * 2、错误重试 + * 3、错误重试 + * 4、登出后重试 + * 5、变更出车状态查下 + * 6、变更出车状态查下 + * 7、网络状态变更后查询 + * 8、登录页面关闭后查下状态 + */ + public void queryCarStatus() { + OchCommonServiceManager.getInstance().queryDriverServiceStatus(mContext, + new OchCommonServiceCallback() { + @Override + public void onSuccess(DriverStatusQueryRespBean data) { + if (null != data && 0 == data.code) { + LoginStatusManager.setLoginStatus(data.data.driverStatus); + CallerLogger.INSTANCE.d(M_TAXI + TAG, "changeCarStatus:" + LoginStatusManager.getLoginStatus()); + loginSuccess(data); + } + } + + @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)); + } + 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.getInstance().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)) { + 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) { + ToastUtilsOch.showWithCodeMessage(code,msg); + } + }); + } + + public void release() { + if(subscribe!=null&&!subscribe.isDisposed()){ + subscribe.dispose(); + } + } + +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceApiNew.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceApiNew.java new file mode 100644 index 0000000000..da32fc85be --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceApiNew.java @@ -0,0 +1,63 @@ +package com.mogo.och.common.module.biz.network; +import com.mogo.eagle.core.data.BaseData; +import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; +import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean; +import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean; +import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean; +import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean; + +import io.reactivex.Observable; +import retrofit2.http.Body; +import retrofit2.http.GET; +import retrofit2.http.Header; +import retrofit2.http.Headers; +import retrofit2.http.POST; +import retrofit2.http.Query; + +/** + * Created by pangfan on 2021/8/19 + * + * 网约车-出租车接口定义 + */ +interface OchCommonServiceApiNew { + /** + * 获取手机验证码 + * + * @return + */ + @Headers( {"Content-type:application/json;charset=UTF-8"} ) +// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" ) + @POST( "/autopilot-car-hailing/driver/v2/driver/taxi/sendSms" ) + Observable getPhoneCode(@Header("appId") String appId + , @Header("ticket") String ticket, @Body TaxiLoginSmsReqBean data); + /** + * 通过验证码登录 + * @param appId + * @param ticket + * @param data + * @return + */ + @Headers( {"Content-type:application/json;charset=UTF-8"} ) + @POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/startOperation" ) + Observable gotoLoginBycode(@Header("appId") String appId + , @Header("ticket") String ticket, @Body TaxiLoginReqBean data); + /** + * 登出接口 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/autopilot-car-hailing/cab/flow/v1/driver/taxi/endOperation") + Observable logout(@Header("appId") String appId, @Header("ticket") String ticket, + @Body TaxiLogoutReqBean data); + + /** + * 接单状态和登录状态查询 + * @param sn + * @return + */ + @Headers( {"Content-type:application/json;charset=UTF-8"} ) +// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" ) + @GET( "/autopilot-car-hailing/operation/v1/driver/taxi/loginStatus" ) + Observable queryDriverServiceStatusAndLoginStatus(@Header ("appId") String appId + ,@Header("ticket") String ticket,@Query("sn") String sn); + +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceCallback.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceCallback.java new file mode 100644 index 0000000000..8433def5f0 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceCallback.java @@ -0,0 +1,18 @@ +package com.mogo.och.common.module.biz.network; + +/** + * @author congtaowang + * @since 2021/1/15 + * + * 修改订单状态回调接口 + */ +public interface OchCommonServiceCallback< T > { + + void onSuccess(T data); + + void onFail(int code, String msg); + + default void onError() { + + } +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java new file mode 100644 index 0000000000..668f781253 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java @@ -0,0 +1,143 @@ +package com.mogo.och.common.module.biz.network; + +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; + +import android.content.Context; + +import com.mogo.cloud.passport.MoGoAiCloudClient; +import com.mogo.cloud.passport.MoGoAiCloudClientConfig; +import com.mogo.eagle.core.data.BaseData; +import com.mogo.eagle.core.network.MoGoRetrofitFactory; +import com.mogo.eagle.core.network.RequestOptions; +import com.mogo.eagle.core.network.SubscribeImpl; +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; +import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; +import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean; +import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean; +import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean; +import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean; +import com.mogo.och.common.module.biz.constant.OchCommonConst; + +import io.reactivex.android.schedulers.AndroidSchedulers; +import io.reactivex.schedulers.Schedulers; + +/** + * Created by pangfan on 2021/8/19 + */ +public class OchCommonServiceManager { + private static final String TAG = OchCommonServiceManager.class.getSimpleName(); + + private static final class SingletonHolder { + private static final OchCommonServiceManager INSTANCE = new OchCommonServiceManager(); + } + + public static OchCommonServiceManager getInstance() { + return SingletonHolder.INSTANCE; + } + + private OchCommonServiceApiNew mOCHTaxiServiceApi; + + private OchCommonServiceManager() { + if (mOCHTaxiServiceApi == null){ + mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(OchCommonServiceApiNew.class); + } + } + + /** + * 获取手机验证码 + * @param context + * @param callback + */ + public void getPhoneCode(Context context,String phone, + OchCommonServiceCallback callback) { + mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId() + , MoGoAiCloudClientConfig.getInstance().getToken() + , new TaxiLoginSmsReqBean(phone)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(getSubscribeImpl(context, callback, "getPhoneCode")); + } + /** + * 通过验证码登录 + * @param context + * @param callback + */ + public void gotoLoginBycode(Context context, String phone, String code, + TaxiLoginReqBean.Location4Login location4Login, + OchCommonServiceCallback callback) { + String sn = MoGoAiCloudClientConfig.getInstance().getSn(); + mOCHTaxiServiceApi.gotoLoginBycode(MoGoAiCloudClientConfig.getInstance().getServiceAppId() + , MoGoAiCloudClientConfig.getInstance().getToken() + , new TaxiLoginReqBean(phone, code, sn, location4Login)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode")); + } + + /** + * 登出 + */ + public void logout(Context context, TaxiLogoutReqBean.Location4Login location4Login, OchCommonServiceCallback callback) { + mOCHTaxiServiceApi.logout( + MoGoAiCloudClientConfig.getInstance().getServiceAppId(), + MoGoAiCloudClientConfig.getInstance().getToken(), + new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login)) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(getSubscribeImpl(context, callback, "logout")); + } + + /** + * 接单状态和登录状态查询 + * @param context + * @param callback + */ + public void queryDriverServiceStatus(Context context, + OchCommonServiceCallback callback) { + if(MoGoAiCloudClientConfig.getInstance().getToken().isEmpty()){ + callback.onFail(OchCommonConst.WAIT_TAKEN,"等待令牌中请稍等"); + MoGoAiCloudClient.getInstance().refreshToken(); + return; + } + mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() + ,MoGoAiCloudClientConfig.getInstance().getToken() + ,MoGoAiCloudClientConfig.getInstance().getSn()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(getSubscribeImpl(context, callback, "queryDriverServiceStatus")); + } + + + + private SubscribeImpl getSubscribeImpl( + Context context, OchCommonServiceCallback callback, String apiName) { + return new SubscribeImpl(RequestOptions.create(context)) { + @Override + public void onSuccess(T o) { + super.onSuccess(o); + CallerLogger.INSTANCE.d(M_TAXI + TAG,apiName + ": onSuccess() " + o.msg); + if (callback != null) { + callback.onSuccess(o); + } + } + + @Override + public void onError(Throwable e) { + super.onError(e); + CallerLogger.INSTANCE.e(M_TAXI + TAG,apiName + ": onError() " + e.getMessage()); + if (callback != null) { + callback.onError(); + } + } + + @Override + public void onError(String message, int code) { + super.onError(message, code); + CallerLogger.INSTANCE.e(M_TAXI + TAG,String.format(apiName + ": onError() code = %d; message = %s;", code, message)); + if (callback != null) { + callback.onFail(code, message); + } + } + }; + } +} diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiLoginPresenter.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/presenter/OchCommonLoginPresenter.kt similarity index 79% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiLoginPresenter.kt rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/presenter/OchCommonLoginPresenter.kt index 1497683ddc..49b8446a77 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiLoginPresenter.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/presenter/OchCommonLoginPresenter.kt @@ -1,4 +1,4 @@ -package com.mogo.och.taxi.presenter +package com.mogo.och.common.module.biz.presenter import androidx.lifecycle.LifecycleOwner import com.mogo.commons.AbsMogoApplication @@ -7,10 +7,10 @@ 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.ToastUtils -import com.mogo.och.taxi.R -import com.mogo.och.taxi.callback.ITaxiLoginCallback -import com.mogo.och.taxi.model.TaxiLoginModel -import com.mogo.och.taxi.ui.TaxiLoginDialogFragment +import com.mogo.och.common.module.R +import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment +import com.mogo.och.common.module.biz.callback.ITaxiLoginCallback +import com.mogo.och.common.module.biz.model.OchCommonLoginModel import io.reactivex.Observable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.disposables.Disposable @@ -23,7 +23,7 @@ import java.util.concurrent.TimeUnit * * 描述 */ -class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) : +class OchCommonLoginPresenter(view: TaxiLoginDialogFragment?) : Presenter(view), ITaxiLoginCallback { private var countDownDisposable: Disposable? = null @@ -33,12 +33,12 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) : } private fun initListeners() { - TaxiLoginModel.init(AbsMogoApplication.getApp()) - TaxiLoginModel.setiTaxiLoginCallback(this) + OchCommonLoginModel.init(AbsMogoApplication.getApp()) + OchCommonLoginModel.setiTaxiLoginCallback(this) } fun getPhoneCode(phone:String){ - if(!TaxiLoginModel.hasInit()){ + if(!OchCommonLoginModel.hasInit()){ initListeners() } if (!RegexUtils.isMobileExact(phone)) { @@ -46,7 +46,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) : mView?.inputPhoneError() return } - TaxiLoginModel.getPhoneCode(phone) + OchCommonLoginModel.getPhoneCode(phone) } override fun onCreate(owner: LifecycleOwner) { @@ -58,7 +58,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) : override fun onDestroy(owner: LifecycleOwner) { super.onDestroy(owner) - TaxiLoginModel.release() + OchCommonLoginModel.release() countDownDisposable?.let { if (!it.isDisposed) { it.dispose() @@ -67,7 +67,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) : } companion object { - private val TAG = TaxiLoginPresenter::class.java.simpleName + private val TAG = OchCommonLoginPresenter::class.java.simpleName } override fun getPhoneCodeSuccess() { @@ -94,7 +94,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) : } fun gotoLogin(phone: String, code: String) { - if(!TaxiLoginModel.hasInit()){ + if(!OchCommonLoginModel.hasInit()){ initListeners() } if (!RegexUtils.isMobileExact(phone)) { @@ -107,6 +107,6 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) : return } mView?.closeSoftInput() - TaxiLoginModel.gotoLogin(phone,code) + OchCommonLoginModel.gotoLogin(phone,code) } } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/presenter/OchCommonLoginStatusDefaultPresenter.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/presenter/OchCommonLoginStatusDefaultPresenter.kt new file mode 100644 index 0000000000..a4c77ec190 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/presenter/OchCommonLoginStatusDefaultPresenter.kt @@ -0,0 +1,48 @@ +package com.mogo.och.common.module.biz.presenter + +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleObserver +import androidx.lifecycle.LifecycleOwner +import androidx.lifecycle.OnLifecycleEvent +import com.mogo.och.common.module.biz.callback.ILoginCallback +import com.mogo.och.common.module.biz.callback.ILoginViewCallback +import com.mogo.och.common.module.biz.model.OchCommonLoginStatusDefaultModel + +/** + * @author yangyakun + * @since 2020-09-19 + */ +class OchCommonLoginStatusDefaultPresenter : LifecycleObserver { + private var isFirstShow = true + + @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) + fun onCreate(owner: LifecycleOwner) { + OchCommonLoginStatusDefaultModel.init() + } + + @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) + fun onResume(owner: LifecycleOwner) { + if (isFirstShow) { + isFirstShow = false + } else { + queryLoginStatus() + } + } + @OnLifecycleEvent(Lifecycle.Event.ON_DESTROY) + fun onDestory(owner: LifecycleOwner) { + OchCommonLoginStatusDefaultModel.release() + } + + fun queryLoginStatus() { + OchCommonLoginStatusDefaultModel.queryCarStatus() + } + + fun logOut(mLatitude:Double,mLongitude:Double){ + OchCommonLoginStatusDefaultModel.logout(mLatitude, mLongitude) + } + + fun setLoginCallback(loginCallback: ILoginCallback?,loginViewCallback: ILoginViewCallback?){ + OchCommonLoginStatusDefaultModel.loginCallback = loginCallback + OchCommonLoginStatusDefaultModel.loginViewCallback = loginViewCallback + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/provider/LoginService.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/provider/LoginService.kt new file mode 100644 index 0000000000..a311da107f --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/provider/LoginService.kt @@ -0,0 +1,29 @@ +package com.mogo.och.common.module.biz.provider + +import androidx.fragment.app.Fragment +import com.alibaba.android.arouter.facade.template.IProvider +import com.mogo.och.common.module.biz.callback.ILoginCallback + +interface LoginService : IProvider { + /** + * 注册页面 + * @param fragment 主页面 + * @param callback 回调 + */ + fun registerFragment(fragment: Fragment?,loginCallback: ILoginCallback?) + + fun unRegisterFragment() + + /** + * 查询登录状态 + */ + fun queryLoginStatus():Boolean + + fun queryLoginStatusByNet() + + /** + * 登出 + */ + fun loginOut(mLatitude:Double,mLongitude:Double) + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/provider/LoginServiceImpl.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/provider/LoginServiceImpl.kt new file mode 100644 index 0000000000..dcbe881200 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/provider/LoginServiceImpl.kt @@ -0,0 +1,109 @@ +package com.mogo.och.common.module.biz.provider + +import android.content.Context +import android.content.DialogInterface +import androidx.fragment.app.DialogFragment +import androidx.fragment.app.Fragment +import com.alibaba.android.arouter.facade.annotation.Route +import com.mogo.eagle.core.function.call.hmi.CallerHmiManager +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.AppStateManager.currentActivity +import com.mogo.och.common.module.biz.callback.ILoginCallback +import com.mogo.och.common.module.biz.callback.ILoginViewCallback +import com.mogo.och.common.module.biz.constant.LoginStatusManager +import com.mogo.och.common.module.biz.presenter.OchCommonLoginStatusDefaultPresenter +import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment +import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment.Companion.newInstance +import java.lang.ref.WeakReference + +@Route(path = "/ochbiz/common/login") +class LoginServiceImpl : LoginService,ILoginViewCallback { + + companion object{ + const val TAG = "LoginServiceImpl" + } + + private var fragment: Fragment?=null + private var taxiLoginDialogFragment: WeakReference? = null + private var presenter: OchCommonLoginStatusDefaultPresenter?=null + + override fun init(context: Context) { + + } + + override fun registerFragment(fragment: Fragment?,loginCallback: ILoginCallback?) { + presenter = OchCommonLoginStatusDefaultPresenter() + this.fragment = fragment + presenter?.let { + it.setLoginCallback(loginCallback, this) + this.fragment?.lifecycle?.addObserver(it) + } + + } + + override fun unRegisterFragment() { + this.presenter?.let { + it.setLoginCallback(null,null) + this.fragment?.lifecycle?.removeObserver(it) + } + this.fragment = null + } + + + override fun showLoginDialogFragment() { + fragment?.let { + CallerHmiManager.hideToolsView() + val parentFragmentManager = it.parentFragmentManager + val fragmentByTag: Fragment? = parentFragmentManager.findFragmentByTag(TAG) + if (fragmentByTag is DialogFragment) { + if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) { + return + } + if (fragmentByTag.dialog != null && fragmentByTag.isAdded) { + if (currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用 + d(SceneConstant.M_TAXI + TAG, "showLoginDialogFragment 权限验证") + return + } + } + } + + if (taxiLoginDialogFragment?.get() == null) { + taxiLoginDialogFragment = WeakReference(newInstance()) + } + val taxiLoginDialog = taxiLoginDialogFragment?.get() + if (taxiLoginDialog != null) { + if (taxiLoginDialog.dialog != null && taxiLoginDialog.dialog!!.isShowing) { + return + } + if (taxiLoginDialog.isAdded) { //解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 + parentFragmentManager.beginTransaction().remove(taxiLoginDialog) + .commitAllowingStateLoss() + } + d(SceneConstant.M_TAXI + TAG, "showLoginDialogFragment 展示登录界面") + taxiLoginDialog.show(parentFragmentManager, TAG) + taxiLoginDialog.setOnDismissListener(DialogInterface.OnDismissListener { dialog: DialogInterface? -> + taxiLoginDialogFragment?.clear() + presenter?.queryLoginStatus() + }) + } + } + } + override fun hideLoginDialogFragment() { + d(SceneConstant.M_TAXI + TAG, "hideLoginDialogFragment 隐藏登录界面") + if (taxiLoginDialogFragment?.get() != null) { + taxiLoginDialogFragment?.get()?.dismissAllowingStateLoss() + } + } + override fun queryLoginStatus():Boolean { + return LoginStatusManager.isLogin() + } + + override fun queryLoginStatusByNet() { + presenter?.queryLoginStatus() + } + + override fun loginOut(mLatitude:Double,mLongitude:Double) { + presenter?.logOut(mLatitude,mLongitude) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt similarity index 96% rename from OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt rename to OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt index 19da74fbae..b08e15472d 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/ui/TaxiLoginDialogFragment.kt @@ -1,4 +1,4 @@ -package com.mogo.och.taxi.ui +package com.mogo.och.common.module.biz.ui import android.content.DialogInterface import android.graphics.Rect @@ -15,7 +15,6 @@ import androidx.core.widget.addTextChangedListener import androidx.fragment.app.DialogFragment import androidx.fragment.app.FragmentManager import androidx.fragment.app.FragmentTransaction -import com.mogo.cloud.passport.MoGoAiCloudClient import com.mogo.cloud.passport.MoGoAiCloudClientConfig import com.mogo.commons.mvp.MvpDialogFragment import com.mogo.eagle.core.utilcode.kotlin.onClick @@ -23,16 +22,15 @@ 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.BarUtils import com.mogo.eagle.core.utilcode.util.KeyboardUtils -import com.mogo.och.taxi.R -import com.mogo.och.taxi.constant.TaxiConst -import com.mogo.och.taxi.presenter.TaxiLoginPresenter +import com.mogo.och.common.module.R +import com.mogo.och.common.module.biz.presenter.OchCommonLoginPresenter /** * @author: yangyakun * @date: 2022/8/15 */ -class TaxiLoginDialogFragment : MvpDialogFragment(), +class TaxiLoginDialogFragment : MvpDialogFragment(), DialogInterface.OnKeyListener { lateinit var clMain: ConstraintLayout @@ -169,8 +167,8 @@ class TaxiLoginDialogFragment : MvpDialogFragment + + #2961F2 + #14FF0000 + #FF0000 + #666666 + #86A5F7 + #111533 + #878890 + #EF262C + #4D000000 + + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/values/strings.xml b/OCH/mogo-och-common-module/src/main/res/values/strings.xml new file mode 100644 index 0000000000..f2d52ad1eb --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/values/strings.xml @@ -0,0 +1,17 @@ + + + + 欢迎您登录 + 登录 + 获取验证码 + 请输入验证码 + 获取验证码成功 + 登录成功 + 请输入正确的手机号 + 请输入正确的验证码 + 请输入手机号 + 请输入手机号 + + 网络异常,请稍后重试 + 请求出现异常,请稍后重试 + \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/res/values/styles.xml b/OCH/mogo-och-common-module/src/main/res/values/styles.xml new file mode 100644 index 0000000000..b205c0fd04 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/res/values/styles.xml @@ -0,0 +1,21 @@ + + + + + \ No newline at end of file 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 ac0eddc08a..b51f44ec35 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 @@ -6,9 +6,7 @@ package com.mogo.och.taxi.callback; * Model->Presenter回调:接单车状态变更 登录状态变更 */ 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/constant/TaxiConst.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt index 41a1280592..2a399bb339 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxiConst.kt @@ -81,6 +81,5 @@ class TaxiConst { const val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L - const val WAIT_TAKEN = 100046 } } \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxtServingStatusManager.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxtServingStatusManager.kt new file mode 100644 index 0000000000..7a42236e8b --- /dev/null +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/constant/TaxtServingStatusManager.kt @@ -0,0 +1,38 @@ +package com.mogo.och.taxi.constant + +object TaxtServingStatusManager { + + /** + * 接单状态 + */ + private var openOrderStatus: TaxiOpenOrderStatusEnum = TaxiOpenOrderStatusEnum.None + + // region 是否可用接单 + @JvmStatic + fun isOpeningOrderStatus():Boolean{ + if(openOrderStatus==TaxiOpenOrderStatusEnum.Ordering){ + return true + } + return false + } + @JvmStatic + fun setOpenOrderStatus(status: Int) { + when (status) { + 0 -> { + this.openOrderStatus = TaxiOpenOrderStatusEnum.UnOrdering + } + 1 -> { + this.openOrderStatus = TaxiOpenOrderStatusEnum.Ordering + } + else -> { + this.openOrderStatus = TaxiOpenOrderStatusEnum.None + } + } + } + @JvmStatic + fun getOpenOrderStatus(): TaxiOpenOrderStatusEnum { + return openOrderStatus + } + + //endregion +} \ No newline at end of file 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 06b77b0491..dc0f367ad6 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 @@ -13,6 +13,7 @@ import android.net.ConnectivityManager; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import com.alibaba.android.arouter.launcher.ARouter; import com.amap.api.maps.model.LatLng; import com.elegant.network.utils.GsonUtil; import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager; @@ -34,12 +35,13 @@ import com.mogo.eagle.core.utilcode.util.NetworkUtils; import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; +import com.mogo.och.common.module.biz.constant.LoginStatusManager; +import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.common.module.utils.ToastUtilsOch; import com.mogo.och.taxi.R; import com.mogo.och.taxi.bean.DriverServiceDataRespBean; -import com.mogo.och.taxi.bean.DriverStatusQueryRespBean; import com.mogo.och.taxi.bean.OrderGrabRespBean; import com.mogo.och.taxi.bean.OrderGrabStatusQueryRespBean; import com.mogo.och.taxi.bean.OrderQueryRespBean; @@ -50,19 +52,17 @@ import com.mogo.och.taxi.bean.OrdersListQueryRespBean; import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean; import com.mogo.och.taxi.bean.QueryOrderRouteResp; import com.mogo.och.taxi.bean.TaxiDataBaseRespBean; -import com.mogo.och.taxi.bean.TaxiLogoutReqBean; import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean; import com.mogo.och.taxi.callback.ITaxiADASStatusCallback; import com.mogo.och.taxi.callback.ITaxiCarStatusCallback; import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback; import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback; -import com.mogo.och.taxi.constant.TaxiDriverRoleEnum; import com.mogo.och.taxi.constant.TaxiConst; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; import com.mogo.och.taxi.constant.TaxiOrderTypeEnum; +import com.mogo.och.taxi.constant.TaxtServingStatusManager; import com.mogo.och.taxi.network.TaxiServiceCallback; import com.mogo.och.taxi.network.TaxiServiceManager; -import com.mogo.och.taxi.utils.StatusManager; import com.mogo.och.taxi.utils.TaxiAnalyticsManager; import com.mogo.och.taxi.utils.OrderUtil; import com.mogo.aicloud.services.socket.IMogoLifecycleListener; @@ -79,10 +79,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Collections; import java.util.List; -import java.util.concurrent.TimeUnit; -import io.reactivex.Observable; -import io.reactivex.disposables.Disposable; import io.reactivex.exceptions.UndeliverableException; import io.reactivex.functions.Consumer; import io.reactivex.plugins.RxJavaPlugins; @@ -119,7 +116,6 @@ public class TaxiModel { private ITaxiCarStatusCallback mCarStatusCallback; //Model->Presenter:接单状态、登录状态和司机今日接单状态 private ITaxiControllerStatusCallback mControllerStatusCallback; //Model->Presenter:VR mode等 private ITaxiOrderStatusCallback mOrderStatusCallback; //Model->Presenter:订单变更 - private Disposable subscribe; private volatile boolean isRestartAutopilot = false; @@ -127,6 +123,8 @@ public class TaxiModel { private double mLongitude, mLatitude; + private LoginService loginService; + private TaxiModel() { } @@ -149,6 +147,7 @@ public class TaxiModel { public void init(Context context) { mContext = context.getApplicationContext(); initListeners(); + loginService = (LoginService) ARouter.getInstance().build("/ochbiz/common/login").navigation(); // IMogoServiceApis apis = MogoApisHandler.getInstance().getApis(); // apis.getSocketManagerApi(mContext).init(mContext, DebugConfig.getSocketAppId()); @@ -193,16 +192,13 @@ public class TaxiModel { CallerLogger.INSTANCE.d(M_TAXI + TAG, "Undeliverable exception"); } }); - queryCarStatus(); } public void release() { startOrStopOrderLoop(false); startOrStopCalculateRouteInfo(false); releaseListeners(); - if(subscribe!=null&&!subscribe.isDisposed()){ - subscribe.dispose(); - } + loginService = null; } private void initListeners() { @@ -248,7 +244,7 @@ public class TaxiModel { CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener); } - private void startOrStopOrderLoop(boolean start) { + public void startOrStopOrderLoop(boolean start) { CallerLogger.INSTANCE.d(M_TAXI + TAG, "startOrStopOrderLoop() " + start); if (start) { TaxiModelLoopManager.getInstance().startInAndWaitOrdersLoop(); @@ -261,82 +257,18 @@ public class TaxiModel { } } - /** - * 接单状态和登录状态查询 - * 1、初始化查下状态 - * 2、点击更新接单状态 如果是初始化状态就查下状态 - * 3、点击更新接单状态后 查询状态 - * 4、网络状态波动时 查询状态 - * 5、登出后更新状态 - */ - public void queryCarStatus() { - TaxiServiceManager.getInstance().queryDriverServiceStatus(mContext, - new TaxiServiceCallback() { - @Override - public void onSuccess(DriverStatusQueryRespBean data) { - if (null != data && 0 == data.code) { - StatusManager.setLoginStatus(data.data.driverStatus); - StatusManager.setOpenOrderStatus(data.data.servingStatus); - //更新view - CallerLogger.INSTANCE.d(M_TAXI + TAG, "changeCarStatus:" + StatusManager.getLoginStatus()); - startOrStopOrderLoop(StatusManager.isLogin()&&StatusManager.isOpeningOrderStatus()); - if(mCarStatusCallback!=null) { - mCarStatusCallback.onCarLoginStatusChange(StatusManager.isLogin()); - } - String role = ""; - if (TaxiDriverRoleEnum.DEMO.getCode() == data.data.purpose) { - role = TaxiConst.DEMO_USER; - } else if (TaxiDriverRoleEnum.TEST.getCode() == data.data.purpose) { - role = TaxiConst.TEST_USER; - } - if (mCarStatusCallback != null) { - mCarStatusCallback.onCarStatusChanged(StatusManager.isOpeningOrderStatus(), role); - } - - } - } - - @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)); - } - subscribe = Observable.timer(5, TimeUnit.SECONDS).subscribe(aLong -> { - queryCarStatus(); - }); - } - - @Override - public void onFail(int code, String msg) { - ToastUtilsOch.showWithCodeMessage(code,msg); - if(code==TaxiConst.WAIT_TAKEN){ - subscribe = Observable.timer(3, TimeUnit.SECONDS).subscribe(aLong -> { - queryCarStatus(); - }); - }else { - if (mCarStatusCallback != null) { - mCarStatusCallback.onCarLoginStatusChange(StatusManager.isLogin()); - } - } - } - }); - } - //更新接单状态 public void updateCarStatus() { - if(!StatusManager.isLogin()){ - queryCarStatus(); + if(!LoginStatusManager.isLogin()){ + loginService.queryLoginStatusByNet(); return; } - TaxiServiceManager.getInstance().changeOrderServing(mContext,StatusManager.isOpeningOrderStatus(), + TaxiServiceManager.getInstance().changeOrderServing(mContext,TaxtServingStatusManager.isOpeningOrderStatus(), new TaxiServiceCallback() { @Override public void onSuccess(BaseData data) { if (null != data && 0 == data.code) { - //StatusManager.changeOrderStatus(); - queryCarStatus(); + loginService.queryLoginStatusByNet(); } } @@ -1002,8 +934,8 @@ public class TaxiModel { CallerLogger.INSTANCE.d(M_TAXI + TAG, "onIntentReceived = %s", intentStr); if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intentStr)) { if (NetworkUtils.isConnected(mContext)) { - startOrStopOrderLoop(StatusManager.isLogin()&&StatusManager.isOpeningOrderStatus()); - queryCarStatus(); + startOrStopOrderLoop(LoginStatusManager.isLogin()&&TaxtServingStatusManager.isOpeningOrderStatus()); + loginService.queryLoginStatusByNet(); } } } @@ -1580,30 +1512,6 @@ public class TaxiModel { // 登出 public void logout() { - TaxiLogoutReqBean.Location4Login location4Login = new TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude); - TaxiServiceManager.getInstance().logout(mContext,location4Login, - new TaxiServiceCallback() { - @Override - public void onSuccess(BaseData data) { - if (null != data && 0 == data.code) { - mCarStatusCallback.onCarLoginStatusChange(false); - queryCarStatus(); - } - } - - @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) { - ToastUtilsOch.showWithCodeMessage(code,msg); - } - }); + loginService.loginOut(mLatitude,mLongitude); } } 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 8b29d4039d..cbb3885cf6 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 @@ -2,7 +2,6 @@ package com.mogo.och.taxi.network; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.taxi.bean.CarHeartbeatReqBean; import com.mogo.och.taxi.bean.DriverServiceDataRespBean; -import com.mogo.och.taxi.bean.DriverStatusQueryRespBean; import com.mogo.och.taxi.bean.DriverStatusUpdateReqBean; import com.mogo.och.taxi.bean.OrderCancelReqBean; import com.mogo.och.taxi.bean.OrderGrabReqBean; @@ -20,10 +19,6 @@ import com.mogo.och.taxi.bean.OrdersListQueryRespBean; import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean; import com.mogo.och.taxi.bean.QueryOrderRouteResp; import com.mogo.och.taxi.bean.TaxiDataBaseRespBean; -import com.mogo.och.taxi.bean.TaxiLoginReqBean; -import com.mogo.och.taxi.bean.TaxiLoginRespBean; -import com.mogo.och.taxi.bean.TaxiLoginSmsReqBean; -import com.mogo.och.taxi.bean.TaxiLogoutReqBean; import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean; import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean; @@ -290,35 +285,6 @@ interface TaxiServiceApiNew { Observable orderCompleted(@Header ("appId") String appId , @Header("ticket") String ticket,@Body TaxiOrPassengerReadyReqBean data); - - /** - * 获取手机验证码 - * - * @return - */ - @Headers( {"Content-type:application/json;charset=UTF-8"} ) -// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" ) - @POST( "/autopilot-car-hailing/driver/v2/driver/taxi/sendSms" ) - Observable getPhoneCode(@Header ("appId") String appId - ,@Header("ticket") String ticket,@Body TaxiLoginSmsReqBean data); - /** - * 通过验证码登录 - * @param appId - * @param ticket - * @param data - * @return - */ - @Headers( {"Content-type:application/json;charset=UTF-8"} ) - @POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/startOperation" ) - Observable gotoLoginBycode(@Header ("appId") String appId - , @Header("ticket") String ticket, @Body TaxiLoginReqBean data); - /** - * 登出接口 - */ - @Headers({"Content-type:application/json;charset=UTF-8"}) - @POST("/autopilot-car-hailing/cab/flow/v1/driver/taxi/endOperation") - Observable logout(@Header ("appId") String appId,@Header("ticket") String ticket, - @Body TaxiLogoutReqBean data); /** * 暂停接单 * @param data @@ -339,15 +305,4 @@ interface TaxiServiceApiNew { @POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/resetOrderServing" ) Observable resetOrderServing(@Header ("appId") String appId,@Header("ticket") String ticket ,@Body DriverStatusUpdateReqBean data); - /** - * 接单状态和登录状态查询 - * @param sn - * @return - */ - @Headers( {"Content-type:application/json;charset=UTF-8"} ) -// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" ) - @GET( "/autopilot-car-hailing/operation/v1/driver/taxi/loginStatus" ) - Observable queryDriverServiceStatusAndLoginStatus(@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 333ca64fd9..5c209c7b87 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 @@ -4,7 +4,6 @@ import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAX import android.content.Context; -import com.mogo.cloud.passport.MoGoAiCloudClient; import com.mogo.cloud.passport.MoGoAiCloudClientConfig; import com.mogo.eagle.core.data.BaseData; import com.mogo.eagle.core.network.MoGoRetrofitFactory; @@ -13,7 +12,6 @@ import com.mogo.eagle.core.network.SubscribeImpl; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.och.taxi.bean.CarHeartbeatReqBean; import com.mogo.och.taxi.bean.DriverServiceDataRespBean; -import com.mogo.och.taxi.bean.DriverStatusQueryRespBean; import com.mogo.och.taxi.bean.DriverStatusUpdateReqBean; import com.mogo.och.taxi.bean.OrderCancelReqBean; import com.mogo.och.taxi.bean.OrderGrabReqBean; @@ -31,10 +29,6 @@ import com.mogo.och.taxi.bean.OrdersListQueryRespBean; import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean; import com.mogo.och.taxi.bean.QueryOrderRouteResp; import com.mogo.och.taxi.bean.TaxiDataBaseRespBean; -import com.mogo.och.taxi.bean.TaxiLoginReqBean; -import com.mogo.och.taxi.bean.TaxiLoginRespBean; -import com.mogo.och.taxi.bean.TaxiLoginSmsReqBean; -import com.mogo.och.taxi.bean.TaxiLogoutReqBean; import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean; import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean; import com.mogo.och.taxi.constant.TaxiConst; @@ -263,26 +257,6 @@ public class TaxiServiceManager { .subscribe(getSubscribeImpl(context, callback, "updateDriverServiceStatus")); } - /** - * 接单状态和登录状态查询 - * @param context - * @param callback - */ - public void queryDriverServiceStatus(Context context, - TaxiServiceCallback callback) { - if(MoGoAiCloudClientConfig.getInstance().getToken().isEmpty()){ - callback.onFail(TaxiConst.WAIT_TAKEN,"等待令牌中请稍等"); - MoGoAiCloudClient.getInstance().refreshToken(); - return; - } - mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryDriverServiceStatus")); - } - /** * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 * @param context @@ -455,52 +429,6 @@ public class TaxiServiceManager { } - /** - * 获取手机验证码 - * @param context - * @param callback - */ - public void getPhoneCode(Context context,String phone, - TaxiServiceCallback callback) { - mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginSmsReqBean(phone)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "getPhoneCode")); - } - /** - * 通过验证码登录 - * @param context - * @param callback - */ - public void gotoLoginBycode(Context context, String phone, String code, - TaxiLoginReqBean.Location4Login location4Login, - TaxiServiceCallback callback) { - String sn = MoGoAiCloudClientConfig.getInstance().getSn(); - mOCHTaxiServiceApi.gotoLoginBycode(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginReqBean(phone, code, sn, location4Login)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode")); - } - - /** - * 登出 - */ - public void logout(Context context, TaxiLogoutReqBean.Location4Login location4Login, TaxiServiceCallback callback) { - mOCHTaxiServiceApi.logout( - MoGoAiCloudClientConfig.getInstance().getServiceAppId(), - MoGoAiCloudClientConfig.getInstance().getToken(), - new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "logout")); - } - - - private SubscribeImpl getSubscribeImpl( Context context, TaxiServiceCallback callback, String apiName) { return new SubscribeImpl(RequestOptions.create(context)) { 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 5bd2c9cb2f..cd1d701673 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 @@ -15,7 +15,11 @@ import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; +import com.mogo.och.common.module.biz.callback.ILoginCallback; +import com.mogo.och.common.module.biz.constant.LoginStatusManager; import com.mogo.och.taxi.constant.TaxiConst; +import com.mogo.och.taxi.constant.TaxiDriverRoleEnum; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; import com.mogo.och.taxi.bean.OrderQueryRespBean; import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean; @@ -23,6 +27,7 @@ import com.mogo.och.taxi.callback.ITaxiADASStatusCallback; import com.mogo.och.taxi.callback.ITaxiCarStatusCallback; import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback; import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback; +import com.mogo.och.taxi.constant.TaxtServingStatusManager; import com.mogo.och.taxi.model.TaxiModel; import com.mogo.och.taxi.ui.TaxiFragment; @@ -37,11 +42,10 @@ import java.util.List; * 描述 */ public class TaxiPresenter extends Presenter implements ITaxiADASStatusCallback, - ITaxiCarStatusCallback, ITaxiOrderStatusCallback, ITaxiControllerStatusCallback { + ITaxiCarStatusCallback, ITaxiOrderStatusCallback, ITaxiControllerStatusCallback, ILoginCallback { private static final String TAG = TaxiPresenter.class.getSimpleName(); - private boolean isFirstShow = true; private int preAutopilotStatus = 0; public TaxiPresenter(TaxiFragment view) { @@ -64,16 +68,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS TaxiModel.getInstance().release(); } - @Override - public void onResume(@NonNull LifecycleOwner owner) { - super.onResume(owner); - if(isFirstShow){ - isFirstShow = false; - }else { - TaxiModel.getInstance().queryCarStatus(); - } - } - private void initListeners() { TaxiModel.getInstance().setADASStatusCallback(this); TaxiModel.getInstance().setCarStatusCallback(this); @@ -113,13 +107,6 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS TaxiModel.getInstance().jumpPassengerCheckDone(); } - /** - * 登录成功后查询登录状态 - */ - public void queryLoginStatus() { - TaxiModel.getInstance().queryCarStatus(); - } - /** * 司机确认车辆环境可开启自动驾驶 */ @@ -218,25 +205,11 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS preAutopilotStatus = IMoGoAutopilotStatusListener.STATUS_PARALLEL_DRIVING; } - @Override - public void onCarStatusChanged(boolean inOperation, String role) { - runOnUIThread(() -> mView.updateOperationStatus(inOperation,role)); - } - @Override public void onServiceDataUpdate(long dailyTimeDuration, long dailyOrderNum) { runOnUIThread(() -> mView.onServiceDataUpdate(dailyTimeDuration,dailyOrderNum)); } - @Override - public void onCarLoginStatusChange(boolean isLogin) { - if(isLogin){ - mView.hideLoginDialogFragment(); - }else { - mView.showLoginDialogFragment(); - } - } - @Override public void onOrdersInServiceChanged(@NonNull @NotNull List inServiceList) { @@ -337,4 +310,29 @@ public class TaxiPresenter extends Presenter implements ITaxiADASS }); } } + + @Override + public void loginSuccess(DriverStatusQueryRespBean data) { + //设置 接单状态 + TaxtServingStatusManager.setOpenOrderStatus(data.data.servingStatus); + //设置 是否启动订单轮训 + TaxiModel.getInstance().startOrStopOrderLoop(LoginStatusManager.isLogin()&&TaxtServingStatusManager.isOpeningOrderStatus()); + + // 设置当前用户角色 + String role = ""; + if (TaxiDriverRoleEnum.DEMO.getCode() == data.data.purpose) { + role = TaxiConst.DEMO_USER; + } else if (TaxiDriverRoleEnum.TEST.getCode() == data.data.purpose) { + role = TaxiConst.TEST_USER; + } + String finalRole = role; + runOnUIThread(() -> { + mView.updateOperationStatus(TaxtServingStatusManager.isOpeningOrderStatus(), finalRole); + }); + } + + @Override + public void loginFail(boolean isLogin) { + + } } 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 955e7d221b..e35ca7e733 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 @@ -13,16 +13,13 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.RequiresApi; -import androidx.fragment.app.DialogFragment; -import androidx.fragment.app.Fragment; import androidx.fragment.app.FragmentTransaction; -import com.mogo.commons.debug.DebugConfig; +import com.alibaba.android.arouter.launcher.ARouter; 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.eagle.core.utilcode.util.AppStateManager; import com.mogo.module.common.MogoApisHandler; +import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.taxi.R; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; import com.mogo.och.taxi.bean.OrderQueryRespBean; @@ -59,10 +56,19 @@ public class TaxiFragment extends BaseTaxiTabFragment taxiLoginDialogFragment = null; private WeakReference personalDialogFragment = null; protected double mCurLatitude = 0.0; protected double mCurLongitude = 0.0; + private LoginService loginService; + + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + loginService = (LoginService) ARouter.getInstance().build("/ochbiz/common/login").navigation(); + if(loginService!=null){ + loginService.registerFragment(this, getPresenter()); + } + } @Nullable @Override @@ -164,6 +170,8 @@ public class TaxiFragment extends BaseTaxiTabFragment(TaxiLoginDialogFragment.newInstance()); - } - TaxiLoginDialogFragment taxiLoginDialog = taxiLoginDialogFragment.get(); - if(taxiLoginDialog!=null) { - if (taxiLoginDialog.getDialog() != null && taxiLoginDialog.getDialog().isShowing()) { - return; - } - if (taxiLoginDialog.isAdded()) {//解决方法就是添加这行代码,如果已经添加了,就移除掉然后再show,就不会出现Fragment already added的错误了。 - getParentFragmentManager().beginTransaction().remove(taxiLoginDialog).commitAllowingStateLoss(); - } - CallerLogger.INSTANCE.d(M_TAXI + TAG,"showLoginDialogFragment 展示登录界面"); - taxiLoginDialog.show(getParentFragmentManager(), TaxiLoginDialogFragment.Companion.getTAG()); - taxiLoginDialog.setOnDismissListener(dialog -> { - taxiLoginDialogFragment.clear(); - mPresenter.queryLoginStatus(); - }); - } - } - public void hideLoginDialogFragment(){ - CallerLogger.INSTANCE.d(M_TAXI + TAG,"hideLoginDialogFragment 隐藏登录界面"); - if(taxiLoginDialogFragment!=null&&taxiLoginDialogFragment.get()!=null){ - taxiLoginDialogFragment.get().dismissAllowingStateLoss(); - } - } - private void testRouteInfoUpload() { TPRouteDataTestUtils.converToRouteData(); } - /** - * Taxi调试信息:订单、线路、轨迹等信息 - * - * START - */ + //region Taxi调试信息:订单、线路、轨迹等信息 private View testBar; private TextView testCurOrderId; private TextView testCurLineId; @@ -474,7 +436,6 @@ public class TaxiFragment extends BaseTaxiTabFragment { - this.loginStatus = TaxiLoginStatusEnum.Logout - } - 1 -> { - this.loginStatus = TaxiLoginStatusEnum.Login - } - else -> { - this.loginStatus = TaxiLoginStatusEnum.None - } - } - } - @JvmStatic - fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) { - this.loginStatus = loginStatus - } - @JvmStatic - fun getLoginStatus(): TaxiLoginStatusEnum { - return loginStatus - } - @JvmStatic - fun isLogin():Boolean { - if(loginStatus==TaxiLoginStatusEnum.Login){ - return true - } - return false - } - // region 是否可用接单 - @JvmStatic - fun isOpeningOrderStatus():Boolean{ - if(openOrderStatus==TaxiOpenOrderStatusEnum.Ordering){ - return true - } - return false - } - @JvmStatic - fun setOpenOrderStatus(status: Int) { - when (status) { - 0 -> { - this.openOrderStatus = TaxiOpenOrderStatusEnum.UnOrdering - } - 1 -> { - this.openOrderStatus = TaxiOpenOrderStatusEnum.Ordering - } - else -> { - this.openOrderStatus = TaxiOpenOrderStatusEnum.None - } - } - } - @JvmStatic - fun getOpenOrderStatus(): TaxiOpenOrderStatusEnum { - return openOrderStatus - } - - //endregion -} \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi-2560x1600/taxi_ic_login_bg.webp b/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi-2560x1600/taxi_ic_login_bg.webp deleted file mode 100644 index 7af7432551..0000000000 Binary files a/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi-2560x1600/taxi_ic_login_bg.webp and /dev/null differ diff --git a/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/taxi_ic_login_bg.webp b/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/taxi_ic_login_bg.webp deleted file mode 100644 index 7af7432551..0000000000 Binary files a/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi/taxi_ic_login_bg.webp and /dev/null differ diff --git a/OCH/mogo-och-taxi/src/main/res/values/colors.xml b/OCH/mogo-och-taxi/src/main/res/values/colors.xml index 743794b7f8..3aa7cfc710 100644 --- a/OCH/mogo-och-taxi/src/main/res/values/colors.xml +++ b/OCH/mogo-och-taxi/src/main/res/values/colors.xml @@ -25,14 +25,4 @@ #657EE2 - #2961F2 - #14FF0000 - #FF0000 - #666666 - #86A5F7 - #111533 - #878890 - #EF262C - #4D000000 - \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/res/values/strings.xml b/OCH/mogo-och-taxi/src/main/res/values/strings.xml index b24bdb28d8..1c2e79dfea 100644 --- a/OCH/mogo-och-taxi/src/main/res/values/strings.xml +++ b/OCH/mogo-och-taxi/src/main/res/values/strings.xml @@ -30,17 +30,6 @@ 自动驾驶状态为0不可用 司机端未确认可以开启自动驾驶 - 欢迎您登录 - 登录 - 获取验证码 - 请输入验证码 - 获取验证码成功 - 登录成功 - 请输入正确的手机号 - 请输入正确的验证码 - 请输入手机号 - 请输入手机号 - 网络异常,请稍后重试 请求出现异常,请稍后重试 \ No newline at end of file diff --git a/OCH/mogo-och-taxi/src/main/res/values/styles.xml b/OCH/mogo-och-taxi/src/main/res/values/styles.xml index ec73feaae9..bd2964b922 100644 --- a/OCH/mogo-och-taxi/src/main/res/values/styles.xml +++ b/OCH/mogo-och-taxi/src/main/res/values/styles.xml @@ -23,22 +23,4 @@ - - \ No newline at end of file