[1.1.2]
[登录状态查询轮训]
This commit is contained in:
yangyakun
2023-02-25 14:47:07 +08:00
parent 03e8de4831
commit ebf9cd4220
11 changed files with 260 additions and 154 deletions

View File

@@ -0,0 +1,3 @@
package com.mogo.och.bus.passenger.bean
data class LoopInfo(val interval:Long,val function: () -> Unit)

View File

@@ -20,12 +20,15 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.bean.LoopInfo
import com.mogo.och.bus.passenger.bean.response.M1DriverLoginStatusResponse
import com.mogo.och.bus.passenger.callback.IBusPassengerADASStatusCallback
import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback
import com.mogo.och.bus.passenger.net.BusPassengerModelLoopManager
import com.mogo.och.bus.passenger.net.BusPassengerServiceManager
import com.mogo.och.bus.passenger.utils.RxUtils
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.constant.TaxiLoginStatusEnum
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import io.reactivex.disposables.Disposable
import mogo.telematics.pad.MessagePad
@@ -40,6 +43,7 @@ import java.util.concurrent.ConcurrentHashMap
object BusPassengerModel {
private const val TAG = "BusPassengerModel"
private const val TAGLOGIN = "BusPassengerModelLogin"
private lateinit var mContext: Context
@@ -47,47 +51,45 @@ object BusPassengerModel {
var mADASStatusCallback: IBusPassengerADASStatusCallback? = null
// bus路线信息更新
private val mControllerStatusCallbackMap = ConcurrentHashMap<String, IBusPassengerControllerStatusCallback>()
private val mControllerStatusCallbackMap =
ConcurrentHashMap<String, IBusPassengerControllerStatusCallback>()
// 当前位置坐标
private var mLocation: MogoLocation? = null
private var sub4LoginStatus: Disposable? = null
fun init() {
AbsMogoApplication.getApp().also { this.mContext = it }
initListeners()
// 启动轮询查询司机登录状态
queryDriverOperationStatus()
}
/**
* 启动轮询查询司机登录状态
*/
private fun listenerLoginStatus() {
LoginStatusManager.setControllerStatusCallback(TAG,
object : LoginStatusManager.ILoginStatusChangeListener {
override fun onStatusChange(currentStatus: TaxiLoginStatusEnum) {
if (LoginStatusManager.isLogin()) {
BusPassengerModelLoopManager.setControllerStatusCallback(TAGLOGIN)
} else {
BusPassengerModelLoopManager.setControllerStatusCallback(TAGLOGIN, LoopInfo(3,::queryDriverOperationStatus))
}
}
})
}
/**
* 查询车辆登录状态、车牌、司机手机号、司机sn
*/
private fun queryDriverOperationStatus() {
fun queryDriverOperationStatus() {
BusPassengerServiceManager.queryDriverOperationStatus(
mContext, object : OchCommonServiceCallback<M1DriverLoginStatusResponse> {
override fun onSuccess(data: M1DriverLoginStatusResponse?) {
if (data?.data == null) return
LoginStatusManager.setLoginStatus(data.data.driverStatus)
}
override fun onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip))
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip))
}
sub4LoginStatus = RxUtils.createSubscribe(3000) {
queryDriverOperationStatus()
}
}
override fun onFail(code: Int, msg: String) {
//延迟3s再次查询
sub4LoginStatus = RxUtils.createSubscribe(3000) {
queryDriverOperationStatus()
}
}
override fun onFail(code: Int, msg: String) {}
})
}
@@ -102,14 +104,18 @@ object BusPassengerModel {
private fun initListeners() {
// 网络状态变更
IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener)
IntentManager.getInstance()
.registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener)
// 自动驾驶状态变化监听
CallerAutoPilotStatusListenerManager.addListener(TAG, mGoAutopilotStatusListener)
// 定位监听
CallerChassisLocationGCJ02ListenerManager.addListener(TAG, mMapLocationListener)
// 自动驾驶路线规划接口 返回自动驾驶轨迹
CallerPlanningRottingListenerManager.addListener(TAG, moGoAutopilotPlanningListener)
// 登录状态监听
listenerLoginStatus()
}
fun release() {
releaseListeners()
startOrStopCalculateRouteInfo(false)
@@ -148,7 +154,8 @@ object BusPassengerModel {
private var mPreAutoStatus = -1
// 自动驾驶状态监听
private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener = object : IMoGoAutopilotStatusListener {
private val mGoAutopilotStatusListener: IMoGoAutopilotStatusListener =
object : IMoGoAutopilotStatusListener {
override fun onAutopilotIpcConnectStatusChanged(status: Int, reason: String?) {}
override fun onAutopilotGuardian(guardianInfo: MogoReportMsg.MogoReportMessage?) {}
override fun onAutopilotStatusResponse(autoPilotStatusInfo: AutopilotStatusInfo) {
@@ -167,6 +174,7 @@ object BusPassengerModel {
override fun onAutopilotArriveAtStation(arrivalNotification: MessagePad.ArrivalNotification?) {
mADASStatusCallback?.onAutopilotArriveEnd()
}
override fun onAutopilotStatusRespByQuery(status: SystemStatusInfo.StatusInfo) {}
}
@@ -176,7 +184,10 @@ object BusPassengerModel {
private val moGoAutopilotPlanningListener: IMoGoPlanningRottingListener =
object : IMoGoPlanningRottingListener {
override fun onAutopilotRotting(globalPathResp: MessagePad.GlobalPathResp?) {
CallerLogger.d(M_BUS_P + TAG, "onAutopilotRotting = ${GsonUtil.jsonFromObject(globalPathResp)}")
CallerLogger.d(
M_BUS_P + TAG,
"onAutopilotRotting = ${GsonUtil.jsonFromObject(globalPathResp)}"
)
globalPathResp?.wayPointsList?.let {
}

View File

@@ -2,12 +2,10 @@ package com.mogo.och.bus.passenger.net
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P
import com.mogo.och.bus.passenger.callback.IBusPassengerControllerStatusCallback
import com.mogo.och.bus.passenger.bean.LoopInfo
import com.mogo.och.bus.passenger.constant.BusPassengerConst
import com.mogo.och.bus.passenger.model.BusPassengerModel
import com.mogo.och.bus.passenger.utils.RxUtils
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
import io.reactivex.schedulers.Schedulers
import java.util.concurrent.ConcurrentHashMap
@@ -22,24 +20,25 @@ object BusPassengerModelLoopManager {
private val TAG = "BusPassengerModelLoopManager"
private val mControllerStatusCallbackMap = ConcurrentHashMap<String, (index:Long) -> Unit>()
private val mControllerStatusCallbackMap = ConcurrentHashMap<String, LoopInfo>()
fun setControllerStatusCallback(tag: String,function:((index:Long) -> Unit)?) {
fun setControllerStatusCallback(tag: String, function: LoopInfo) {
if (tag.isBlank()) return
if (function == null) {
mControllerStatusCallbackMap.remove(tag)
if(mControllerStatusCallbackMap.size==0){
stopLineLoop()
}
return
}
mControllerStatusCallbackMap[tag] = function
if(mControllerStatusCallbackMap.size>0){
if (mControllerStatusCallbackMap.size > 0) {
startLineLoop()
}
}
fun setControllerStatusCallback(tag: String) {
if (tag.isBlank()) return
mControllerStatusCallbackMap.remove(tag)
if (mControllerStatusCallbackMap.size == 0) {
stopLineLoop()
}
}
// 订单  轮训
// 订单时间轮训
// 车辆状态轮训
@@ -58,9 +57,16 @@ object BusPassengerModelLoopManager {
.map { aLong: Long -> aLong + 1 }
.subscribeOn(Schedulers.io())
.subscribe { aLong: Long? ->
mControllerStatusCallbackMap.forEach { (_, function) ->
mControllerStatusCallbackMap.forEach { (tag, loopInfo) ->
aLong?.let {
function.invoke(it)
if (it % loopInfo.interval == 0L) {
try {
loopInfo.function.invoke()
CallerLogger.d(TAG, "${aLong}正在执行方法${tag}")
}catch (e:Throwable){
CallerLogger.e(TAG,"$tag:--$e")
}
}
}
}
}

View File

@@ -1,11 +1,9 @@
package com.mogo.och.bus.passenger.net
import android.content.Context
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.och.bus.passenger.bean.response.M1DriverLoginStatusResponse
import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse
import com.mogo.och.bus.passenger.bean.response.*
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
@@ -20,45 +18,65 @@ object BusPassengerServiceManager {
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl())
.create(PassengerServiceApi::class.java)
/**
* 获取Bus司机端的sn
* @return
*/
private val driverAppSn: String
get() = getServerToken()
/**
* 查询司机端出车收车状态,以及车牌号
*/
@JvmStatic
fun queryDriverOperationStatus(
context: Context,
callback: OchCommonServiceCallback<M1DriverLoginStatusResponse>?
) {
mBusPassengerServiceApi.queryDriverOperationStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
MoGoAiCloudClientConfig.getInstance().token,
driverAppSn
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus"))
mBusPassengerServiceApi.queryDriverOperationStatus().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "loginStatus"))
}
/**
* 查询司机端出车收车状态,以及车牌号
*/
@JvmStatic
fun queryOrderInfo(
fun queryLineList(context: Context, callback: OchCommonServiceCallback<LineInfoResponse>?) {
mBusPassengerServiceApi.queryLineList().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "lineList"))
}
@JvmStatic
fun queryLineSiteList(
context: Context,
callback: OchCommonServiceCallback<OrderInfoResponse>?
lindId: String,
callback: OchCommonServiceCallback<SiteInfoResponse>?
) {
mBusPassengerServiceApi.queryOrderInfo(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
MoGoAiCloudClientConfig.getInstance().token,
driverAppSn
)
.transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus"))
mBusPassengerServiceApi.queryLineSiteList(lineId = lindId).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "siteList"))
}
@JvmStatic
fun queryBusinessStatus(
context: Context,
callback: OchCommonServiceCallback<BusinessStatusResponse>?
) {
mBusPassengerServiceApi.queryBusinessStatus().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "businessStatus"))
}
@JvmStatic
fun endOrder(context: Context, callback: OchCommonServiceCallback<BaseData>?) {
mBusPassengerServiceApi.endOrder().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "serviceEnd"))
}
@JvmStatic
fun queryLocusByLineId(
context: Context,
lindId: String,
callback: OchCommonServiceCallback<LocusResponse>?
) {
mBusPassengerServiceApi.queryLocusByLineId(lineId = lindId).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "contrail"))
}
@JvmStatic
fun queryBusinessTime(
context: Context,
callback: OchCommonServiceCallback<BusinessTimeResponse>?
) {
mBusPassengerServiceApi.queryBusinessTime().transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryBusinessTime"))
}
}

View File

@@ -1,73 +0,0 @@
package com.mogo.och.bus.passenger.net;
import com.mogo.och.bus.passenger.bean.response.BusinessStatusResponse;
import com.mogo.och.bus.passenger.bean.response.BusinessTimeResponse;
import com.mogo.och.bus.passenger.bean.response.LineInfoResponse;
import com.mogo.och.bus.passenger.bean.response.LocusResponse;
import com.mogo.och.bus.passenger.bean.response.M1DriverLoginStatusResponse;
import com.mogo.och.bus.passenger.bean.response.OrderInfoResponse;
import com.mogo.och.bus.passenger.bean.response.SiteInfoResponse;
import com.mogo.eagle.core.data.BaseData;
import io.reactivex.Observable;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Query;
/**
* 包车乘客端接口定义
*/
interface PassengerServiceApi {
/**
* 01查询司机端的登陆状态 06
*/
@GET("/och-rental-cabin/api/business/v1/driver/loginStatus")
Observable<M1DriverLoginStatusResponse> queryDriverOperationStatus(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn);
/**
* 02查询服务中的订单 08
*/
@GET("/och-rental-cabin/api/business/v1/driver/order")
Observable<OrderInfoResponse> queryOrderInfo(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn);
/**
* 03查询所在城市的所有线路 09
*/
@GET("/och-rental-cabin/api/business/v1/driver/lineList")
Observable<LineInfoResponse> queryLineList(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn);
/**
* 04查询所选线路的站点 10
*/
@GET("/och-rental-cabin/api/business/v1/driver/siteList")
Observable<SiteInfoResponse> queryLineSiteList(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn, @Query("sn") String lineId);
/**
* 05查询车辆服务状态 07
* 轮训查询订单状态和状态流转
*/
@GET("/och-rental-cabin/api/business/v1/driver/businessStatus")
Observable<BusinessStatusResponse> queryBusinessStatus(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn);
/**
* 06结束订单 03
*/
@GET("/och-rental-cabin/api/flow/v1/driver/serviceEnd")
Observable<BaseData> endOrder(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn);
/**
* 07查询线路的轨迹文件信息 12
* 启动自动驾驶使用
*/
@GET("/och-rental-cabin/api/business/v1/driver/contrail")
Observable<LocusResponse> queryLocusByLineId(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn, @Query("lineId") String lineId);
/**
* 08查询包车业务时间 11
* 倒计时5分钟 消息盒子、倒计时结束弹窗
*/
@GET("/och-rental-cabin/api/business/v1/driver/queryBusinessTime")
Observable<BusinessTimeResponse> queryBusinessTime(@Header("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn);
}

View File

@@ -0,0 +1,100 @@
package com.mogo.och.bus.passenger.net
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.och.bus.passenger.bean.response.*
import io.reactivex.Observable
import retrofit2.http.GET
import retrofit2.http.Header
import retrofit2.http.Query
/**
* 包车乘客端接口定义
*/
internal interface PassengerServiceApi {
/**
* 01查询司机端的登陆状态 06
*/
@GET("/och-rental-cabin/api/business/v1/driver/loginStatus")
fun queryDriverOperationStatus(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = CallerTelematicManager.getServerToken()
): Observable<M1DriverLoginStatusResponse>
/**
* 02查询服务中的订单 08
*/
@GET("/och-rental-cabin/api/business/v1/driver/order")
fun queryOrderInfo(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = CallerTelematicManager.getServerToken()
): Observable<OrderInfoResponse>
/**
* 03查询所在城市的所有线路 09
*/
@GET("/och-rental-cabin/api/business/v1/driver/lineList")
fun queryLineList(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = CallerTelematicManager.getServerToken()
): Observable<LineInfoResponse>
/**
* 04查询所选线路的站点 10
*/
@GET("/och-rental-cabin/api/business/v1/driver/siteList")
fun queryLineSiteList(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = CallerTelematicManager.getServerToken(),
@Query("lineId") lineId: String?
): Observable<SiteInfoResponse>
/**
* 05查询车辆服务状态 07
* 轮训查询订单状态和状态流转
*/
@GET("/och-rental-cabin/api/business/v1/driver/businessStatus")
fun queryBusinessStatus(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = CallerTelematicManager.getServerToken()
): Observable<BusinessStatusResponse>
/**
* 06结束订单 03
*/
@GET("/och-rental-cabin/api/flow/v1/driver/serviceEnd")
fun endOrder(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = CallerTelematicManager.getServerToken()
): Observable<BaseData>
/**
* 07查询线路的轨迹文件信息 12
* 启动自动驾驶使用
*/
@GET("/och-rental-cabin/api/business/v1/driver/contrail")
fun queryLocusByLineId(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = CallerTelematicManager.getServerToken(),
@Query("lineId") lineId: String?
): Observable<LocusResponse>
/**
* 08查询包车业务时间 11
* 倒计时5分钟 消息盒子、倒计时结束弹窗
*/
@GET("/och-rental-cabin/api/business/v1/driver/queryBusinessTime")
fun queryBusinessTime(
@Header("appId") appId: String = MoGoAiCloudClientConfig.getInstance().serviceAppId,
@Header("ticket") ticket: String=MoGoAiCloudClientConfig.getInstance().token,
@Query("sn") sn: String = CallerTelematicManager.getServerToken()
): Observable<BusinessTimeResponse>
}

View File

@@ -4,6 +4,7 @@ import android.os.Bundle
import android.view.View
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.mvp.MvpFragment
import com.mogo.eagle.core.function.hmi.ui.msgbox.MMsgBoxButtonView
import com.mogo.eagle.core.function.hmi.ui.setting.ToggleDebugView
@@ -12,8 +13,10 @@ 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.AppStateManager
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.bus.passenger.R
import com.mogo.och.bus.passenger.presenter.BusPassengerPresenter
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import kotlinx.android.synthetic.m1.m1_main_fragment.*
import java.lang.ref.WeakReference
@@ -45,14 +48,22 @@ class MainFragment :
openSettingPage(M1ContainFragment.SETTINGDEVICETAB)
}
cb_bp_setting_order.onClick {
openSettingPage(M1ContainFragment.SETTINGORDERTAB)
if (LoginStatusManager.isLogin()) {
openSettingPage(M1ContainFragment.SETTINGORDERTAB)
}else{
ToastUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver))
}
}
iv_end_order.onClick {
if (LoginStatusManager.isLogin()) {
// TODO: 结束订单
}else{
ToastUtils.showShort(AbsMogoApplication.getApp().getString(R.string.m1_please_login_driver))
}
}
v_debug.setOnLongClickListener {
ToggleDebugView.toggleDebugView.toggle(requireContext())
true
}
viewBusPM1MsgBoxButton.onClick {
}
viewBusPM1MsgBoxButton.setClickListener(object : MMsgBoxButtonView.ClickListener {
override fun showMsgBoxList(show: Boolean) {

View File

@@ -207,6 +207,7 @@
android:layout_height="@dimen/dp_179"/>
<ImageView
android:id="@+id/iv_end_order"
android:src="@drawable/m1_order_end"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -24,5 +24,9 @@
<string name="bus_p_m1_speed_unit">KM/h</string>
<string name="m1_please_login_driver">请安全员登录司机屏</string>
</resources>

View File

@@ -1,28 +1,36 @@
package com.mogo.och.common.module.biz.constant
import java.util.concurrent.ConcurrentHashMap
object LoginStatusManager {
/**
* 登录状态
*/
private var loginStatus: TaxiLoginStatusEnum = TaxiLoginStatusEnum.None
private val mStatusChangeListener = ConcurrentHashMap<String, ILoginStatusChangeListener>()
@JvmStatic
fun setLoginStatus(status: Int) {
when (status) {
0 -> {
this.loginStatus = TaxiLoginStatusEnum.Logout
setLoginStatus(TaxiLoginStatusEnum.Logout)
}
1 -> {
this.loginStatus = TaxiLoginStatusEnum.Login
setLoginStatus(TaxiLoginStatusEnum.Login)
}
else -> {
this.loginStatus = TaxiLoginStatusEnum.None
setLoginStatus(TaxiLoginStatusEnum.None)
}
}
}
@JvmStatic
fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) {
this.loginStatus = loginStatus
if(loginStatus!=this.loginStatus){
this.loginStatus = loginStatus
for (callback in mStatusChangeListener.values) {
callback.onStatusChange(loginStatus)
}
}
}
@JvmStatic
fun getLoginStatus(): TaxiLoginStatusEnum {
@@ -35,4 +43,17 @@ object LoginStatusManager {
}
return false
}
fun setControllerStatusCallback(tag: String, callback: ILoginStatusChangeListener?) {
if (tag.isBlank()) return
if (callback == null) {
mStatusChangeListener.remove(tag)
return
}
mStatusChangeListener[tag] = callback
}
interface ILoginStatusChangeListener{
fun onStatusChange(currentStatus:TaxiLoginStatusEnum)
}
}

View File

@@ -2,6 +2,8 @@ package com.mogo.och.common.module.biz.network.interceptor
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.constant.TaxiLoginStatusEnum
import io.reactivex.Observable
import io.reactivex.ObservableSource
import io.reactivex.functions.Function
@@ -13,6 +15,8 @@ class FRetryWithTime<T : BaseData> : Function<T, ObservableSource<T>> {
if (it.code == 100046 || it.code == 100045 || it.code == 100005 || it.code == 100006 || it.code == 520003) {
MoGoAiCloudClient.getInstance().refreshToken()
return Observable.error(OchCommonRetryException())
}else if(it.code == 1003){
LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Logout)
}
}
return Observable.just(baseData)