[查询订单状态需要两个接口联合判断]
This commit is contained in:
yangyakun
2023-07-17 17:17:24 +08:00
parent deca0a8e9e
commit 133a6a7929
8 changed files with 192 additions and 206 deletions

View File

@@ -8,7 +8,9 @@ import com.mogo.commons.module.intent.IMogoIntentListener
import com.mogo.commons.module.intent.IntentManager
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.datacenter.msgbox.IMsgBoxEventListener
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager
import com.mogo.eagle.core.function.call.msgbox.CallerMsgBoxEventListenerManager
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
@@ -60,7 +62,6 @@ object TaxiPassengerModel {
var currentOCHOrder: TaxiPassengerOrderQueryRespBean.Result? = null//当前订单
private val mOrderStatusCallbackMap: MutableMap<String, IOCHTaxiPassengerOrderStatusCallback> = ConcurrentHashMap()
private var subscribe: Disposable? = null
fun setOrderStatusCallback(tag: String?, callback: IOCHTaxiPassengerOrderStatusCallback?) {
if (tag == null || "" == tag) return
@@ -94,7 +95,6 @@ object TaxiPassengerModel {
startOrStopOrderLoop(false)
startOrStopQueryOrderRemaining(false)
releaseListeners()
RxUtils.disposeSubscribe(subscribe)
}
private fun initListeners() {
@@ -143,6 +143,9 @@ object TaxiPassengerModel {
object : OchCommonServiceCallback<TaxiPassengerOrdersInServiceQueryRespBean> {
override fun onSuccess(data: TaxiPassengerOrdersInServiceQueryRespBean) {
if (data.data == null) {
if(currentOCHOrder!=null){
queryCurOrderStatus()
}
return
}
//1. 处理进行中订单
@@ -151,10 +154,14 @@ object TaxiPassengerModel {
val currentOrder = data.data.servicing[0]
if(currentOCHOrder==null||currentOCHOrder?.orderStatus!=currentOrder.orderStatus){
currentOCHOrder = currentOrder
orderStatusChange(currentOrder)
orderStatusChange()
}else {
currentOCHOrder = currentOrder
}
}else{
if(currentOCHOrder!=null){
queryCurOrderStatus()
}
}
}
@@ -167,6 +174,30 @@ object TaxiPassengerModel {
})
}
//仅用于轮询时查到本地有mCurrentOCHOrder但请求结果无进行中单or orderId不一致是复查本地currentOrder
private fun queryCurOrderStatus() {
currentOCHOrder?.orderNo?.let {
TaxiPassengerServiceManager.queryOrderById(
mContext!!, it,
object : OchCommonServiceCallback<TaxiPassengerOrderQueryRespBean> {
override fun onSuccess(data: TaxiPassengerOrderQueryRespBean) {
if (data.data != null && currentOCHOrder != null && currentOCHOrder!!.orderNo == data.data.orderNo) {
if (data.data.orderStatus == TaxiPassengerOrderStatusEnum.Cancel.code || data.data.orderStatus == TaxiPassengerOrderStatusEnum.JourneyCompleted.code || data.data.orderStatus == TaxiPassengerOrderStatusEnum.None.code) {
currentOCHOrder = data.data
orderStatusChange()
currentOCHOrder = null
} else {
currentOCHOrder = data.data
orderStatusChange()
}
}
}
override fun onFail(code: Int, msg: String) {}
})
}
}
// 获取当前订单状态
val curOrderStatus: TaxiPassengerOrderStatusEnum
get() {
@@ -256,7 +287,7 @@ object TaxiPassengerModel {
if (data.code == 0 && currentOCHOrder != null) {
currentOCHOrder!!.orderStatus = TaxiPassengerOrderStatusEnum.UserArriveAtStart.code
//乘客验证成功,更新订单状态为 "乘客已上车", 立马弹出乘客开始行程页面,不再等待轮询
orderStatusChange(currentOCHOrder!!)
orderStatusChange()
}
commonCallback?.onCommonCallback()
}
@@ -271,14 +302,58 @@ object TaxiPassengerModel {
})
}
fun orderStatusChange(currentOCHOrder: TaxiPassengerOrderQueryRespBean.Result){
fun orderStatusChange(){
orderStatusChangeInner()
if (mOrderStatusCallbackMap.isNotEmpty()) {
d(M_TAXI_P + TAG, "最新的状态${curOrderStatus}")
for (callback in mOrderStatusCallbackMap.values) {
callback.onCurrentOrderStatusChanged(currentOCHOrder)
}
}
}
private fun orderStatusChangeInner() {
when (curOrderStatus) {
TaxiPassengerOrderStatusEnum.OnTheWayToStart -> {
}
TaxiPassengerOrderStatusEnum.ArriveAtStart -> {
}
TaxiPassengerOrderStatusEnum.UserArriveAtStart -> {
//开启轮询司机是否已准备好开启自动驾驶的环境
startDriverReadyToAutopilotLoop()
setStation()
}
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
CallerFuncBizManager.bizProvider.queryV2XEvents() //全览模式的V2X事件轮询开始
startOrStopQueryOrderRemaining(true)
AutopilotManager.updateAutopilotControlParameters()
startOrStopReadyToAutopilotLoop(false)
setStation()
CallerOrderListenerManager.invokeOrderStatus(true)
}
TaxiPassengerOrderStatusEnum.ArriveAtEnd -> {
recoverNaviInfo()
AutopilotManager.clearAutopilotControlParameters()
startOrStopQueryOrderRemaining(false)
CallerOrderListenerManager.invokeOrderStatus(false)
cleanStation()
}
TaxiPassengerOrderStatusEnum.JourneyCompleted -> {
AutopilotManager.clearAutopilotControlParameters()
startOrStopQueryOrderRemaining(false)
cleanStation()
}
TaxiPassengerOrderStatusEnum.Cancel -> {
recoverNaviInfo()
AutopilotManager.clearAutopilotControlParameters()
startOrStopQueryOrderRemaining(false)
startOrStopReadyToAutopilotLoop(false)
cleanStation()
}
TaxiPassengerOrderStatusEnum.None -> TODO()
}
}
/**
* 查询司机是否已确认可开启自动驾驶
*/

View File

@@ -44,7 +44,6 @@ internal interface TaxiPassengerServiceApi {
*/
@Headers("Content-type:application/json;charset=UTF-8")
@POST("/autopilot-car-hailing/order/v2/driver/taxi/passenger/queryOrderById")
@Deprecated("v2.1_0930需求中暂不再使用此接口")
fun queryOrderById(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,

View File

@@ -1,6 +1,7 @@
package com.mogo.och.taxi.passenger.network
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean
import com.mogo.commons.AbsMogoApplication
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
@@ -15,6 +16,8 @@ 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.OchCommonSubscribeImpl
import com.mogo.och.common.module.biz.network.interceptor.transformTry
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean
/**
* Created by pangfan on 2021/8/19
@@ -126,5 +129,24 @@ object TaxiPassengerServiceManager {
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus"))
}
/**
* 通过orderId查询订单信息用于本地已经有orderId时
* @param context
* @param orderNo
* @param callback
*/
@JvmStatic
fun queryOrderById(
context: Context, orderNo: String?,
callback: OchCommonServiceCallback<TaxiPassengerOrderQueryRespBean>?
) {
mOCHTaxiServiceApi.queryOrderById(
data=TaxiPassengerOrderQueryReqBean(draiverSn, orderNo)
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderById"))
}
}

View File

@@ -5,7 +5,7 @@ import androidx.lifecycle.LifecycleOwner
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.mvp.Presenter
import com.mogo.eagle.core.function.call.biz.CallerFuncBizManager.bizProvider
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager.invokeOrderStatus
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager
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.UiThreadHandler
@@ -14,8 +14,6 @@ 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.AutopilotManager.clearAutopilotControlParameters
import com.mogo.och.taxi.passenger.model.AutopilotManager.updateAutopilotControlParameters
import com.mogo.och.taxi.passenger.model.TaxiPassengerModel
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment
@@ -25,8 +23,6 @@ import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment
*/
class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
Presenter<TaxiPassengerBaseFragment?>(view), IOCHTaxiPassengerOrderStatusCallback {
@Volatile
private var mCurrentPassengerOrder: TaxiPassengerOrderQueryRespBean.Result? = null //当前订单
init {
TaxiPassengerModel.init(AbsMogoApplication.getApp())
@@ -54,24 +50,8 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
TaxiPassengerModel.setOrderStatusCallback("BaseTaxiPassengerPresenter", null)
}
private fun runOnUIThread(executor: Runnable?) {
if (executor == null) {
return
}
if (Looper.myLooper() != Looper.getMainLooper()) {
UiThreadHandler.post(executor)
} else {
executor.run()
}
}
override fun onCurrentOrderStatusChanged(order: TaxiPassengerOrderQueryRespBean.Result?) {
// CallerLogger.INSTANCE.d(M_TAXI_P + TAG, GsonUtil.jsonFromObject(order));
if (mCurrentPassengerOrder == null) {
mCurrentPassengerOrder = order //当前无订单
updateOrderView(order)
} else if (mCurrentPassengerOrder!!.orderStatus != order!!.orderStatus) {
mCurrentPassengerOrder = order
order?.let {
updateOrderView(order)
}
}
@@ -85,113 +65,54 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
override fun onDriverHasCheckedPilotCondition(isBoarded: Boolean) {
d(SceneConstant.M_TAXI_P + TAG, "isBoarded = $isBoarded")
runOnUIThread { mView!!.updateStartAutopilotBtnStatus(isBoarded) }
mView?.updateStartAutopilotBtnStatus(isBoarded)
}
private fun updateOrderView(order: TaxiPassengerOrderQueryRespBean.Result?) {
d(SceneConstant.M_TAXI_P + TAG, "updateOrderView = " + order!!.orderStatus)
setItineraryVisibility()
// 70 取消订单
if (TaxiPassengerOrderStatusEnum.Cancel.code == order.orderStatus) {
runOnUIThread {
mView!!.showOrHideOverMapViewFragment(false)
mView!!.showOrHideStartAutopilotView(false, false)
mView!!.showOrHidePressengerCheckPager(
false, "",
"", "", "", ""
)
mView!!.showOrHideArrivedEndLayout(false, "", "")
}
TaxiPassengerModel.recoverNaviInfo()
clearAutopilotControlParameters()
TaxiPassengerModel.startOrStopQueryOrderRemaining(false)
TaxiPassengerModel.startOrStopReadyToAutopilotLoop(false)
TaxiPassengerModel.cleanStation()
return
}
// 20 司机到达上车点
if (TaxiPassengerOrderStatusEnum.ArriveAtStart.code == order.orderStatus) {
runOnUIThread {
mView!!.preOrderThankPageTenlogic(
order.startSiteAddr,
order.endSiteAddr, order.passengerNum, order.carNumber, order.passengerPhone
)
}
return
}
// TODO: 2022/6/10 若乘客端确认已经上车,则显示开始行程按钮 并且不可点击 暗
// TODO: 2022/6/10 乘客已上车 需要开启轮询司机确认可以开启自动驾驶的接口
// TODO: 2022/6/10 若司机端已经确认,则显示开始行程按钮 并且可点击,第二步的轮询停止
//TODO: 2022/6/10 若订单取消或者隐藏则关掉开始行程界面,轮询也要取消
if (TaxiPassengerOrderStatusEnum.UserArriveAtStart.code == order.orderStatus) {
runOnUIThread {
d(SceneConstant.M_TAXI_P + TAG, "UserArriveAtStart")
mView!!.showOrHideStartAutopilotView(true, false)
}
//开启轮询司机是否已准备好开启自动驾驶的环境
TaxiPassengerModel.startDriverReadyToAutopilotLoop()
TaxiPassengerModel.setStation()
}
if (TaxiPassengerOrderStatusEnum.OnTheWayToEnd.code == order.orderStatus) {
runOnUIThread {
mView!!.showOrHideStartAutopilotView(false, false)
}
bizProvider.queryV2XEvents() //全览模式的V2X事件轮询开始
TaxiPassengerModel.startOrStopQueryOrderRemaining(true)
updateAutopilotControlParameters()
TaxiPassengerModel.startOrStopReadyToAutopilotLoop(false)
TaxiPassengerModel.setStation()
}
// 30 用户到达上车点 并通过了手机号后四位验证
// 40 服务中
if (TaxiPassengerOrderStatusEnum.UserArriveAtStart.code == order.orderStatus
|| TaxiPassengerOrderStatusEnum.OnTheWayToEnd.code == order.orderStatus
) {
runOnUIThread {
mView!!.showOrHideArrivedEndLayout(false, "", "")
mView!!.showOrHidePressengerCheckPager(
false, "",
"", "", "", ""
)
if (TaxiPassengerOrderStatusEnum.OnTheWayToEnd.code == order.orderStatus) {
invokeOrderStatus(true)
order?.let {
setItineraryVisibility()
when (TaxiPassengerModel.curOrderStatus) {
TaxiPassengerOrderStatusEnum.ArriveAtStart -> {
// 20 司机到达上车点
mView?.showOrHideArrivedEndLayout(isShow = false)
mView?.showOrHidePressengerCheckPager(true, order.startSiteAddr,
order.endSiteAddr, order.passengerNum, order.carNumber, order.passengerPhone)
}
}
return
}
// 50 到达终点 乘客可以评价
if (TaxiPassengerOrderStatusEnum.ArriveAtEnd.code == order.orderStatus) {
TaxiPassengerModel.recoverNaviInfo()
mView!!.showOrHideOverMapViewFragment(false)
clearAutopilotControlParameters()
TaxiPassengerModel.startOrStopQueryOrderRemaining(false)
runOnUIThread {
mView!!.showOrHideArrivedEndLayout(true, order.endSiteAddr, order.orderNo)
invokeOrderStatus(false)
TaxiPassengerOrderStatusEnum.UserArriveAtStart -> {
mView?.showOrHideStartAutopilotView(isShow = true, isClickable = false)
mView?.showOrHideArrivedEndLayout(isShow = false)
mView?.showOrHidePressengerCheckPager(isShow = false)
}
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
mView?.showOrHideStartAutopilotView(isShow = false, isClickable = false)
mView?.showOrHideArrivedEndLayout(isShow = false)
mView?.showOrHidePressengerCheckPager(isShow = false)
}
TaxiPassengerOrderStatusEnum.ArriveAtEnd -> {
// 50 到达终点 乘客可以评价
mView?.showOrHideArrivedEndLayout(true, order.endSiteAddr, order.orderNo)
mView?.showOrHideOverMapViewFragment(false)
}
TaxiPassengerOrderStatusEnum.Cancel -> {
// 70 取消订单
mView?.showOrHideOverMapViewFragment(false)
mView?.showOrHideStartAutopilotView(isShow = false, isClickable = false)
mView?.showOrHidePressengerCheckPager(isShow = false)
mView?.showOrHideArrivedEndLayout(isShow = false)
}
else -> {}
}
TaxiPassengerModel.cleanStation()
return
}
// 60 服务完成 页面
if (TaxiPassengerOrderStatusEnum.JourneyCompleted.code == order.orderStatus) {
clearAutopilotControlParameters()
TaxiPassengerModel.startOrStopQueryOrderRemaining(false)
mCurrentPassengerOrder = null
TaxiPassengerModel.cleanStation()
}
}
fun checkAndUpdateStatus(phone: String?) {
TaxiPassengerModel.checkPhoneAndUpdateStatus(phone) {
mView!!.showOrHidePressengerCheckPager(
false,
"",
"",
"",
"",
""
)
mView?.showOrHidePressengerCheckPager(isShow = false)
}
}
@@ -205,14 +126,14 @@ class BaseTaxiPassengerPresenter(view: TaxiPassengerBaseFragment?) :
fun setItineraryVisibility() {
UiThreadHandler.post {
when (TaxiPassengerModel.curOrderStatus) {
TaxiPassengerOrderStatusEnum.None -> mView?.showOrHideServingOrderFragment(false)
TaxiPassengerOrderStatusEnum.OnTheWayToStart -> mView?.showOrHideServingOrderFragment(true)
TaxiPassengerOrderStatusEnum.ArriveAtStart -> mView?.showOrHideServingOrderFragment(false)
TaxiPassengerOrderStatusEnum.UserArriveAtStart -> mView?.showOrHideServingOrderFragment(true)
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> mView?.showOrHideServingOrderFragment(true)
TaxiPassengerOrderStatusEnum.ArriveAtEnd -> mView?.showOrHideServingOrderFragment(true)
TaxiPassengerOrderStatusEnum.JourneyCompleted -> mView?.showOrHideServingOrderFragment(false)
TaxiPassengerOrderStatusEnum.None,
TaxiPassengerOrderStatusEnum.OnTheWayToStart,
TaxiPassengerOrderStatusEnum.ArriveAtStart,
TaxiPassengerOrderStatusEnum.JourneyCompleted,
TaxiPassengerOrderStatusEnum.ArriveAtEnd,
TaxiPassengerOrderStatusEnum.Cancel -> mView?.showOrHideServingOrderFragment(false)
TaxiPassengerOrderStatusEnum.UserArriveAtStart,
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> mView?.showOrHideServingOrderFragment(true)
}
}
}

View File

@@ -4,7 +4,7 @@ import android.os.Bundle
import android.view.View
import com.mogo.commons.mvp.MvpFragment
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager.getState
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
import com.mogo.eagle.core.function.call.map.CallerMapUIServiceManager
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.util.DeviceUtils
@@ -67,7 +67,7 @@ class TaxiPassengerBaseFragment() :
override fun initViews() {
initListener()
onAutopilotStatusChanged(getState())
onAutopilotStatusSuccessDone()
}
override fun initViews(savedInstanceState: Bundle?) {
@@ -161,26 +161,6 @@ class TaxiPassengerBaseFragment() :
overMapView.onResume()
}
/**
* 改变自动驾驶状态
*
* @param status 2 - running 1 - enable 2 - disable
*/
private var mPrevAPStatus = -1
fun onAutopilotStatusChanged(status: Int) {
if (IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING != status) {
// 1. 主动开启自动驾驶中不为2为0、1则继续loading
return
}
if ((IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == status
&& mPrevAPStatus != status)
) {
// 2. 主动开启自动驾驶中为2则停止loading并isStarting = false
onAutopilotStatusSuccessDone()
}
mPrevAPStatus = status
}
override fun createPresenter(): BaseTaxiPassengerPresenter {
return BaseTaxiPassengerPresenter(this)
}
@@ -269,11 +249,7 @@ class TaxiPassengerBaseFragment() :
fun showOrHideStartAutopilotView(isShow: Boolean, isClickable: Boolean) {
if (isShow) {
if (mStartAutopilotView == null || mStartAutopilotView!!.get() == null) {
mStartAutopilotView = WeakReference(
TaxiPassengerStartAutopilotView(
context
)
)
mStartAutopilotView = WeakReference(TaxiPassengerStartAutopilotView(context))
}
mStartAutopilotView!!.get()!!.setOnClickStartAutopilotBtnCallback(this)
OverlayViewUtils.showOverlayView(activity, mStartAutopilotView!!.get())
@@ -296,10 +272,12 @@ class TaxiPassengerBaseFragment() :
}
fun onAutopilotStatusSuccessDone() {
if (mStartAutopilotView == null || mStartAutopilotView!!.get() == null) {
return
if ((IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING == CallerAutoPilotStatusListenerManager.getState())) {
if (mStartAutopilotView == null || mStartAutopilotView!!.get() == null) {
return
}
mStartAutopilotView!!.get()!!.onAutopilotStatusSuccess()
}
mStartAutopilotView!!.get()!!.onAutopilotStatusSuccess()
}
/**
@@ -313,7 +291,7 @@ class TaxiPassengerBaseFragment() :
* @param arrivedEndStation 目的地
* @param orderNo 订单No
*/
fun showOrHideArrivedEndLayout(isShow: Boolean, arrivedEndStation: String?, orderNo: String?) {
fun showOrHideArrivedEndLayout(isShow: Boolean, arrivedEndStation: String?="", orderNo: String?="") {
if (isShow) {
if (mArrivedEndView == null || mArrivedEndView!!.get() == null) {
initArrivedView()
@@ -337,21 +315,6 @@ class TaxiPassengerBaseFragment() :
}
}
// 20 司机到达上车点
fun preOrderThankPageTenlogic(
startSiteAddr: String?,
endSiteAddr: String?,
passengerNum: String?,
carNumber: String?,
phone: String?
) {
showOrHideArrivedEndLayout(false, "", "")
showOrHidePressengerCheckPager(
true, startSiteAddr,
endSiteAddr, passengerNum, carNumber, phone
)
}
/**
* ① 取消订单 到达上车点后乘客取消订单 隐藏乘客验证页面
* ② 司机到达上车点 到达上车点 展示乘客验证页面
@@ -359,11 +322,12 @@ class TaxiPassengerBaseFragment() :
* ④ debug 使用
*/
fun showOrHidePressengerCheckPager(
isShow: Boolean, startSiteAddr: String?,
endSiteAddr: String?,
passengerNum: String?,
carNumber: String?,
phone: String?
isShow: Boolean,
startSiteAddr: String? = "",
endSiteAddr: String? = "",
passengerNum: String? = "",
carNumber: String? = "",
phone: String? = ""
) {
try {
if (isShow) {
@@ -384,22 +348,6 @@ class TaxiPassengerBaseFragment() :
}
}
/**
* 用户评分后接口回调
*
* @param isSuccess true 打分成功 false 打分失败
*/
fun showArrivedEndLayout2Thank(isSuccess: Boolean) {
if (mArrivedEndView == null || mArrivedEndView!!.get() == null) {
initArrivedView()
}
if (isSuccess) {
mArrivedEndView!!.get()!!.scoreSuccess()
} else {
mArrivedEndView!!.get()!!.scoreFail()
}
}
override fun onClickCallback() {
mPresenter!!.startAutopilot()
}

View File

@@ -90,7 +90,11 @@ class ItineraryView : ConstraintLayout, OrderInfoViewModel.ItineraryViewCallback
actv_speed_value.text = speedValue
}
override fun setEndStation(endStation:String){
actv_endstation.text = endStation
if(endStation.length>9){
actv_endstation.text = "${endStation.subSequence(0,9)}"
}else {
actv_endstation.text = endStation
}
}
var prePercentage = 0f

View File

@@ -11,6 +11,7 @@ import com.mogo.och.common.module.utils.NumberFormatUtil
import com.mogo.och.taxi.passenger.R
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.TaxiPassengerModel
import kotlin.math.abs
import kotlin.math.ceil
@@ -22,7 +23,12 @@ class OrderInfoViewModel: ViewModel(), IMoGoChassisLocationGCJ02Listener,
private var viewCallback:ItineraryViewCallback?=null
private var disUnit:String
private var surplusTimeUnit:String
init {
disUnit = AbsMogoApplication.getApp().getString(R.string.taxi_p_distance_unit_km)
surplusTimeUnit = AbsMogoApplication.getApp().getString(R.string.taxi_p_surplustime)
// 设置起点和终点marker和实时车辆位置
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, 4, this)
TaxiPassengerModel.setOrderStatusCallback(TAG,this)
@@ -61,6 +67,18 @@ class OrderInfoViewModel: ViewModel(), IMoGoChassisLocationGCJ02Listener,
viewCallback?.setEndStation(it)
}
}
when (TaxiPassengerModel.curOrderStatus) {
TaxiPassengerOrderStatusEnum.OnTheWayToEnd -> {
}
else ->{
UiThreadHandler.post {
viewCallback?.setDistanceInfo(
"--", disUnit, "--", surplusTimeUnit, "--", 0, 100
)
}
}
}
}
override fun onCurrentOrderDistToEndChanged(meters: Long, timeInSecond: Long,stationDistance:Int) {
@@ -71,14 +89,13 @@ class OrderInfoViewModel: ViewModel(), IMoGoChassisLocationGCJ02Listener,
disUnit = AbsMogoApplication.getApp().getString(R.string.taxi_p_distance_unit_m)
dis = Math.round(meters.toFloat()).toString()
} else {
disUnit = AbsMogoApplication.getApp().getString(R.string.taxi_p_distance_unit_km)
dis = NumberFormatUtil.formatLong(meters.toDouble() / 1000)
}
}
val time = ceil(timeInSecond / 60f).toInt()
val arriveTime = DateTimeUtil.getAfterSecondTime(timeInSecond.toInt())
val surplusTimeUnit = AbsMogoApplication.getApp().getString(R.string.taxi_p_surplustime)
UiThreadHandler.post {
viewCallback?.setDistanceInfo(
dis!!,disUnit,time.toString(),surplusTimeUnit,arriveTime,stationDistance-meters.toInt(),stationDistance)

View File

@@ -52,7 +52,7 @@
app:layout_constraintBottom_toBottomOf="@+id/actv_speed_unit"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/actv_speed_unit"
android:text="环球贸易中心" />
android:text="--" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_endstation_title"
@@ -89,7 +89,7 @@
app:layout_constraintEnd_toStartOf="@+id/actv_surplus_time"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/actv_speed_value"
android:text="12" />
android:text="--" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_distance_unit"
@@ -112,7 +112,7 @@
app:layout_constraintEnd_toStartOf="@+id/actv_arrived_time"
app:layout_constraintStart_toEndOf="@+id/actv_distance"
app:layout_constraintTop_toTopOf="@+id/actv_distance"
android:text="23.6" />
android:text="--" />
<androidx.appcompat.widget.AppCompatTextView
android:id="@+id/actv_surplus_time_unit"
@@ -133,7 +133,7 @@
android:textSize="@dimen/dp_61"
android:textColor="@color/taxi_p_081831"
android:layout_marginEnd="@dimen/dp_58"
android:text="15:05"
android:text="--"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toEndOf="@+id/actv_surplus_time"
app:layout_constraintTop_toTopOf="@+id/actv_distance" />