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" /> +