[手机号验证和主Fragment解耦合]
This commit is contained in:
yangyakun
2023-08-04 19:17:11 +08:00
committed by zhongchao
parent 05d0410074
commit afa0551c04
6 changed files with 102 additions and 52 deletions

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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) {

View File

@@ -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()
}
}

View File

@@ -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<String>?=null
private var index = 0
private var phone = ""
private val numSelect = arrayOfNulls<Int>(4)
private val numSelectTextView = arrayOfNulls<TextView>(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)
}
}

View File

@@ -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)