diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt index b788ef9dd5..df5b2d0f8e 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.kt @@ -247,10 +247,7 @@ object TaxiPassengerModel { } } - fun checkPhoneAndUpdateStatus( - phoneTail: String?, - commonCallback: ITaxiPassengerCommonCallback? - ) { + fun checkPhoneAndUpdateStatus(phoneTail: String) { if (currentOCHOrder == null) return TaxiPassengerServiceManager.checkPhoneAndUpdateOrderStatus( currentOCHOrder!!.orderNo, @@ -262,7 +259,6 @@ object TaxiPassengerModel { orderStatusChange() VoiceNotice.showNotice("验证成功!关闭车门并佩戴安全带后开启行程吧!", AIAssist.LEVEL2) } - commonCallback?.onCommonCallback() } override fun onFail(code: Int, msg: String) { diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt index 99d7e9e28c..ff56b35d47 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.kt @@ -68,8 +68,7 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : TaxiPassengerOrderStatusEnum.ArriveAtStart -> { // 20 司机到达上车点 mView?.showOrHideArrivedEndLayout(isShow = false) - mView?.showOrHidePressengerCheckPager(true, order.startSiteAddr, - order.endSiteAddr, order.passengerNum, order.passengerPhone) + mView?.showOrHidePressengerCheckPager(true) mView?.showOrHideStartAutopilotView(isShow = false) } @@ -122,12 +121,6 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) : mView?.showOrHideOverMapView() } - fun checkAndUpdateStatus(phone: String?) { - TaxiPassengerModel.checkPhoneAndUpdateStatus(phone) { - mView?.showOrHidePressengerCheckPager(isShow = false) - } - } - fun setItineraryVisibility() { UiThreadHandler.post { when (TaxiPassengerModel.curOrderStatus) { diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt index e9e82fcb11..384136e8fb 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerBaseFragment.kt @@ -167,14 +167,6 @@ class TaxiPassengerBaseFragment() : } } - private fun initCheckView() { - mArrivedCheckView = WeakReference(TaxiPassengerCheckView(context)) - mArrivedCheckView!!.get()!!.iTaxiPassengerCommonValueCallback = - ITaxiPassengerCommonValueCallback { phoneTail: String? -> - getPresenter()!!.checkAndUpdateStatus(phoneTail) - } - } - override fun onResume() { super.onResume() mapBizView!!.onResume() @@ -308,19 +300,13 @@ class TaxiPassengerBaseFragment() : */ fun showOrHidePressengerCheckPager( isShow: Boolean, - startSiteAddr: String? = "", - endSiteAddr: String? = "", - passengerNum: String? = "", - phone: String? = "" ) { try { if (isShow) { exitFullVideoScreen(false) if (mArrivedCheckView == null || mArrivedCheckView!!.get() == null) { - initCheckView() + mArrivedCheckView = WeakReference(TaxiPassengerCheckView(context)) } - mArrivedCheckView!!.get()!! - .setData(startSiteAddr, endSiteAddr, passengerNum, phone) OverlayViewUtils.showOverlayView(activity, mArrivedCheckView!!.get()) } else { if (mArrivedCheckView == null || mArrivedCheckView!!.get() == null) { diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/ChekViewModel.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/ChekViewModel.kt new file mode 100644 index 0000000000..7c54b5ab0a --- /dev/null +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/ChekViewModel.kt @@ -0,0 +1,69 @@ +package com.mogo.och.taxi.passenger.ui.check + +import androidx.lifecycle.ViewModel +import chassis.Chassis.DoorNumber +import com.mogo.eagle.core.function.api.autopilot.IMoGoChassisDoorStateListener +import com.mogo.eagle.core.function.call.autopilot.CallerChassisDoorStateListenerManager +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.UiThreadHandler +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.callback.IOCHTaxiPassengerOrderStatusCallback +import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum +import com.mogo.och.taxi.passenger.model.AutopilotManager +import com.mogo.och.taxi.passenger.model.TaxiPassengerModel + +class ChekViewModel : ViewModel(), IOCHTaxiPassengerOrderStatusCallback { + + private val TAG = ChekViewModel::class.java.simpleName + + private var viewCallback: CheckCallback? = null + + init { + TaxiPassengerModel.setOrderStatusCallback(TAG,this) + } + + fun setStartAutopilotCallback(viewCallback: CheckCallback) { + this.viewCallback = viewCallback + TaxiPassengerModel.startOrStopReadyToAutopilotLoop(true) + setOrderInfo() + } + fun checkAndUpdateStatus(phone: String) { + TaxiPassengerModel.checkPhoneAndUpdateStatus(phone) + } + + + private fun setOrderInfo() { + val currentOCHOrder = TaxiPassengerModel.currentOCHOrder + currentOCHOrder?.let { order -> + viewCallback?.setOrderInfo(order.startSiteAddr, + order.endSiteAddr, order.passengerNum, order.passengerPhone) + } + } + + override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrderQueryRespBean.Result?) { + super.onCurrentOrderStatusChanged(order) + order?.let { + if(it.orderStatus != TaxiPassengerOrderStatusEnum.UserArriveAtStart.code){ + this.viewCallback?.dismissWindow() + } + } + + } + + override fun onCleared() { + super.onCleared() + this.viewCallback = null + TaxiPassengerModel.setOrderStatusCallback(TAG, null) + } + + interface CheckCallback { + fun setOrderInfo(startSiteAddr: String?, + endSiteAddr: String?, + passengerNum: String?, + phone: String?) + + fun dismissWindow() + } + +} \ No newline at end of file diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/TaxiPassengerCheckView.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/TaxiPassengerCheckView.kt index 07330f40d6..fd439578db 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/TaxiPassengerCheckView.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/check/TaxiPassengerCheckView.kt @@ -8,16 +8,17 @@ import android.text.style.TextAppearanceSpan import android.util.AttributeSet import android.view.LayoutInflater import android.view.View -import android.widget.RelativeLayout import android.widget.TextView import androidx.core.content.ContextCompat +import androidx.lifecycle.ViewModelProvider import com.mogo.commons.voice.AIAssist 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.OverlayViewUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.och.common.module.voice.VoiceNotice import com.mogo.och.taxi.passenger.R -import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback +import com.mogo.och.taxi.passenger.widget.WindowRelativeLayout import kotlinx.android.synthetic.main.taxi_p_passenger_check_panel.view.tv_passenger_count import kotlinx.android.synthetic.main.taxi_p_passenger_check_panel.view.tv_passenger_end import kotlinx.android.synthetic.main.taxi_p_passenger_check_panel.view.tv_passenger_start @@ -43,7 +44,8 @@ import kotlinx.android.synthetic.main.taxi_p_passenger_check_panel.view.tv_taxi_ * * Created on 2022/3/16 */ -class TaxiPassengerCheckView :RelativeLayout, View.OnClickListener { +class TaxiPassengerCheckView : WindowRelativeLayout, View.OnClickListener, + ChekViewModel.CheckCallback { constructor(context: Context?) : super(context) @@ -53,14 +55,13 @@ class TaxiPassengerCheckView :RelativeLayout, View.OnClickListener { constructor(context: Context?, attributeSet: AttributeSet, defStyleAttr: Int, defStyleRes: Int) : super(context, attributeSet, defStyleAttr, defStyleRes) - var iTaxiPassengerCommonValueCallback: ITaxiPassengerCommonValueCallback?=null - - private var index = 0 private var phone = "" private val numSelect = arrayOfNulls(4) private val numSelectTextView = arrayOfNulls(4) + private lateinit var viewModel:ChekViewModel + private fun initView(context: Context) { d(SceneConstant.M_TAXI_P + TAG, "initView") LayoutInflater.from(context).inflate(R.layout.taxi_p_passenger_check_panel, this, true) @@ -121,7 +122,13 @@ class TaxiPassengerCheckView :RelativeLayout, View.OnClickListener { VoiceNotice.showNotice("验证失败!再检查一下吧~", AIAssist.LEVEL2) return } - iTaxiPassengerCommonValueCallback?.onCommonCallback(numberStr) + viewModel.checkAndUpdateStatus(numberStr) + } + + override fun onAttachedToWindow() { + super.onAttachedToWindow() + viewModel = ViewModelProvider(this).get(ChekViewModel::class.java) + viewModel.setStartAutopilotCallback(this) } private fun selectIndex(i: Int) { @@ -212,12 +219,19 @@ class TaxiPassengerCheckView :RelativeLayout, View.OnClickListener { } - fun setData( - startSiteAddr: String?, - endSiteAddr: String?, - passengerNum: String?, - phone: String? - ) { + companion object { + const val TAG = "TaxiPassengerCheckView" + } + + init { + try { + initView(context) + } catch (e: Exception) { + e.printStackTrace() + } + } + + override fun setOrderInfo(startSiteAddr: String?, endSiteAddr: String?, passengerNum: String?, phone: String?) { this.phone = phone?:"" val sb = SpannableStringBuilder("乘客数:$passengerNum 位") // 包装字体内容 sb.setSpan( @@ -236,15 +250,7 @@ class TaxiPassengerCheckView :RelativeLayout, View.OnClickListener { } } - companion object { - const val TAG = "TaxiPassengerCheckView" - } - - init { - try { - initView(context) - } catch (e: Exception) { - e.printStackTrace() - } + override fun dismissWindow() { + OverlayViewUtils.dismissOverlayView(this) } } \ No newline at end of file diff --git a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/debug/DebugView.kt b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/debug/DebugView.kt index 37e39176a3..d9735e6037 100644 --- a/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/debug/DebugView.kt +++ b/OCH/taxi/taxi-unmanned-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/debug/DebugView.kt @@ -52,7 +52,7 @@ class DebugView @JvmOverloads constructor( fragment?.showOrHideArrivedEndLayout(true) } tv_show_phone_check.onClick { - fragment?.showOrHidePressengerCheckPager(isShow = true,"13号路口终(鹰眼专用)","13号路口终(鹰眼专用)","2","18811539480") + fragment?.showOrHidePressengerCheckPager(isShow = true) } tv_show_start_autopilot.onClick { fragment?.showOrHideStartAutopilotView(true)