[2110] 抽取taxi到common
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
@@ -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);
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.mogo.och.common.module.biz.callback
|
||||
|
||||
interface ILoginViewCallback {
|
||||
/**
|
||||
* 展示登录页面
|
||||
*/
|
||||
fun showLoginDialogFragment()
|
||||
|
||||
/**
|
||||
* 隐藏登录页面
|
||||
*/
|
||||
fun hideLoginDialogFragment()
|
||||
}
|
||||
@@ -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
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
package com.mogo.och.taxi.constant
|
||||
package com.mogo.och.common.module.biz.constant
|
||||
|
||||
/**
|
||||
* Created on 2022/08/19
|
||||
@@ -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<BaseData?> {
|
||||
OchCommonServiceManager.getInstance().getPhoneCode(mContext, phone,
|
||||
object : OchCommonServiceCallback<BaseData?> {
|
||||
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<TaxiLoginRespBean?> {
|
||||
OchCommonServiceManager.getInstance().gotoLoginBycode(mContext, phone, code, location4Login,
|
||||
object : OchCommonServiceCallback<TaxiLoginRespBean?> {
|
||||
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) {
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<DriverStatusQueryRespBean>() {
|
||||
@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<BaseData>() {
|
||||
@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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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<DriverStatusQueryRespBean> 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<TaxiLoginRespBean> 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<BaseData> 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<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header ("appId") String appId
|
||||
,@Header("ticket") String ticket,@Query("sn") String sn);
|
||||
|
||||
}
|
||||
@@ -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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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<BaseData> 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<TaxiLoginRespBean> 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<BaseData> 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<DriverStatusQueryRespBean> 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 <T extends BaseData> SubscribeImpl getSubscribeImpl(
|
||||
Context context, OchCommonServiceCallback<T> callback, String apiName) {
|
||||
return new SubscribeImpl<T>(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);
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -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<TaxiLoginDialogFragment?>(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)
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
@@ -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)
|
||||
|
||||
}
|
||||
@@ -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<TaxiLoginDialogFragment>? = 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)
|
||||
}
|
||||
}
|
||||
@@ -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<TaxiLoginDialogFragment?, TaxiLoginPresenter?>(),
|
||||
class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, OchCommonLoginPresenter?>(),
|
||||
DialogInterface.OnKeyListener {
|
||||
|
||||
lateinit var clMain: ConstraintLayout
|
||||
@@ -169,8 +167,8 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
|
||||
}
|
||||
}
|
||||
|
||||
override fun createPresenter(): TaxiLoginPresenter {
|
||||
return TaxiLoginPresenter(this)
|
||||
override fun createPresenter(): OchCommonLoginPresenter {
|
||||
return OchCommonLoginPresenter(this)
|
||||
}
|
||||
|
||||
val COUNTS = 4 // 点击次数
|
||||
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 44 KiB |
13
OCH/mogo-och-common-module/src/main/res/values/colors.xml
Normal file
13
OCH/mogo-och-common-module/src/main/res/values/colors.xml
Normal file
@@ -0,0 +1,13 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<color name="taxi_2961F2">#2961F2</color>
|
||||
<color name="taxi_14FF0000">#14FF0000</color>
|
||||
<color name="taxi_FF0000">#FF0000</color>
|
||||
<color name="taxi_666666">#666666</color>
|
||||
<color name="taxi_86A5F7">#86A5F7</color>
|
||||
<color name="taxi_111533">#111533</color>
|
||||
<color name="taxi_878890">#878890</color>
|
||||
<color name="taxi_EF262C">#EF262C</color>
|
||||
<color name="taxi_4D000000">#4D000000</color>
|
||||
|
||||
</resources>
|
||||
17
OCH/mogo-och-common-module/src/main/res/values/strings.xml
Normal file
17
OCH/mogo-och-common-module/src/main/res/values/strings.xml
Normal file
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
|
||||
<string name="module_och_taxi_login_title">欢迎您登录</string>
|
||||
<string name="module_och_taxi_login_btn">登录</string>
|
||||
<string name="module_och_taxi_login_get_code">获取验证码</string>
|
||||
<string name="module_och_taxi_login_get_code_title">请输入验证码</string>
|
||||
<string name="module_och_taxi_login_get_code_success">获取验证码成功</string>
|
||||
<string name="module_och_taxi_login_login_success">登录成功</string>
|
||||
<string name="module_och_taxi_login_phone_error">请输入正确的手机号</string>
|
||||
<string name="module_och_taxi_login_code_error">请输入正确的验证码</string>
|
||||
<string name="module_och_taxi_login_phone_hint_text">请输入手机号</string>
|
||||
<string name="module_och_taxi_login_get_phone_title">请输入手机号</string>
|
||||
|
||||
<string name="network_error_tip">网络异常,请稍后重试</string>
|
||||
<string name="request_error_tip">请求出现异常,请稍后重试</string>
|
||||
</resources>
|
||||
21
OCH/mogo-och-common-module/src/main/res/values/styles.xml
Normal file
21
OCH/mogo-och-common-module/src/main/res/values/styles.xml
Normal file
@@ -0,0 +1,21 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools">
|
||||
|
||||
<style name="DialogFullScreen" parent="Theme.AppCompat.Dialog">
|
||||
<item name="android:windowIsFloating">false</item>
|
||||
<item name="android:windowActionBar">false</item>
|
||||
<item name="android:windowOverscan">true</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent
|
||||
</item>
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowEnterAnimation">@null</item>
|
||||
<item name="android:windowExitAnimation">@null</item>
|
||||
<item name="android:windowAnimationStyle">@null</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:windowBackground">@android:color/transparent</item>
|
||||
<item name="android:windowTranslucentNavigation">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
</style>
|
||||
</resources>
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -81,6 +81,5 @@ class TaxiConst {
|
||||
|
||||
const val TIMER_START_AUTOPILOT_INTERVAL = 20 * 1000L
|
||||
|
||||
const val WAIT_TAKEN = 100046
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
}
|
||||
@@ -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<DriverStatusQueryRespBean>() {
|
||||
@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<BaseData>() {
|
||||
@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<BaseData>() {
|
||||
@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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<TaxiDataBaseRespBean> 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<DriverStatusQueryRespBean> 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<TaxiLoginRespBean> 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<BaseData> 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<BaseData> 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<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header ("appId") String appId
|
||||
,@Header("ticket") String ticket,@Query("sn") String sn);
|
||||
|
||||
}
|
||||
|
||||
@@ -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<DriverStatusQueryRespBean> 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<BaseData> 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<TaxiLoginRespBean> 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<BaseData> 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 <T extends BaseData> SubscribeImpl getSubscribeImpl(
|
||||
Context context, TaxiServiceCallback<T> callback, String apiName) {
|
||||
return new SubscribeImpl<T>(RequestOptions.create(context)) {
|
||||
|
||||
@@ -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<TaxiFragment> 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<TaxiFragment> 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<TaxiFragment> implements ITaxiADASS
|
||||
TaxiModel.getInstance().jumpPassengerCheckDone();
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录成功后查询登录状态
|
||||
*/
|
||||
public void queryLoginStatus() {
|
||||
TaxiModel.getInstance().queryCarStatus();
|
||||
}
|
||||
|
||||
/**
|
||||
* 司机确认车辆环境可开启自动驾驶
|
||||
*/
|
||||
@@ -218,25 +205,11 @@ public class TaxiPresenter extends Presenter<TaxiFragment> 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<OrderQueryRespBean.Result> inServiceList) {
|
||||
|
||||
@@ -337,4 +310,29 @@ public class TaxiPresenter extends Presenter<TaxiFragment> 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) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<TaxiFragment, TaxiPresente
|
||||
|
||||
private TaxiGrabOrderFragment grabOrderFragment;
|
||||
private TaxiServerOrdersFragment serverOrdersFragment;
|
||||
private WeakReference<TaxiLoginDialogFragment> taxiLoginDialogFragment = null;
|
||||
private WeakReference<TaxiPersonalDialogFragment> 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<TaxiFragment, TaxiPresente
|
||||
@Override
|
||||
public void onDestroyView() {
|
||||
super.onDestroyView();
|
||||
loginService.unRegisterFragment();
|
||||
loginService = null;
|
||||
EventBus.getDefault().unregister(this);
|
||||
}
|
||||
|
||||
@@ -379,57 +387,11 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
|
||||
mPresenter.logout();
|
||||
}
|
||||
|
||||
public void showLoginDialogFragment(){
|
||||
CallerHmiManager.INSTANCE.hideToolsView();
|
||||
Fragment fragmentByTag = getParentFragmentManager().findFragmentByTag(TaxiLoginDialogFragment.Companion.getTAG());
|
||||
if(fragmentByTag instanceof DialogFragment){
|
||||
DialogFragment dialogFragment = (DialogFragment)fragmentByTag;
|
||||
if(dialogFragment.getDialog()!=null&&dialogFragment.getDialog().isShowing()){
|
||||
return;
|
||||
}
|
||||
if(dialogFragment.getDialog()!=null&&dialogFragment.isAdded()){
|
||||
if (AppStateManager.INSTANCE.currentActivity()==null) {// 没有在当前应用内 在启动页面关闭应用
|
||||
CallerLogger.INSTANCE.d(M_TAXI + TAG,"showLoginDialogFragment 权限验证");
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(taxiLoginDialogFragment==null||taxiLoginDialogFragment.get()==null) {
|
||||
taxiLoginDialogFragment = new WeakReference<>(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<TaxiFragment, TaxiPresente
|
||||
testCurStopMd5DPQP.setText("SMd5DPQP:" + (order == null ? "" : order.txtFileMd5DPQP));
|
||||
}
|
||||
}
|
||||
/**
|
||||
* END
|
||||
*/
|
||||
//endregion
|
||||
|
||||
}
|
||||
|
||||
@@ -1,73 +0,0 @@
|
||||
package com.mogo.och.taxi.utils
|
||||
|
||||
import com.mogo.och.taxi.constant.TaxiLoginStatusEnum
|
||||
import com.mogo.och.taxi.constant.TaxiOpenOrderStatusEnum
|
||||
|
||||
object StatusManager {
|
||||
/**
|
||||
* 登录状态
|
||||
*/
|
||||
private var loginStatus: TaxiLoginStatusEnum = TaxiLoginStatusEnum.None
|
||||
|
||||
/**
|
||||
* 接单状态
|
||||
*/
|
||||
private var openOrderStatus: TaxiOpenOrderStatusEnum = TaxiOpenOrderStatusEnum.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
|
||||
}
|
||||
// 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
|
||||
}
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 44 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 44 KiB |
@@ -25,14 +25,4 @@
|
||||
|
||||
<color name="taxi_passenger_line_color">#657EE2</color>
|
||||
|
||||
<color name="taxi_2961F2">#2961F2</color>
|
||||
<color name="taxi_14FF0000">#14FF0000</color>
|
||||
<color name="taxi_FF0000">#FF0000</color>
|
||||
<color name="taxi_666666">#666666</color>
|
||||
<color name="taxi_86A5F7">#86A5F7</color>
|
||||
<color name="taxi_111533">#111533</color>
|
||||
<color name="taxi_878890">#878890</color>
|
||||
<color name="taxi_EF262C">#EF262C</color>
|
||||
<color name="taxi_4D000000">#4D000000</color>
|
||||
|
||||
</resources>
|
||||
@@ -30,17 +30,6 @@
|
||||
<string name="module_och_taxi_auto_disable_tip">自动驾驶状态为0不可用</string>
|
||||
<string name="module_och_taxi_auto_disable_tip1">司机端未确认可以开启自动驾驶</string>
|
||||
|
||||
<string name="module_och_taxi_login_title">欢迎您登录</string>
|
||||
<string name="module_och_taxi_login_btn">登录</string>
|
||||
<string name="module_och_taxi_login_get_code">获取验证码</string>
|
||||
<string name="module_och_taxi_login_get_code_title">请输入验证码</string>
|
||||
<string name="module_och_taxi_login_get_code_success">获取验证码成功</string>
|
||||
<string name="module_och_taxi_login_login_success">登录成功</string>
|
||||
<string name="module_och_taxi_login_phone_error">请输入正确的手机号</string>
|
||||
<string name="module_och_taxi_login_code_error">请输入正确的验证码</string>
|
||||
<string name="module_och_taxi_login_phone_hint_text">请输入手机号</string>
|
||||
<string name="module_och_taxi_login_get_phone_title">请输入手机号</string>
|
||||
|
||||
<string name="network_error_tip">网络异常,请稍后重试</string>
|
||||
<string name="request_error_tip">请求出现异常,请稍后重试</string>
|
||||
</resources>
|
||||
@@ -23,22 +23,4 @@
|
||||
<style name="och_speed_style2">
|
||||
<item name="android:textSize">32px</item>
|
||||
</style>
|
||||
|
||||
<style name="DialogFullScreen" parent="Theme.AppCompat.Dialog">
|
||||
<item name="android:windowIsFloating">false</item>
|
||||
<item name="android:windowActionBar">false</item>
|
||||
<item name="android:windowOverscan">true</item>
|
||||
<item name="android:windowNoTitle">true</item>
|
||||
<item name="android:statusBarColor" tools:targetApi="lollipop">@android:color/transparent
|
||||
</item>
|
||||
<item name="android:windowTranslucentStatus">true</item>
|
||||
<item name="android:windowIsTranslucent">true</item>
|
||||
<item name="android:windowEnterAnimation">@null</item>
|
||||
<item name="android:windowExitAnimation">@null</item>
|
||||
<item name="android:windowAnimationStyle">@null</item>
|
||||
<item name="android:windowContentOverlay">@null</item>
|
||||
<item name="android:windowBackground">@android:color/transparent</item>
|
||||
<item name="android:windowTranslucentNavigation">false</item>
|
||||
<item name="android:windowFullscreen">false</item>
|
||||
</style>
|
||||
</resources>
|
||||
Reference in New Issue
Block a user