diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginReqBean.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginReqBean.java
new file mode 100644
index 0000000000..d5a3443d60
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginReqBean.java
@@ -0,0 +1,18 @@
+package com.mogo.och.taxi.bean;
+
+/**
+ * Created by pangfan on 2021/8/19
+ * 司机端准备好或者乘客已验证上车请求参数
+ */
+public class TaxiLoginReqBean {
+
+ public String phone;
+ public String code;
+ public String sn;
+
+ public TaxiLoginReqBean(String phone, String code, String sn) {
+ this.phone = phone;
+ this.code = code;
+ this.sn = sn;
+ }
+}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginRespBean.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginRespBean.java
new file mode 100644
index 0000000000..c1265a9be3
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/bean/TaxiLoginRespBean.java
@@ -0,0 +1,18 @@
+package com.mogo.och.taxi.bean;
+
+import com.mogo.eagle.core.data.BaseData;
+
+/**
+ * Created by pangfan on 2021/8/19
+ * 司机端准备好或者乘客已验证上车请求参数
+ */
+public class TaxiLoginRespBean extends BaseData {
+
+ public TaxiLoginRespBean.Result data;
+
+ public static class Result {
+ public Double lat;
+ public Double lon;
+ }
+
+}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiLoginCallback.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiLoginCallback.java
new file mode 100644
index 0000000000..c320810e88
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/callback/ITaxiLoginCallback.java
@@ -0,0 +1,17 @@
+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;
+
+/**
+ * Created on 2021/9/8
+ *
+ * Model->Presenter回调:订单相关(进行中/待服务单变更,当前进行单状态变更,新到预约单,抢单,抢单结果状态等等)
+ */
+public interface ITaxiLoginCallback {
+ void getPhoneCodeSuccess();
+}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.java
new file mode 100644
index 0000000000..224e449833
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiLoginModel.java
@@ -0,0 +1,202 @@
+package com.mogo.och.taxi.model;
+
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_ADAS;
+import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT;
+import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
+
+import android.content.Context;
+import android.content.Intent;
+import android.location.Location;
+import android.net.ConnectivityManager;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.content.ContextCompat;
+
+import com.amap.api.maps.model.LatLng;
+import com.elegant.network.utils.GsonUtil;
+import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
+import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
+import com.mogo.cloud.commons.utils.CoordinateUtils;
+import com.mogo.commons.debug.DebugConfig;
+import com.mogo.eagle.core.data.BaseData;
+import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
+import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
+import com.mogo.eagle.core.data.config.FunctionBuildConfig;
+import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener;
+import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
+import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
+import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
+import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
+import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
+import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
+import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
+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.utils.CoordinateCalculateRouteUtil;
+import com.mogo.och.common.module.utils.PinYinUtil;
+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;
+import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
+import com.mogo.och.taxi.bean.OrderRouteUpdateReqBean;
+import com.mogo.och.taxi.bean.OrdersInServiceQueryRespBean;
+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.TaxiLoginRespBean;
+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.ITaxiLoginCallback;
+import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
+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.constant.TaxiOrderTypeEnum;
+import com.mogo.och.taxi.network.TaxiServiceCallback;
+import com.mogo.och.taxi.network.TaxiServiceManager;
+import com.mogo.och.taxi.utils.OrderUtil;
+import com.mogo.och.taxi.utils.TaxiAnalyticsManager;
+import com.mogo.och.taxi.utils.TaxiTrajectoryManager;
+import com.mogo.service.intent.IMogoIntentListener;
+import com.mogo.service.statusmanager.IMogoStatusChangedListener;
+import com.mogo.service.statusmanager.StatusDescriptor;
+import com.zhjt.service.chain.ChainLog;
+import com.zhjt.service.chain.TracingConstants;
+
+import org.jetbrains.annotations.NotNull;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+
+import io.reactivex.exceptions.UndeliverableException;
+import io.reactivex.functions.Consumer;
+import io.reactivex.plugins.RxJavaPlugins;
+import mogo.telematics.pad.MessagePad;
+import mogo_msg.MogoReportMsg;
+import system_master.SystemStatusInfo;
+
+/**
+ * Created by pangfan on 2021/8/19
+ *
+ * 网约车 - 出租车业务逻辑处理
+ */
+public class TaxiLoginModel {
+
+ private static final String TAG = TaxiLoginModel.class.getSimpleName();
+
+ private static final class SingletonHolder {
+ private static final TaxiLoginModel INSTANCE = new TaxiLoginModel();
+ }
+
+ public static TaxiLoginModel getInstance() {
+ return SingletonHolder.INSTANCE;
+ }
+
+ private Context mContext;
+
+ ITaxiLoginCallback iTaxiLoginCallback;
+
+
+ private TaxiLoginModel() {
+ }
+
+ public void init(Context context) {
+ mContext = context.getApplicationContext();
+ }
+
+ public ITaxiLoginCallback getiTaxiLoginCallback() {
+ return iTaxiLoginCallback;
+ }
+
+ public void setiTaxiLoginCallback(ITaxiLoginCallback iTaxiLoginCallback) {
+ this.iTaxiLoginCallback = iTaxiLoginCallback;
+ }
+
+ public void release() {
+
+ }
+
+ /**
+ * 获取手机验证码
+ */
+ public void getPhoneCode(String phone) {
+ TaxiServiceManager.getInstance().getPhoneCode(mContext,phone,
+ new TaxiServiceCallback() {
+ @Override
+ public void onSuccess(BaseData data) {
+ if (null != data && 0 == data.code) {
+ // 获取验证码成功
+ ToastUtils.showShort(mContext.getString(R.string.module_och_taxi_login_get_code_success));
+ if(iTaxiLoginCallback!=null){
+ iTaxiLoginCallback.getPhoneCodeSuccess();
+ }
+ }else {
+ if(data!=null) {
+ ToastUtils.showShort(data.code);
+ }
+ }
+ }
+
+ @Override
+ public void onError() {
+ if (!NetworkUtils.isConnected(mContext)) {
+ ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ } else {
+ ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ }
+ }
+
+ @Override
+ public void onFail(int code, String msg) {
+ ToastUtils.showShort(code + "," + msg);
+ }
+ });
+ }
+
+ public void gotoLogin(@NotNull String phone, @NotNull String code) {
+ TaxiServiceManager.getInstance().gotoLoginBycode(mContext,phone,code,
+ new TaxiServiceCallback() {
+ @Override
+ public void onSuccess(TaxiLoginRespBean data) {
+ if (null != data && 0 == data.code) {
+ // 获取验证码成功
+ ToastUtils.showShort(mContext.getString(R.string.module_och_taxi_login_get_code_success));
+ if(iTaxiLoginCallback!=null){
+ iTaxiLoginCallback.getPhoneCodeSuccess();
+ }
+ }else {
+ if(data!=null) {
+ ToastUtils.showShort(data.code);
+ }
+ }
+ }
+
+ @Override
+ public void onError() {
+ if (!NetworkUtils.isConnected(mContext)) {
+ ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
+ } else {
+ ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
+ }
+ }
+
+ @Override
+ public void onFail(int code, String msg) {
+ ToastUtils.showShort(code + "," + msg);
+ }
+ });
+ }
+
+}
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/network/TaxiServiceApiNew.java
index 8c8a6a7c0e..0c18d76e65 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
@@ -20,6 +20,8 @@ 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.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean;
@@ -307,4 +309,28 @@ interface TaxiServiceApiNew {
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/orderCompleted" )
Observable orderCompleted(@Header ("appId") String appId
, @Header("ticket") String ticket,@Body TaxiOrPassengerReadyReqBean 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/car/v2/driver/taxi/serviceStatus/query" )
+ Observable getPhoneCode(@Header ("appId") String appId
+ ,@Header("ticket") String ticket,@Query("sn") String sn,@Query("phone") String phone);
+ /**
+ * 订单完成
+ * @param appId
+ * @param ticket
+ * @param data
+ * @return
+ */
+ @Headers( {"Content-type:application/json;charset=UTF-8"} )
+ @POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/orderCompleted" )
+ Observable gotoLoginBycode(@Header ("appId") String appId
+ , @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
+
}
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 279623f531..df571a4b1e 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
@@ -30,6 +30,8 @@ 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.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean;
import com.mogo.och.taxi.constant.TaxiConst;
@@ -436,6 +438,38 @@ public class TaxiServiceManager {
}
+ /**
+ * 收车/出车状态查询
+ * @param context
+ * @param callback
+ */
+ public void getPhoneCode(Context context,String phone,
+ TaxiServiceCallback callback) {
+ mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
+ , MoGoAiCloudClientConfig.getInstance().getToken()
+ , MoGoAiCloudClientConfig.getInstance().getSn()
+ , 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,
+ TaxiServiceCallback callback) {
+ String sn = MoGoAiCloudClientConfig.getInstance().getSn();
+ mOCHTaxiServiceApi.gotoLoginBycode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
+ , MoGoAiCloudClientConfig.getInstance().getToken()
+ , new TaxiLoginReqBean(phone,code,sn))
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(getSubscribeImpl(context, callback, "getPhoneCode"));
+ }
+
+
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/TaxiLoginPresenter.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiLoginPresenter.kt
new file mode 100644
index 0000000000..2d48b09176
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/presenter/TaxiLoginPresenter.kt
@@ -0,0 +1,97 @@
+package com.mogo.och.taxi.presenter
+
+import androidx.lifecycle.LifecycleOwner
+import com.mogo.commons.AbsMogoApplication
+import com.mogo.commons.mvp.Presenter
+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 io.reactivex.Observable
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.schedulers.Schedulers
+import java.util.concurrent.TimeUnit
+
+/**
+ * @author congtaowang
+ * @since 2021/1/18
+ *
+ * 描述
+ */
+class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
+ Presenter(view), ITaxiLoginCallback {
+
+ private var countDownDisposable: Disposable? = null
+
+ init {
+ TaxiLoginModel.getInstance().init(AbsMogoApplication.getApp())
+ initListeners()
+ }
+
+ private fun initListeners() {
+ TaxiLoginModel.getInstance().setiTaxiLoginCallback(this)
+ }
+
+ fun getPhoneCode(phone:String){
+ if (!RegexUtils.isMobileExact(phone)) {
+ ToastUtils.showShort(R.string.module_och_taxi_login_phone_error)
+ mView?.inputPhoneError()
+ return
+ }
+ TaxiLoginModel.getInstance().getPhoneCode(phone)
+ }
+
+ override fun onCreate(owner: LifecycleOwner) {
+ super.onCreate(owner)
+ CallerLogger.d(SceneConstant.M_TAXI + TAG, "网约车-出租车登陆")
+ }
+
+
+
+ override fun onDestroy(owner: LifecycleOwner) {
+ super.onDestroy(owner)
+ countDownDisposable?.let {
+ if (!it.isDisposed) {
+ it.dispose()
+ }
+ }
+ }
+
+ companion object {
+ private val TAG = TaxiLoginPresenter::class.java.simpleName
+ }
+
+ override fun getPhoneCodeSuccess() {
+ val countDownSeconds = 60L;
+ countDownDisposable = Observable.intervalRange(0, countDownSeconds, 0, 1, TimeUnit.SECONDS)
+ .map { aLong -> countDownSeconds - aLong }
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe({
+ mView?.setCountDownText("${it}s",false)
+ CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时:$it")
+ }, {
+ CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onError:${it}")
+ it.printStackTrace()
+ mView?.setCountDownText(context.getString(R.string.module_och_taxi_login_get_code),true)
+ }, {
+ CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "倒计时onComplete")
+ mView?.setCountDownText(context.getString(R.string.module_och_taxi_login_get_code),true)
+ })
+ }
+
+ fun gotoLogin(phone: String, code: String) {
+ if (!RegexUtils.isMobileExact(phone)) {
+ ToastUtils.showShort(R.string.module_och_taxi_login_phone_error)
+ mView?.inputPhoneError()
+ return
+ }
+ mView?.closeSoftInput()
+ TaxiLoginModel.getInstance().gotoLogin(phone,code)
+ }
+}
\ No newline at end of file
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 631db5510b..f6940363cd 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
@@ -47,6 +47,7 @@ public class TaxiFragment extends BaseTaxiTabFragment taxiLoginDialogFragment = null;
private WeakReference personalDialogFragment = null;
protected double mCurLatitude = 0.0;
protected double mCurLongitude = 0.0;
@@ -367,6 +368,13 @@ public class TaxiFragment extends BaseTaxiTabFragment(TaxiLoginDialogFragment.newInstance());
+ taxiLoginDialogFragment.get().show(getParentFragmentManager(),taxiLoginDialogFragment.get().getTag());
+ }
+ });
}
private void testRouteInfoUpload() {
diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt
new file mode 100644
index 0000000000..421eede884
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiLoginDialogFragment.kt
@@ -0,0 +1,195 @@
+package com.mogo.och.taxi.ui
+
+import android.content.DialogInterface
+import android.graphics.Rect
+import android.os.Bundle
+import android.view.*
+import androidx.appcompat.widget.AppCompatButton
+import androidx.appcompat.widget.AppCompatEditText
+import androidx.appcompat.widget.AppCompatTextView
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.core.content.ContextCompat
+import androidx.core.widget.addTextChangedListener
+import com.mogo.commons.mvp.MvpDialogFragment
+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.presenter.TaxiLoginPresenter
+import io.reactivex.Observable
+import io.reactivex.Observer
+import io.reactivex.android.schedulers.AndroidSchedulers
+import io.reactivex.disposables.Disposable
+import io.reactivex.schedulers.Schedulers
+import java.util.concurrent.TimeUnit
+
+
+/**
+ * @author: yangyakun
+ * @date: 2022/8/15
+ */
+class TaxiLoginDialogFragment : MvpDialogFragment(),
+ DialogInterface.OnKeyListener {
+
+ lateinit var clMain: ConstraintLayout
+ lateinit var acbtnLogin: AppCompatButton
+ lateinit var actvLoginGetCode: AppCompatTextView
+ lateinit var aceLoginPhoneValue: AppCompatEditText
+ lateinit var acetPhoneCodeValue: AppCompatEditText
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setStyle(STYLE_NO_TITLE, R.style.DialogFullScreen) //dialog全屏
+ }
+
+ override fun onCreateView(
+ inflater: LayoutInflater,
+ container: ViewGroup?,
+ savedInstanceState: Bundle?
+ ): View? {
+ dialog?.setOnKeyListener(this)
+ return super.onCreateView(inflater, container, savedInstanceState)
+ }
+
+ override fun getLayoutId(): Int {
+ return R.layout.taxi_login_view
+ }
+
+ override fun initViews() {
+ findViewById(R.id.module_och_taxi_order_list_close_iv)!!.setOnClickListener { v: View? -> dismissAllowingStateLoss() }
+ clMain = mRootView.findViewById(R.id.cl_main)
+ acbtnLogin = mRootView.findViewById(R.id.acbtn_login)
+ actvLoginGetCode = mRootView.findViewById(R.id.actv_login_get_code)
+ aceLoginPhoneValue = mRootView.findViewById(R.id.ace_login_phone_value)
+ acetPhoneCodeValue = mRootView.findViewById(R.id.acet_phone_code_value)
+ inputPhoneNormal()
+ initListener()
+ dialog?.window?.let {
+ context?.let { contextIn->
+ BarUtils.setStatusBarColor(
+ it,
+ ContextCompat.getColor(contextIn, R.color.taxi_4D000000)
+ )
+ }
+ }
+ }
+
+ private fun initListener() {
+ mRootView.isFocusable = true
+ mRootView.isFocusableInTouchMode = true
+ mRootView.setOnTouchListener(object : View.OnTouchListener {
+ override fun onTouch(v: View?, event: MotionEvent?): Boolean {
+ when (event?.action) {
+ MotionEvent.ACTION_DOWN -> {
+ closeSoftInput()
+ }
+ }
+ return false
+ }
+ })
+ acbtnLogin.setOnClickListener {
+ val phone = aceLoginPhoneValue.text.toString()
+ val code = acetPhoneCodeValue.text.toString()
+ mPresenter?.gotoLogin(phone,code)
+ }
+ clMain.viewTreeObserver.addOnGlobalLayoutListener {
+ val rect = Rect()
+ clMain.getWindowVisibleDisplayFrame(rect)
+ val mainInvisibleHeight = clMain.rootView.height - rect.bottom
+ if (mainInvisibleHeight > 100) {
+ val outLocation = IntArray(2)
+ acbtnLogin.getLocationInWindow(outLocation)
+ val srollHeight = (outLocation[1] + acbtnLogin.height) - rect.bottom
+ if (srollHeight > 0) {
+ clMain.scrollTo(0, srollHeight)
+ }
+ CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "滚动的距离:$srollHeight")
+ } else {
+ clMain.scrollTo(0, 0)
+ }
+ }
+ actvLoginGetCode.setOnClickListener {
+ mPresenter?.getPhoneCode(aceLoginPhoneValue.text.toString())
+ }
+ aceLoginPhoneValue.addTextChangedListener {
+ it?.let { itEditable->
+ if(itEditable.isNotEmpty()){
+ inputPhoneNormal()
+ }
+ }
+ }
+ }
+
+ /**
+ * 关闭键盘
+ */
+ fun closeSoftInput() {
+ mRootView.requestFocus()
+ dialog?.window?.let {
+ KeyboardUtils.hideSoftInput(it)
+ }
+ }
+
+ fun setCountDownText(text:String,enable: Boolean){
+ if(enable){
+ actvLoginGetCode.setText(R.string.module_och_taxi_login_get_code)
+ actvLoginGetCode.isEnabled = true
+ }else{
+ actvLoginGetCode.text = text
+ actvLoginGetCode.isEnabled = false
+ }
+ }
+
+ fun inputPhoneError(){
+ aceLoginPhoneValue.text?.clear()
+ aceLoginPhoneValue.setHint(R.string.module_och_taxi_login_phone_error)
+ context?.let {
+ aceLoginPhoneValue.setHintTextColor(ContextCompat.getColor(it,R.color.taxi_EF262C))
+ aceLoginPhoneValue.setBackgroundResource(R.drawable.taxi_login_phone_error)
+ }
+ }
+ private fun inputPhoneNormal(){
+ //aceLoginPhoneValue.setHint(R.string.module_och_taxi_login_phone_hint_text)
+ context?.let {
+ aceLoginPhoneValue.setHintTextColor(ContextCompat.getColor(it,R.color.taxi_878890))
+ aceLoginPhoneValue.setBackgroundResource(R.drawable.taxi_login_phone_normal)
+ }
+ }
+
+ override fun createPresenter(): TaxiLoginPresenter {
+ return TaxiLoginPresenter(this)
+ }
+
+ override fun onResume() {
+ super.onResume()
+ }
+
+ override fun onHiddenChanged(hidden: Boolean) {
+ super.onHiddenChanged(hidden)
+ }
+
+ override fun onPause() {
+ super.onPause()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ }
+
+ override fun onKey(dialog: DialogInterface, keyCode: Int, event: KeyEvent): Boolean {
+ return keyCode == KeyEvent.KEYCODE_BACK
+ }
+
+ companion object {
+ private val TAG = TaxiLoginDialogFragment::class.java.simpleName
+
+ @JvmStatic
+ fun newInstance(): TaxiLoginDialogFragment {
+ val args = Bundle()
+ val fragment = TaxiLoginDialogFragment()
+ fragment.arguments = args
+ return fragment
+ }
+ }
+}
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/color/taxi_login_get_code_text_color.xml b/OCH/mogo-och-taxi/src/main/res/color/taxi_login_get_code_text_color.xml
new file mode 100644
index 0000000000..3df3bdb613
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/res/color/taxi_login_get_code_text_color.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi-2560x1440/taxi_ic_login_bg.webp b/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi-2560x1440/taxi_ic_login_bg.webp
new file mode 100644
index 0000000000..7af7432551
Binary files /dev/null and b/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi-2560x1440/taxi_ic_login_bg.webp differ
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
new file mode 100644
index 0000000000..7af7432551
Binary files /dev/null and b/OCH/mogo-och-taxi/src/main/res/drawable-xhdpi-2560x1600/taxi_ic_login_bg.webp differ
diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_bg_selector.xml b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_bg_selector.xml
new file mode 100644
index 0000000000..86dcf132d8
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_bg_selector.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_enable.xml b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_enable.xml
new file mode 100644
index 0000000000..939235d7e7
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_enable.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_get_code_text_color.xml b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_get_code_text_color.xml
new file mode 100644
index 0000000000..906ae4e8f6
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_get_code_text_color.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_phone_error.xml b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_phone_error.xml
new file mode 100644
index 0000000000..58e5bb0706
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_phone_error.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_phone_normal.xml b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_phone_normal.xml
new file mode 100644
index 0000000000..ec15e081b0
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_phone_normal.xml
@@ -0,0 +1,7 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_unenable.xml b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_unenable.xml
new file mode 100644
index 0000000000..c4b8483971
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/res/drawable/taxi_login_unenable.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_login_view.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_login_view.xml
new file mode 100644
index 0000000000..01dea36bac
--- /dev/null
+++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_login_view.xml
@@ -0,0 +1,127 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml
index 4608e957b9..e9e156b683 100644
--- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml
+++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_panel.xml
@@ -18,7 +18,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
- android:visibility="gone"
+ android:visibility="visible"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintBottom_toBottomOf="parent">
@@ -89,5 +89,13 @@
android:text="到达目的地"
android:textSize="12sp" />
+
+
\ No newline at end of file
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 116d9ab70f..743794b7f8 100644
--- a/OCH/mogo-och-taxi/src/main/res/values/colors.xml
+++ b/OCH/mogo-och-taxi/src/main/res/values/colors.xml
@@ -24,4 +24,15 @@
#FFFF9B00
#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 1c2e79dfea..5cd6eac3f7 100644
--- a/OCH/mogo-och-taxi/src/main/res/values/strings.xml
+++ b/OCH/mogo-och-taxi/src/main/res/values/strings.xml
@@ -30,6 +30,15 @@
自动驾驶状态为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 bd2964b922..ec73feaae9 100644
--- a/OCH/mogo-och-taxi/src/main/res/values/styles.xml
+++ b/OCH/mogo-och-taxi/src/main/res/values/styles.xml
@@ -23,4 +23,22 @@
+
+
\ No newline at end of file