[登录模块分离]
This commit is contained in:
yangyakun
2024-04-03 11:09:32 +08:00
parent 291b73a336
commit 884b09b916
110 changed files with 1193 additions and 2265 deletions

View File

@@ -14,6 +14,7 @@ import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.bus.constant.BusConst;
import com.mogo.och.bus.fragment.BusFragment;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -23,7 +24,7 @@ import org.jetbrains.annotations.Nullable;
*
* @author tongchenfei
*/
@Route(path = BusConst.PATH)
@Route(path = OchCommonConst.BUS_DRIVER)
public class BusProvider implements IMogoOCH {
private static final String TAG = "BusProvider";

View File

@@ -32,13 +32,10 @@ import com.mogo.map.overlay.point.Point;
import com.mogo.och.bus.R;
import com.mogo.och.bus.bean.BusStationBean;
import com.mogo.och.bus.constant.BusConst;
import com.mogo.och.bus.net.login.LoginBusImpl;
import com.mogo.och.bus.presenter.BusPresenter;
import com.mogo.och.bus.ui.BusStationCommonItem;
import com.mogo.och.bus.ui.BusSwitchLineActivity;
import com.mogo.och.bus.view.SlidePanelView;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.common.module.utils.BlinkAnimationUtil;
import com.mogo.och.common.module.utils.OCHThreadPoolManager;
import com.mogo.och.common.module.utils.QRUtilsKt;
@@ -75,8 +72,6 @@ public class BusFragment extends BaseBusTabFragment<BusFragment, BusPresenter>
private BusStationCommonItem secondStationItem;
private BusStationCommonItem thirdStationItem;
private LoginService loginService;
@Override
public String getTagName() {
return "BusFragment";
@@ -85,17 +80,11 @@ public class BusFragment extends BaseBusTabFragment<BusFragment, BusPresenter>
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation();
if (loginService != null) {
loginService.registerFragment(this, getPresenter(), new LoginBusImpl());
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
loginService.unRegisterFragment();
loginService = null;
}
@Override

View File

@@ -59,8 +59,8 @@ import com.mogo.och.common.module.bean.dpmsg.AppConnectMsg;
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager;
import com.mogo.och.common.module.biz.common.socketmessage.data.OCHOperationalMessage;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.common.module.callback.OchAdasStartFailureCallback;
import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager;
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
@@ -123,8 +123,6 @@ public class OrderModel {
//0: 代表没有启动过 1代表是启动第一次当>=1 代表是重试 每次到站/路线结束清空置为0
private volatile int firstStartAutopilot = 0;
private LoginService loginService;
private final Handler handler = new Handler(msg -> {
if (msg.what == MSG_QUERY_BUS_STATION) {
queryBusRoutes();
@@ -149,7 +147,6 @@ public class OrderModel {
public void init() {
mContext = AbsMogoApplication.getApp();
loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation();
// 定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,5, mMapLocationListener);
@@ -315,7 +312,6 @@ public class OrderModel {
CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG);
TrajectoryManager.INSTANCE.addTrajectoryListListenerr(TAG,null);
loginService = null;
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null);
@@ -1172,7 +1168,7 @@ public class OrderModel {
public void logout() {
double mLatitude = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLatitude();
double mLongitude =CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02().getLongitude();
loginService.loginOut(mLatitude, mLongitude);
LoginStatusManager.loginOut(mLatitude, mLongitude);
}
public void triggerStartServiceEvent(boolean isRestart, boolean send) {

View File

@@ -1,47 +0,0 @@
package com.mogo.och.bus.net.login
import android.content.Context
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.network.LoginDefaultManage
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
class LoginBusImpl: LoginDefaultManage {
override fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
OchCommonServiceManager.getPhoneCode(context,phone,callback)
}
override fun gotoLoginBycode(
context: Context,
phone: String?,
code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
OchCommonServiceManager.gotoLoginBycode(context,phone,code,location4Login,callback)
}
override fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
OchCommonServiceManager.logout(context,location4Login,callback)
}
override fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
OchCommonServiceManager.queryDriverServiceStatus(context,callback)
}
}

View File

@@ -1,150 +0,0 @@
package com.mogo.och.bus.net.login
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.commons.storage.SharedPrefsMgr
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
/**
* Created by pangfan on 2021/8/19
*/
object OchCommonServiceManager {
private const val TAG = "OchCommonServiceManager"
private val mLoginServiceApi: OchLoginServiceApi =
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
OchLoginServiceApi::class.java
)
private val mLoginSaasServiceApi: OchSAASLoginServiceApi =
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
OchSAASLoginServiceApi::class.java
)
/**
* 获取手机验证码
* @param context
* @param callback
*/
@JvmStatic
fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
if (DebugConfig.getProjectFlavor().contains("saas")){
mLoginSaasServiceApi.getPhoneCode(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginSmsReqBean(phone)
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "getPhoneCode"))
}else{
mLoginServiceApi.getPhoneCode(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginSmsReqBean(phone)
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "getPhoneCode"))
}
}
/**
* 通过验证码登录
* @param context
* @param callback
*/
@JvmStatic
fun gotoLoginBycode(
context: Context, phone: String?, code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
val sn = SharedPrefsMgr.getInstance().sn
if (DebugConfig.getProjectFlavor().contains("saas")){
mLoginSaasServiceApi.gotoLoginBycode4Bus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginReqBean(phone, code, sn, location4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "gotoLoginBycode"))
}else{
mLoginServiceApi.gotoLoginBycode4Bus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginReqBean(phone, code, sn, location4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "gotoLoginBycode"))
}
}
/**
* 登出
*/
@JvmStatic
fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
if (DebugConfig.getProjectFlavor().contains("saas")){
mLoginSaasServiceApi.logout4Bus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLogoutReqBean(SharedPrefsMgr.getInstance().sn, location4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "logout"))
}else{
mLoginServiceApi.logout4Bus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLogoutReqBean(SharedPrefsMgr.getInstance().sn, location4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "logout"))
}
}
/**
* 接单状态和登录状态查询
*
* @param context
* @param callback
*/
@JvmStatic
fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
if (SharedPrefsMgr.getInstance().token.isEmpty()) {
callback?.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等")
MoGoAiCloudClient.getInstance().refreshToken()
return
}
if (DebugConfig.getProjectFlavor().contains("saas")){
mLoginSaasServiceApi.queryDriverServiceStatusAndLoginStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceStatus"))
}else{
mLoginServiceApi.queryDriverServiceStatusAndLoginStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceStatus"))
}
}
}

View File

@@ -1,66 +0,0 @@
package com.mogo.och.bus.net.login;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean;
import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
/**
* Created by pangfan on 2021/8/19
* <p>
* 网约车-出租车接口定义
*/
interface OchSAASLoginServiceApi {
/**
* 获取手机验证码
*
* @return
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-bus-cabin/api/sms/v1/driver/sendSms")
Observable<DriverStatusQueryRespBean> getPhoneCode(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginSmsReqBean data);
/**
* 通过验证码登录
*
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-bus-cabin/cab/flow/v1/bus/driver/startOperation")
Observable<TaxiLoginRespBean> gotoLoginBycode4Bus(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
/**
* 登出接口
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-bus-cabin/cab/flow/v1/bus/driver/endOperation")
Observable<BaseData> logout4Bus(@Header("appId") String appId, @Header("ticket") String ticket,
@Body TaxiLogoutReqBean data);
/**
* 接单状态和登录状态查询 出租车司机端、小巴车司机端、小巴车乘客端
*
* @param sn
* @return
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@GET("/och-bus-cabin/api/business/v1/loginStatus")
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header("appId") String appId
, @Header("ticket") String ticket, @Query("sn") String sn);
}

View File

@@ -27,9 +27,8 @@ import com.mogo.och.bus.fragment.BusFragment;
import com.mogo.och.bus.model.OrderModel;
import com.mogo.och.bus.util.BusTrajectoryManager;
import com.mogo.och.bus.util.BusVoiceManager;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.callback.ILoginCallback;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.biz.login.ILoginCallback;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
import com.mogo.och.common.module.manager.autopilotmanager.autopilot.ArrivedStation;
import com.mogo.och.common.module.manager.autopilotmanager.autopilot.IOchAutopilotStatusListener;
@@ -266,7 +265,7 @@ public class BusPresenter extends Presenter<BusFragment>
}
@Override
public void loginSuccess(DriverStatusQueryRespBean data) {
public void loginSuccess() {
CallerLogger.d(M_BUS + TAG, " loginStatus =" + LoginStatusManager.isLogin());
if(LoginStatusManager.isLogin()){
OrderModel.getInstance().startOrStopOrderLoop(true);
@@ -281,11 +280,6 @@ public class BusPresenter extends Presenter<BusFragment>
}
}
@Override
public void loginFail(boolean isLogin) {
}
@Override
public void playPassenger(WriteOffPassenger passenger) {
int passengerNum = passenger.passengerSize;

View File

@@ -9,9 +9,8 @@ import com.mogo.eagle.core.utilcode.util.GsonUtils;
import com.mogo.och.bus.bean.BusRoutesResult;
import com.mogo.och.bus.constant.BusConst;
import com.mogo.och.bus.model.OrderModel;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager;
import com.zhidao.socket.utils.LoginStatusUtil;
import java.util.concurrent.TimeUnit;

View File

@@ -15,6 +15,7 @@ import com.mogo.eagle.core.utilcode.util.MultiDisplayUtils
import com.mogo.och.bus.passenger.constant.BusPassengerConst
import com.mogo.och.bus.passenger.ui.BusPassengerRouteFragment
import com.mogo.och.bus.passenger.passenger.ui.PM2BaseFragment
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.wigets.media.MediaPlayerActivity
/**
@@ -22,7 +23,7 @@ import com.mogo.och.common.module.wigets.media.MediaPlayerActivity
*
* Created on 2022/3/29
*/
@Route(path = BusPassengerConst.PATH)
@Route(path = OchCommonConst.BUS_PASSENGER)
class MogoOCHBusPassenger : IMoGoFunctionProvider {
private var mActivity: FragmentActivity? = null
private var mContainerId = 0

View File

@@ -8,13 +8,14 @@ import com.magic.mogo.och.charter.constant.CharterConst
import com.magic.mogo.och.charter.fragment.DriverM1Fragment
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.och.common.module.biz.constant.OchCommonConst
/**
* @author: wangmingjun
* @date: 2023/2/22
*/
@Route(path = CharterConst.PATH)
@Route(path = OchCommonConst.CHARTER_DRIVER)
class CharterProvider: IMoGoFunctionProvider{
private var mActivity: FragmentActivity? = null

View File

@@ -5,13 +5,11 @@ import android.os.Bundle
import android.os.CountDownTimer
import android.view.View.GONE
import android.view.View.VISIBLE
import com.alibaba.android.arouter.launcher.ARouter
import com.magic.mogo.och.charter.R
import com.magic.mogo.och.charter.base.CharterBaseFragment
import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse
import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse.Result.Companion.ARRIVING
import com.magic.mogo.och.charter.constant.CharterConst.Companion.LOOP_PERIOD_60S
import com.magic.mogo.och.charter.net.login.LoginDriverM1Impl
import com.magic.mogo.och.charter.presenter.DriverM1Presenter
import com.magic.mogo.och.charter.view.SlidePanelView
import com.mogo.commons.storage.SharedPrefsMgr
@@ -19,8 +17,6 @@ import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.data.temp.EventLogout
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.biz.provider.LoginService
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.createQRCodeWithPicture
import com.mogo.och.common.module.wigets.BindQRCodeDialog
@@ -47,7 +43,6 @@ import kotlin.math.roundToInt
*/
class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presenter?>(),
SlidePanelView.OnSlidePanelMoveToEndListener{
private var loginService: LoginService? = null
private var ochCommitDialog: OCHCommitDialog? = null
var countDownTimer: CountDownTimer? = null
@@ -57,11 +52,6 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
loginService =
ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService
if (loginService != null) {
loginService?.registerFragment(this, presenter, LoginDriverM1Impl())
}
}
private fun showOrHideOrderUI(show:Boolean){
@@ -119,8 +109,6 @@ class DriverM1Fragment : CharterBaseFragment<DriverM1Fragment?, DriverM1Presente
override fun onDestroyView() {
super.onDestroyView()
loginService?.unRegisterFragment()
loginService = null
}
@Subscribe(threadMode = ThreadMode.MAIN)

View File

@@ -14,7 +14,7 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ActivityUtils
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager
import com.mogo.och.common.module.utils.SoundPoolHelper
import io.reactivex.Observable

View File

@@ -47,7 +47,7 @@ import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManag
import com.mogo.och.common.module.biz.common.socketmessage.data.*
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.provider.LoginService
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.callback.OchAdasStartFailureCallback
import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager.startLoopAbnormalFactors
import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager.stopLoopAbnormalFactors
@@ -95,7 +95,6 @@ class DriverM1Model {
//0: 代表没有启动过 1代表是启动第一次当>=1 代表是重试 每次到站/路线结束清空置为0
private var loginService: LoginService? = null
companion object {
val TAG = DriverM1Model::class.java.simpleName
@@ -147,8 +146,6 @@ class DriverM1Model {
//网络监听
IntentManager.getInstance().registerIntentListener(ConnectivityManager.CONNECTIVITY_ACTION, mNetWorkIntentListener)
loginService = ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService
//2022.1.28
// 调用Disposable.dispose() 时候会出现InterruptedException 导致出现崩溃
// The exception could not be delivered to the consumer because it has already canceled/disposed
@@ -172,7 +169,6 @@ class DriverM1Model {
// 注销定位监听
CallerChassisLocationGCJ02ListenerManager.removeListener(TAG)
loginService = null
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null)
releaseSocketMessageListener(
OCHSocketMessageManager.msgMonitorType
@@ -350,7 +346,7 @@ class DriverM1Model {
d(SceneConstant.M_TAXI + TAG, "onIntentReceived = %s", intentStr)
if (ConnectivityManager.CONNECTIVITY_ACTION == intentStr) {
if (NetworkUtils.isConnected(mContext)) {
loginService!!.queryLoginStatusByNet()
LoginStatusManager.queryLoginStatusByNet()
}
}
}
@@ -517,7 +513,7 @@ class DriverM1Model {
// 登出
fun logout() {
loginService!!.loginOut(mLatitude, mLongitude)
LoginStatusManager.loginOut(mLatitude, mLongitude)
}
fun triggerStartServiceEvent(isRestart: Boolean, send: Boolean) {

View File

@@ -1,47 +0,0 @@
package com.magic.mogo.och.charter.net.login
import android.content.Context
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.network.LoginDefaultManage
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
class LoginDriverM1Impl: LoginDefaultManage {
override fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
OchCommonServiceManager.getPhoneCode(context,phone,callback)
}
override fun gotoLoginBycode(
context: Context,
phone: String?,
code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
OchCommonServiceManager.gotoLoginBycode(context,phone,code,location4Login,callback)
}
override fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
OchCommonServiceManager.logout(context,location4Login,callback)
}
override fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
OchCommonServiceManager.queryDriverServiceStatus(context,callback)
}
}

View File

@@ -1,66 +0,0 @@
package com.magic.mogo.och.charter.net.login;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean;
import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
/**
* Created by pangfan on 2021/8/19
* <p>
* 网约车-出租车接口定义
*/
interface OchLoginServiceApi {
/**
* 获取手机验证码
*
* @return
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-rental-cabin/api/sms/v1/driver/sendSms")
Observable<DriverStatusQueryRespBean> getPhoneCode(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginSmsReqBean data);
/**
* 通过验证码登录
*
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-rental-cabin/api/flow/v1/driver/startOperation")
Observable<TaxiLoginRespBean> gotoLoginBycode4Bus(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
/**
* 登出接口
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-rental-cabin/api/flow/v1/driver/endOperation")
Observable<BaseData> logout4Bus(@Header("appId") String appId, @Header("ticket") String ticket,
@Body TaxiLogoutReqBean data);
/**
* 接单状态和登录状态查询 出租车司机端、小巴车司机端、小巴车乘客端
*
* @param sn
* @return
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@GET("/och-rental-cabin/api/business/v1/driver/loginStatus")
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header("appId") String appId
, @Header("ticket") String ticket, @Query("sn") String sn);
}

View File

@@ -5,23 +5,19 @@ import com.magic.mogo.och.charter.R
import com.magic.mogo.och.charter.bean.QueryCurrentOrderResponse
import com.magic.mogo.och.charter.callback.ChangeDestCallback
import com.magic.mogo.och.charter.callback.DriverM1OrderCallback
import com.magic.mogo.och.charter.callback.IDriverM1ControllerStatusCallback
import com.magic.mogo.och.charter.fragment.DriverM1Fragment
import com.magic.mogo.och.charter.manager.CharterTrajectoryManager
import com.magic.mogo.och.charter.model.DriverM1Model
import com.mogo.commons.AbsMogoApplication
import com.mogo.commons.mvp.Presenter
import com.mogo.eagle.core.data.map.MogoLocation
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager
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.DateTimeUtils
import com.mogo.eagle.core.utilcode.util.ThreadUtils
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.callback.ILoginCallback
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager.OPERATION_ROAD_SIDE_TYPE
import com.mogo.och.common.module.biz.constant.LoginStatusManager.isLogin
import com.mogo.och.common.module.biz.login.LoginStatusManager.isLogin
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager
import com.mogo.och.common.module.manager.beautifymode.BeautifyManager
import com.mogo.och.common.module.manager.stopsidemanager.OCHPlanningActionsCallback
@@ -36,7 +32,8 @@ import mogo_msg.MogoReportMsg
* @date: 2023/2/22
*/
class DriverM1Presenter(view: DriverM1Fragment?) :
Presenter<DriverM1Fragment?>(view),ILoginCallback, DriverM1OrderCallback, ChangeDestCallback,
Presenter<DriverM1Fragment?>(view),
ILoginCallback, DriverM1OrderCallback, ChangeDestCallback,
IMoGoAutopilotStatusListener, OCHPlanningActionsCallback{
companion object{
@@ -70,7 +67,7 @@ class DriverM1Presenter(view: DriverM1Fragment?) :
DriverM1Model.get().release()
}
override fun loginSuccess(data: DriverStatusQueryRespBean?) {
override fun loginSuccess() {
d(SceneConstant.M_BUS + TAG, " loginStatus =" + isLogin())
if(isLogin()){
// 查询服务状态
@@ -81,7 +78,7 @@ class DriverM1Presenter(view: DriverM1Fragment?) :
}
}
override fun loginFail(isLogin: Boolean) {
override fun loginFail() {
DriverM1Model.get().stopQueryCurrentOrder()
}

View File

@@ -10,13 +10,14 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.charter.passenger.constant.CharterPassengerConst
import com.mogo.och.charter.passenger.ui.MainFragment
import com.mogo.och.common.module.biz.constant.OchCommonConst
/**
* 网约车-Bus-乘客端
*
* Created on 2022/3/29
*/
@Route(path = CharterPassengerConst.PATH)
@Route(path = OchCommonConst.CHARTER_PASSENGER)
class MogoOCHBusPassenger : IMoGoFunctionProvider {
private var mActivity: FragmentActivity? = null
private var mContainerId = 0

View File

@@ -37,9 +37,10 @@ import com.mogo.och.charter.passenger.utils.VoiceFocusManager
import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg
import com.mogo.och.common.module.bean.dpmsg.ChangeDestMsg
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.biz.constant.TaxiLoginStatusEnum
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.TaxiLoginStatusEnum
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.common.module.manager.CharterSendTripInfoManager
import com.mogo.och.common.module.manager.CharterSendTripInfoManager.LEAVE_STATION
@@ -49,7 +50,6 @@ import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.common.module.utils.PinYinUtil
import com.mogo.och.common.module.utils.RxUtils
import com.mogo.och.common.module.voice.VoiceNotice
import io.reactivex.Observable
import io.reactivex.disposables.Disposable
@@ -163,27 +163,26 @@ object CharterPassengerModel {
* 启动轮询查询司机登录状态
*/
private fun listenerLoginStatus() {
LoginStatusManager.setControllerStatusCallback(TAG,
object : LoginStatusManager.ILoginStatusChangeListener {
override fun onStatusChange(currentStatus: TaxiLoginStatusEnum) {
if (LoginStatusManager.isLogin()) {
// 1、打开视频播放、
// 2 、打开空调暖风机灯设置页面
// 3、车控页面
// 4、打开选择线路页面
BizLoopManager.removeLoopFunction(TAGLOGIN)
d(M_BUS_P + TAG, "结束登录状态轮询")
// 启动订单轮
startOrderLoop()
} else {
BizLoopManager.setLoopFunction(
TAGLOGIN,
LoopInfo(3, ::queryLoginStatus)
)
d(M_BUS_P + TAG, "启动登录状态轮询")
}
LoginStatusManager.addListener(TAG,object : ILoginCallback{
override fun onStatusChange(currentStatus: TaxiLoginStatusEnum?) {
if (LoginStatusManager.isLogin()) {
// 1、打开视频播放、
// 2 、打开空调暖风机灯设置页面
// 3、车控页面
// 4、打开选择线路页面
BizLoopManager.removeLoopFunction(TAGLOGIN)
d(M_BUS_P + TAG, "结束登录状态轮询")
// 启动订单轮
startOrderLoop()
} else {
BizLoopManager.setLoopFunction(
TAGLOGIN,
LoopInfo(3, ::queryLoginStatus)
)
d(M_BUS_P + TAG, "启动登录状态轮询")
}
})
}
})
}
// endregion
@@ -291,26 +290,7 @@ object CharterPassengerModel {
* 查询车辆登录状态、车牌、司机手机号、司机sn
*/
fun queryLoginStatus() {
BusPassengerServiceManager.queryDriverOperationStatus(
mContext, object : OchCommonServiceCallback<M1DriverLoginStatusResponse> {
override fun onSuccess(data: M1DriverLoginStatusResponse?) {
if (data?.data == null) return
LoginStatusManager.setLoginStatus(data.data.driverStatus)
}
override fun onFail(code: Int, msg: String) {
RxUtils.createSubscribe {
queryLoginStatus()
}
}
override fun onError() {
super.onError()
RxUtils.createSubscribe {
queryLoginStatus()
}
}
})
LoginStatusManager.queryLoginStatusByNet()
}
//监听网络变化,避免启动机器时无网导致无法更新订单信息

View File

@@ -32,7 +32,7 @@ import com.mogo.och.charter.passenger.ui.dialogfragment.NoviceGuidanceFragment
import com.mogo.och.charter.passenger.ui.lockview.LockManager
import com.mogo.och.charter.passenger.ui.statusbar.StatusBarView
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.login.LoginStatusManager
import kotlinx.android.synthetic.main.charter_p_main_fragment.aciv_enter_video
import kotlinx.android.synthetic.main.charter_p_main_fragment.aciv_map_2_default
import kotlinx.android.synthetic.main.charter_p_main_fragment.bb_boorombar

1
OCH/common/biz/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/build

View File

@@ -0,0 +1,63 @@
plugins {
id 'com.android.library'
id 'kotlin-kapt'
id 'org.jetbrains.kotlin.android'
id 'kotlin-android-extensions'
}
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
kapt {
useBuildCache = false
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation rootProject.ext.dependencies.kotlinstdlib
implementation rootProject.ext.dependencies.androidxccorektx
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.material
implementation rootProject.ext.dependencies.rxandroid
implementation project(':OCH:common:common')
implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
api rootProject.ext.dependencies.mogocommons
api rootProject.ext.dependencies.mogoutils
}else {
api project(":foudations:mogo-commons")
api project(":core:mogo-core-utils")
}
}

View File

21
OCH/common/biz/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.och.biz">
</manifest>

View File

@@ -0,0 +1,96 @@
package com.mogo.och.biz.login
import android.content.Context
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.data.temp.EventLogout
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.biz.login.model.OchCommonLoginStatusDefaultModel
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.biz.login.LoginInfo
import com.mogo.och.common.module.biz.login.LoginService
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.TaxiDriverRoleEnum
import com.mogo.och.common.module.biz.login.TaxiLoginStatusEnum
import org.greenrobot.eventbus.EventBus
import org.greenrobot.eventbus.Subscribe
import org.greenrobot.eventbus.ThreadMode
/**
* 网约车小巴业务实现入口
*
* @author tongchenfei
*/
@Route(path = OchCommonConst.BIZ_LOGIN)
class LoginProvider : LoginService {
private lateinit var loginFragment: Fragment
private var uiModel = true
private var loginStatus: TaxiLoginStatusEnum = TaxiLoginStatusEnum.None
private var loginInfo: LoginInfo?=null
override fun init(context: Context) {
loginFragment = Fragment()
}
override fun getFragment(): Fragment {
return loginFragment
}
override fun setLoginStatus(status: Int) {
when (status) {
0 -> {
setLoginStatus(TaxiLoginStatusEnum.Logout)
}
1 -> {
setLoginStatus(TaxiLoginStatusEnum.Login)
}
else -> {
setLoginStatus(TaxiLoginStatusEnum.None)
}
}
}
override fun queryLoginStatusByNet() {
OchCommonLoginStatusDefaultModel.queryCarStatus()
}
override fun showUiModel(show: Boolean) {
uiModel = show;
}
override fun loginOut(mLatitude: Double, mLongitude: Double) {
OchCommonLoginStatusDefaultModel.logout(mLatitude, mLongitude)
}
override fun setLoginInfo(loginInfo: LoginInfo) {
this.loginInfo = loginInfo
}
override fun getLoginInfo(): LoginInfo? {
return loginInfo
}
override fun getPurpose(): TaxiDriverRoleEnum {
return TaxiDriverRoleEnum.valueOf(loginInfo?.purpose)
}
override fun isLogin(): Boolean {
return loginStatus == TaxiLoginStatusEnum.Login
}
override fun getLoginStatus(): TaxiLoginStatusEnum {
return loginStatus
}
override fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) {
if(loginStatus!=this.loginStatus){
this.loginStatus = loginStatus
LoginStatusManager.invokeLoginStatusChange(loginStatus)
}
}
companion object {
private const val TAG = "LoginProvider"
}
}

View File

@@ -0,0 +1,14 @@
package com.mogo.och.biz.login.bean;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.common.module.biz.login.LoginInfo;
/**
* Created by pangfan on 2021/8/19
*
* 状态查询返回数据结构
*/
public class DriverStatusQueryRespBean extends BaseData {
public LoginInfo data;
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.biz.bean;
package com.mogo.och.biz.login.bean;
/**
* Created by yangyakun on 2021/8/19

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.biz.bean;
package com.mogo.och.biz.login.bean;
import com.mogo.eagle.core.data.BaseData;

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.biz.bean;
package com.mogo.och.biz.login.bean;
/**
* Created by yyk on 2021/8/19

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.biz.bean;
package com.mogo.och.biz.login.bean;
/**
* Created by yyk on 2021/8/19

View File

@@ -1,6 +1,6 @@
package com.mogo.och.common.module.biz.callback;
package com.mogo.och.biz.login.callback;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean;
public interface ILoginCallback {
void loginSuccess(DriverStatusQueryRespBean data);

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.biz.callback;
package com.mogo.och.biz.login.callback;
/**
* Created on 2021/9/8

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.biz.model
package com.mogo.och.biz.login.model
import android.annotation.SuppressLint
import android.content.Context
@@ -6,14 +6,14 @@ import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.function.call.autopilot.CallerChassisLocationGCJ02ListenerManager
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.och.common.module.R
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.callback.ITaxiLoginCallback
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.constant.TaxiLoginStatusEnum
import com.mogo.och.biz.R
import com.mogo.och.biz.login.bean.TaxiLoginReqBean
import com.mogo.och.biz.login.bean.TaxiLoginRespBean
import com.mogo.och.biz.login.callback.ITaxiLoginCallback
import com.mogo.och.biz.login.net.OchCommonServiceManager
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.TaxiLoginStatusEnum
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
import com.mogo.och.common.module.biz.network.OchCommonServiceManager
import com.mogo.och.common.module.utils.ToastUtilsOch
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
@@ -45,7 +45,7 @@ object OchCommonLoginModel {
}
fun setiTaxiLoginCallback(iTaxiLoginCallback: ITaxiLoginCallback?) {
this.iTaxiLoginCallback = iTaxiLoginCallback
OchCommonLoginModel.iTaxiLoginCallback = iTaxiLoginCallback
}
fun release() {

View File

@@ -1,16 +1,15 @@
package com.mogo.och.common.module.biz.model
package com.mogo.och.biz.login.model
import android.annotation.SuppressLint
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.utilcode.util.GsonUtils
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.bean.dpmsg.BusCacheKey
import com.mogo.och.common.module.bean.dpmsg.LoginCacheStatus
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.callback.ILoginCallback
import com.mogo.och.common.module.biz.callback.ILoginViewCallback
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.login.ILoginCallback
import com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.utils.DateTimeUtil
import com.mogo.och.data.manager.cache.CacheDataManager
@@ -22,18 +21,15 @@ object OchCommonLoginStatusDefaultModel : OchCommonLoginStatusModel() {
var loginCallback: ILoginCallback? = null
var loginViewCallback: ILoginViewCallback? = null
override fun loginSuccess(data: DriverStatusQueryRespBean?) {
CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginSuccess:${LoginStatusManager.isLogin()}")
if (LoginStatusManager.isLogin()) {
SharedPrefsMgr.getInstance().putString("och_account", data?.data?.phone)
loginViewCallback?.hideLoginDialogFragment()
} else {
SharedPrefsMgr.getInstance().putString("och_account", "")
loginViewCallback?.showLoginDialogFragment()
}
loginCallback?.loginSuccess(data)
loginCallback?.loginSuccess()
data?.data?.driverStatus?.let { updateLoginLocalStatus(it) }
@@ -45,15 +41,10 @@ object OchCommonLoginStatusDefaultModel : OchCommonLoginStatusModel() {
GsonUtils.toJson(loginCacheStatus))
}
override fun loginFail(isLogin: Boolean) {
CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginFail:$isLogin")
if (isLogin) {
loginViewCallback?.hideLoginDialogFragment()
} else {
loginViewCallback?.showLoginDialogFragment()
}
loginCallback?.loginFail(isLogin)
loginCallback?.loginFail()
updateLoginLocalStatus(0)
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.biz.model;
package com.mogo.och.biz.login.model;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
@@ -8,14 +8,13 @@ import com.mogo.commons.AbsMogoApplication;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.och.common.module.R;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.biz.R;
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean;
import com.mogo.och.biz.login.bean.TaxiLogoutReqBean;
import com.mogo.och.biz.login.net.OchCommonServiceManager;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
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.OchCommonServiceManager;
import com.mogo.och.common.module.utils.ToastUtilsOch;
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils;
@@ -60,6 +59,7 @@ public abstract class OchCommonLoginStatusModel {
public void onSuccess(DriverStatusQueryRespBean data) {
if (null != data && 0 == data.code) {
LoginStatusManager.setLoginStatus(data.data.driverStatus);
LoginStatusManager.setLoginInfo(data.data);
CallerLogger.d(M_TAXI + TAG, "changeCarStatus:" + LoginStatusManager.getLoginStatus());
loginSuccess(data);
}

View File

@@ -1,32 +1,44 @@
package com.magic.mogo.och.charter.net.login
package com.mogo.och.biz.login.net
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean
import com.mogo.och.biz.login.bean.TaxiLoginReqBean
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
import com.mogo.och.biz.login.bean.TaxiLoginRespBean
import com.mogo.och.biz.login.bean.TaxiLoginSmsReqBean
import com.mogo.och.biz.login.bean.TaxiLogoutReqBean
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
/**
* Created by pangfan on 2021/8/19
*/
object OchCommonServiceManager {
private const val TAG = "OchCommonServiceManager"
private val mLoginServiceApi: OchLoginServiceApi =
private val loginDefaultManage: OchLoginServiceApi =
MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(
OchLoginServiceApi::class.java
)
private var draiverSnCacher = ""
/**
* 获取Bus司机端的sn
* @return
*/
val draiverSn: String
get(){
val serverToken = CallerTelematicManager.getServerToken()
if (serverToken != draiverSnCacher && serverToken.isNotEmpty()) {
draiverSnCacher = serverToken
}
return draiverSnCacher
}
/**
* 获取手机验证码
@@ -38,7 +50,7 @@ object OchCommonServiceManager {
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
mLoginServiceApi.getPhoneCode(
loginDefaultManage.getPhoneCode(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginSmsReqBean(phone)
@@ -54,11 +66,11 @@ object OchCommonServiceManager {
@JvmStatic
fun gotoLoginBycode(
context: Context, phone: String?, code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
location4Login: TaxiLoginReqBean.Location4Login,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
val sn = SharedPrefsMgr.getInstance().sn
mLoginServiceApi.gotoLoginBycode4Bus(
loginDefaultManage.gotoLoginBycode(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginReqBean(phone, code, sn, location4Login)
@@ -74,10 +86,12 @@ object OchCommonServiceManager {
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
mLoginServiceApi.logout4Bus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
loginDefaultManage.logout(MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLogoutReqBean(SharedPrefsMgr.getInstance().sn, location4Login)
TaxiLogoutReqBean(
SharedPrefsMgr.getInstance().sn,
location4Login
)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "logout"))
}
@@ -92,15 +106,16 @@ object OchCommonServiceManager {
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
if (SharedPrefsMgr.getInstance().token.isEmpty()) {
callback?.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等")
MoGoAiCloudClient.getInstance().refreshToken()
return
val sn =
if (AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
SharedPrefsMgr.getInstance().sn
} else{
draiverSn
}
mLoginServiceApi.queryDriverServiceStatusAndLoginStatus(
loginDefaultManage.queryDriverServiceStatusAndLoginStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceStatus"))
}

View File

@@ -1,11 +1,11 @@
package com.mogo.och.bus.net.login;
package com.mogo.och.biz.login.net;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean;
import com.mogo.och.biz.login.bean.DriverStatusQueryRespBean;
import com.mogo.och.biz.login.bean.TaxiLoginReqBean;
import com.mogo.och.biz.login.bean.TaxiLoginRespBean;
import com.mogo.och.biz.login.bean.TaxiLoginSmsReqBean;
import com.mogo.och.biz.login.bean.TaxiLogoutReqBean;
import io.reactivex.Observable;
import retrofit2.http.Body;
@@ -13,7 +13,6 @@ import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
/**
@@ -42,7 +41,7 @@ interface OchLoginServiceApi {
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startOperation")
Observable<TaxiLoginRespBean> gotoLoginBycode4Bus(@Header("appId") String appId
Observable<TaxiLoginRespBean> gotoLoginBycode(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
/**
@@ -50,7 +49,7 @@ interface OchLoginServiceApi {
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/endOperation")
Observable<BaseData> logout4Bus(@Header("appId") String appId, @Header("ticket") String ticket,
Observable<BaseData> logout(@Header("appId") String appId, @Header("ticket") String ticket,
@Body TaxiLogoutReqBean data);
/**

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.biz.presenter
package com.mogo.och.biz.login.presenter
import androidx.lifecycle.LifecycleOwner
import com.mogo.commons.AbsMogoApplication
@@ -6,10 +6,10 @@ 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.och.common.module.R
import com.mogo.och.common.module.biz.callback.ITaxiLoginCallback
import com.mogo.och.common.module.biz.model.OchCommonLoginModel
import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment
import com.mogo.och.biz.R
import com.mogo.och.biz.login.callback.ITaxiLoginCallback
import com.mogo.och.biz.login.ui.TaxiLoginDialogFragment
import com.mogo.och.biz.login.model.OchCommonLoginModel
import com.mogo.och.common.module.wigets.toast.ToastCharterUtils
import io.reactivex.Observable
import io.reactivex.android.schedulers.AndroidSchedulers

View File

@@ -0,0 +1,204 @@
package com.mogo.och.biz.login.ui
import android.annotation.SuppressLint
import android.graphics.Rect
import android.os.Bundle
import android.os.SystemClock
import android.view.*
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.commons.mvp.MvpFragment
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
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.ActivityUtils
import com.mogo.eagle.core.utilcode.util.KeyboardUtils
import com.mogo.och.biz.R
import com.mogo.och.biz.login.presenter.OchCommonLoginPresenter
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.biz.login.LoginService
import kotlinx.android.synthetic.main.taxi_login_view.acbtn_login
import kotlinx.android.synthetic.main.taxi_login_view.ace_login_phone_value
import kotlinx.android.synthetic.main.taxi_login_view.acet_phone_code_value
import kotlinx.android.synthetic.main.taxi_login_view.aciv_login_bg
import kotlinx.android.synthetic.main.taxi_login_view.actv_login_get_code
import kotlinx.android.synthetic.main.taxi_login_view.actv_login_show_sn
import kotlinx.android.synthetic.main.taxi_login_view.actv_welcome_login_title
import kotlinx.android.synthetic.main.taxi_login_view.cl_main
/**
* @author: yangyakun
* @date: 2022/8/15
*/
class TaxiLoginDialogFragment :
MvpFragment<TaxiLoginDialogFragment?, OchCommonLoginPresenter?>(){
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return super.onCreateView(inflater, container, savedInstanceState)
}
override fun getLayoutId(): Int {
return R.layout.taxi_login_view
}
override fun initViews() {
inputPhoneNormal()
initBg()
initListener()
}
private fun initBg() {
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) &&
AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
//出租车司机
aciv_login_bg.setImageResource(R.drawable.taxi_ic_login_bg)
} else if ((AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
|| AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)
|| AppIdentityModeUtils.isCharter(FunctionBuildConfig.appIdentityMode)) &&
AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
//小巴车司机
aciv_login_bg.setImageResource(R.drawable.bus_ic_login_bg)
}
}
@SuppressLint("ClickableViewAccessibility")
private fun initListener() {
mRootView.isFocusable = true
mRootView.isFocusableInTouchMode = true
mRootView.setOnTouchListener { _, event ->
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
closeSoftInput()
}
}
false
}
acbtn_login.onClick {
val phone = ace_login_phone_value.text.toString()
val code = acet_phone_code_value.text.toString()
mPresenter?.gotoLogin(phone, code)
}
actv_welcome_login_title.setOnClickListener {
continuousClick()
}
cl_main.viewTreeObserver.addOnGlobalLayoutListener {
val rect = Rect()
cl_main.getWindowVisibleDisplayFrame(rect)
val mainInvisibleHeight = cl_main.rootView.height - rect.bottom
if (mainInvisibleHeight > 100) {
val outLocation = IntArray(2)
acbtn_login.getLocationInWindow(outLocation)
val srollHeight = (outLocation[1] + acbtn_login.height) - rect.bottom
if (srollHeight > 0) {
cl_main.scrollTo(0, srollHeight)
}
CallerLogger.d(SceneConstant.M_TAXI_P + TAG, "滚动的距离:$srollHeight")
} else {
cl_main.scrollTo(0, 0)
}
}
actv_login_get_code.onClick {
mPresenter?.getPhoneCode(ace_login_phone_value.text.toString())
}
actv_login_show_sn.setOnLongClickListener {
val loginService = ARouter.getInstance().build(OchCommonConst.LOGINSERVICE)
.navigation() as LoginService
loginService.showUiModel(false)
true
}
ace_login_phone_value.addTextChangedListener {
it?.let { itEditable ->
if (itEditable.isNotEmpty()) {
inputPhoneNormal()
}
}
}
actv_login_show_sn.text = SharedPrefsMgr.getInstance().sn
}
/**
* 关闭键盘
*/
fun closeSoftInput() {
mRootView.requestFocus()
KeyboardUtils.hideSoftInput(ActivityUtils.getTopActivity())
}
fun setCountDownText(text: String, enable: Boolean) {
if (enable) {
actv_login_get_code.setText(R.string.module_och_taxi_login_get_code)
actv_login_get_code.isEnabled = true
} else {
actv_login_get_code.text = text
actv_login_get_code.isEnabled = false
}
}
fun inputPhoneError() {
ace_login_phone_value.text?.clear()
ace_login_phone_value.setHint(R.string.module_och_taxi_login_phone_error)
context?.let {
ace_login_phone_value.setHintTextColor(ContextCompat.getColor(it, R.color.taxi_EF262C))
ace_login_phone_value.setBackgroundResource(R.drawable.taxi_login_phone_error)
}
}
private fun inputPhoneNormal() {
//ace_login_phone_value.setHint(R.string.module_och_taxi_login_phone_hint_text)
context?.let {
ace_login_phone_value.setHintTextColor(ContextCompat.getColor(it, R.color.taxi_878890))
ace_login_phone_value.setBackgroundResource(R.drawable.taxi_login_phone_normal)
}
}
override fun createPresenter(): OchCommonLoginPresenter {
return OchCommonLoginPresenter(this)
}
override fun getTagName(): String {
return TAG
}
companion object {
private const val COUNTS = 4 // 点击次数
private const val DURATION: Long = 1000 // 规定有效时间
val TAG = TaxiLoginDialogFragment::class.java.simpleName
@JvmStatic
fun newInstance(): TaxiLoginDialogFragment {
val args = Bundle()
val fragment = TaxiLoginDialogFragment()
fragment.arguments = args
return fragment
}
}
private var mHits = LongArray(COUNTS)
private fun continuousClick() {
//每次点击时,数组向前移动一位
System.arraycopy(mHits, 1, mHits, 0, mHits.size - 1)
//为数组最后一位赋值
mHits[mHits.size - 1] = SystemClock.uptimeMillis()
if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {
mHits = LongArray(COUNTS) //重新初始化数组
mPresenter?.gotoLogin("13288888888", "8888")
}
}
fun loginSuccess() {
}
}

View File

Before

Width:  |  Height:  |  Size: 51 KiB

After

Width:  |  Height:  |  Size: 51 KiB

View File

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 44 KiB

View File

@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools">
<string name="module_och_taxi_login_title">欢迎您登录</string>
<string name="module_och_taxi_login_btn">登录</string>
<string name="module_och_taxi_login_get_code">获取验证码</string>
<string name="module_och_taxi_login_get_code_title">请输入验证码</string>
<string name="module_och_taxi_login_get_code_success">获取验证码成功</string>
<string name="module_och_taxi_login_login_success">登录成功</string>
<string name="module_och_taxi_login_phone_error">请输入正确的手机号</string>
<string name="module_och_taxi_login_code_error">请输入正确的验证码</string>
<string name="module_och_taxi_login_phone_hint_text">请输入手机号</string>
<string name="module_och_taxi_login_get_phone_title">请输入手机号</string>
<string name="network_error_tip">网络异常,请稍后重试</string>
<string name="request_error_tip">请求出现异常,请稍后重试</string>
<string name="qr_cancel">取消</string>
<string name="bind_driver_qr_title">扫描二维码完成车辆绑定</string>
</resources>

View File

@@ -1,25 +0,0 @@
package com.mogo.och.common.module.biz.bean;
import com.mogo.eagle.core.data.BaseData;
/**
* Created by pangfan on 2021/8/19
*
* 状态查询返回数据结构
*/
public class DriverStatusQueryRespBean extends BaseData {
public Result data;
public static class Result {
public int servingStatus; //1接单1暂停接单
public int driverStatus; //1登录0登出
public String orderNo;
public int purpose; // 1 运营, 2 测试, 3演示
public String sn;
public String plateNumber;//车牌号
public String phone;//手机号
public Integer lineId;//线路id
public Integer taskId;//任务id
}
}

View File

@@ -1,13 +0,0 @@
package com.mogo.och.common.module.biz.callback
interface ILoginViewCallback {
/**
* 展示登录页面
*/
fun showLoginDialogFragment()
/**
* 隐藏登录页面
*/
fun hideLoginDialogFragment()
}

View File

@@ -1,59 +0,0 @@
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 -> {
setLoginStatus(TaxiLoginStatusEnum.Logout)
}
1 -> {
setLoginStatus(TaxiLoginStatusEnum.Login)
}
else -> {
setLoginStatus(TaxiLoginStatusEnum.None)
}
}
}
@JvmStatic
fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) {
if(loginStatus!=this.loginStatus){
this.loginStatus = loginStatus
for (callback in mStatusChangeListener.values) {
callback.onStatusChange(loginStatus)
}
}
}
@JvmStatic
fun getLoginStatus(): TaxiLoginStatusEnum {
return loginStatus
}
@JvmStatic
fun isLogin():Boolean {
if(loginStatus== TaxiLoginStatusEnum.Login){
return true
}
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

@@ -30,6 +30,25 @@ class OchCommonConst {
const val LOGINSERVICE = "/ochbiz/common/login"
const val BIZ_LOGIN = "/ochbiz/common/login"
const val BUS_DRIVER = "/bus/driver"
const val BUS_PASSENGER = "/bus/passenger"
const val CHARTER_DRIVER = "/charter/driver"
const val CHARTER_PASSENGER = "/charter/passenger"
const val SHUTTLE_DRIVER = "/shuttle/driver"
const val SHUTTLE_PASSENGER = "/shuttle/passenger"
const val SWEEPER_DRIVER = "/sweeper/driver"
const val TAXI_DRIVER = "/taxi/driver"
const val TAXI_PASSENGER = "/taxi/passenger"
const val TAXI_UNMANNED_DRIVER = "/taxiunman/driver"
const val TAXI_UNMANNED_PASSENGER = "/taxiunman/passenger"
const val BUSINESS_STRING = 100
// 自动驾驶自动规划的最大距离

View File

@@ -0,0 +1,10 @@
package com.mogo.och.common.module.biz.login;
public interface ILoginCallback {
default void loginSuccess(){}
default void loginFail(){}
default void onStatusChange(TaxiLoginStatusEnum currentStatus){}
}

View File

@@ -0,0 +1,12 @@
package com.mogo.och.common.module.biz.login;
public class LoginInfo {
public int driverStatus; //1登录0登出
public String orderNo;
public int purpose; // 1 运营, 2 测试, 3演示
public String sn;
public String plateNumber;//车牌号
public String phone;//手机号
public Integer lineId;//线路id
public Integer taskId;//任务id
}

View File

@@ -0,0 +1,25 @@
package com.mogo.och.common.module.biz.login
import com.mogo.och.common.module.biz.provider.CommonService
interface LoginService : CommonService {
fun setLoginInfo(loginInfo: LoginInfo)
fun getLoginInfo():LoginInfo?
fun getPurpose():TaxiDriverRoleEnum
fun isLogin():Boolean
fun getLoginStatus(): TaxiLoginStatusEnum
fun setLoginStatus(loginStatus: TaxiLoginStatusEnum)
fun setLoginStatus(status: Int)
fun queryLoginStatusByNet()
fun showUiModel(show:Boolean)
/**
* 登出
*/
fun loginOut(mLatitude:Double,mLongitude:Double)
}

View File

@@ -0,0 +1,74 @@
package com.mogo.och.common.module.biz.login
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotStatisticsListenerManager
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.utils.CallerBase
import java.util.concurrent.ConcurrentHashMap
object LoginStatusManager : CallerBase<ILoginCallback>() {
private var loginService: LoginService? =
ARouter.getInstance().build(OchCommonConst.BIZ_LOGIN).navigation() as LoginService
@JvmStatic
fun loginOut(mLatitude: Double, mLongitude: Double) {
loginService?.loginOut(mLatitude, mLongitude)
}
@JvmStatic
fun queryLoginStatusByNet() {
loginService?.queryLoginStatusByNet()
}
@JvmStatic
fun getPurpose(): TaxiDriverRoleEnum {
loginService?.let {
return it.getPurpose()
}
return TaxiDriverRoleEnum.None
}
@JvmStatic
fun setLoginInfo(loginInfo: LoginInfo) {
loginService?.setLoginInfo(loginInfo)
}
fun getLoginInfo(): LoginInfo? {
return loginService?.getLoginInfo()
}
@JvmStatic
fun setLoginStatus(status: Int) {
loginService?.setLoginStatus(status)
}
@JvmStatic
fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) {
loginService?.setLoginStatus(loginStatus)
}
@JvmStatic
fun getLoginStatus(): TaxiLoginStatusEnum {
loginService?.let {
return it.getLoginStatus()
}
return TaxiLoginStatusEnum.None
}
@JvmStatic
fun isLogin(): Boolean {
loginService?.let {
return it.isLogin()
}
return false
}
fun invokeLoginStatusChange(currentStatus: TaxiLoginStatusEnum) {
M_LISTENERS.forEach {
val listener = it.value
listener.onStatusChange(currentStatus)
}
}
}

View File

@@ -0,0 +1,25 @@
package com.mogo.och.common.module.biz.login
/**
* Created on 2021/12/7
* 1 运营, 2 测试, 3演示
*/
enum class TaxiDriverRoleEnum(val code: Int) {
None( 0),
OPERATION( 1),
TEST( 2),
DEMO( 3);
companion object {
@JvmStatic
fun valueOf(code: Int?): TaxiDriverRoleEnum {
for (value in TaxiDriverRoleEnum.values()) {
if (value.code == code) {
return value
}
}
return TaxiDriverRoleEnum.None
}
}
}

View File

@@ -1,4 +1,4 @@
package com.mogo.och.common.module.biz.constant
package com.mogo.och.common.module.biz.login
/**
* Created on 2022/08/19

View File

@@ -1,30 +0,0 @@
package com.mogo.och.common.module.biz.network
import android.content.Context
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
interface LoginDefaultManage {
fun getPhoneCode(
context: Context,
phone: String?,
callback: OchCommonServiceCallback<BaseData>?
)
fun gotoLoginBycode(
context: Context, phone: String?, code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
)
fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
)
fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
)
}

View File

@@ -1,85 +0,0 @@
package com.mogo.och.common.module.biz.network
import android.content.Context
import com.mogo.och.common.module.biz.constant.OchCommonConst.Companion.getBaseUrl
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.commons.debug.DebugConfig
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.och.common.module.biz.network.interceptor.transformTry
import io.reactivex.Observable
/**
* Created by pangfan on 2021/8/19
*/
object OchCommonServiceManager {
private const val TAG = "OchCommonServiceManager"
private var loginDefaultManage: LoginDefaultManage?=null
fun setLoginDefaultManage(loginDefaultManage: LoginDefaultManage?){
this.loginDefaultManage = loginDefaultManage
}
/**
* 获取手机验证码
* @param context
* @param callback
*/
@JvmStatic
fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
loginDefaultManage?.getPhoneCode(context,phone,callback)
}
/**
* 通过验证码登录
* @param context
* @param callback
*/
@JvmStatic
fun gotoLoginBycode(
context: Context, phone: String?, code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
loginDefaultManage?.gotoLoginBycode(context,phone,code,location4Login,callback)
}
/**
* 登出
*/
@JvmStatic
fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
loginDefaultManage?.logout(context,location4Login,callback)
}
/**
* 接单状态和登录状态查询
*
* @param context
* @param callback
*/
@JvmStatic
fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
loginDefaultManage?.queryDriverServiceStatus(context,callback)
}
}

View File

@@ -2,8 +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 com.mogo.och.common.module.biz.login.LoginStatusManager
import com.mogo.och.common.module.biz.login.TaxiLoginStatusEnum
import io.reactivex.Observable
import io.reactivex.ObservableSource
import io.reactivex.functions.Function

View File

@@ -1,48 +0,0 @@
package com.mogo.och.common.module.biz.presenter
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.OnLifecycleEvent
import com.mogo.och.common.module.biz.callback.ILoginCallback
import com.mogo.och.common.module.biz.callback.ILoginViewCallback
import com.mogo.och.common.module.biz.model.OchCommonLoginStatusDefaultModel
/**
* @author yangyakun
* @since 2020-09-19
*/
class OchCommonLoginStatusDefaultPresenter : LifecycleObserver {
private var isFirstShow = true
@OnLifecycleEvent(Lifecycle.Event.ON_CREATE)
fun onCreate(owner: LifecycleOwner) {
OchCommonLoginStatusDefaultModel.init()
}
@OnLifecycleEvent(Lifecycle.Event.ON_RESUME)
fun onResume(owner: LifecycleOwner) {
if (isFirstShow) {
isFirstShow = false
} else {
queryLoginStatus()
}
}
@OnLifecycleEvent(Lifecycle.Event.ON_DESTROY)
fun onDestory(owner: LifecycleOwner) {
OchCommonLoginStatusDefaultModel.release()
}
fun queryLoginStatus() {
OchCommonLoginStatusDefaultModel.queryCarStatus()
}
fun logOut(mLatitude:Double,mLongitude:Double){
OchCommonLoginStatusDefaultModel.logout(mLatitude, mLongitude)
}
fun setLoginCallback(loginCallback: ILoginCallback?,loginViewCallback: ILoginViewCallback?){
OchCommonLoginStatusDefaultModel.loginCallback = loginCallback
OchCommonLoginStatusDefaultModel.loginViewCallback = loginViewCallback
}
}

View File

@@ -0,0 +1,10 @@
package com.mogo.och.common.module.biz.provider
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.template.IProvider
interface CommonService : IProvider {
fun getFragment():Fragment
}

View File

@@ -1,32 +0,0 @@
package com.mogo.och.common.module.biz.provider
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.template.IProvider
import com.mogo.och.common.module.biz.callback.ILoginCallback
import com.mogo.och.common.module.biz.network.LoginDefaultManage
interface LoginService : IProvider {
/**
* 注册页面
* @param fragment 主页面
* @param callback 回调
*/
fun registerFragment(fragment: Fragment?,loginCallback: ILoginCallback?,logindefaultmanage: LoginDefaultManage?)
fun unRegisterFragment()
/**
* 查询登录状态
*/
fun queryLoginStatus():Boolean
fun queryLoginStatusByNet()
fun showUiModel(show:Boolean)
/**
* 登出
*/
fun loginOut(mLatitude:Double,mLongitude:Double)
}

View File

@@ -1,139 +0,0 @@
package com.mogo.och.common.module.biz.provider
import android.content.Context
import android.content.DialogInterface
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.Fragment
import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
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.currentActivity
import com.mogo.eagle.core.utilcode.util.ClickUtils
import com.mogo.och.common.module.biz.callback.ILoginCallback
import com.mogo.och.common.module.biz.callback.ILoginViewCallback
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.biz.network.LoginDefaultManage
import com.mogo.och.common.module.biz.network.OchCommonServiceManager
import com.mogo.och.common.module.biz.presenter.OchCommonLoginStatusDefaultPresenter
import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment
import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment.Companion.newInstance
import java.lang.ref.WeakReference
@Route(path = OchCommonConst.LOGINSERVICE)
class LoginServiceImpl : LoginService,ILoginViewCallback {
companion object{
const val TAG = "LoginServiceImpl"
}
private var fragment: Fragment?=null
private var taxiLoginDialogFragment: WeakReference<TaxiLoginDialogFragment>? = null
private var presenter: OchCommonLoginStatusDefaultPresenter?=null
private var uiModel = true
override fun init(context: Context) {
}
override fun registerFragment(fragment: Fragment?,loginCallback: ILoginCallback?,logindefaultmanage: LoginDefaultManage?) {
OchCommonServiceManager.setLoginDefaultManage(logindefaultmanage)
presenter = OchCommonLoginStatusDefaultPresenter()
this.fragment = fragment
presenter?.let {
it.setLoginCallback(loginCallback, this)
this.fragment?.lifecycle?.addObserver(it)
}
}
override fun unRegisterFragment() {
this.presenter?.let {
it.setLoginCallback(null,null)
this.fragment?.lifecycle?.removeObserver(it)
}
this.fragment = null
}
override fun showLoginDialogFragment() {
if(uiModel) {
fragment?.let {
CallerHmiManager.hideToolsView()
CallerHmiManager.hideSOPSettingView()
val parentFragmentManager = it.childFragmentManager
val fragmentByTag: Fragment? = parentFragmentManager.findFragmentByTag(TAG)
if (fragmentByTag is DialogFragment) {
if (fragmentByTag.dialog != null && fragmentByTag.dialog!!.isShowing) {
return
}
if (fragmentByTag.dialog != null && fragmentByTag.isAdded) {
if (currentActivity() == null) { // 没有在当前应用内 在启动页面关闭应用
CallerLogger.d(SceneConstant.M_TAXI + TAG, "showLoginDialogFragment 权限验证")
return
}
}
}
if (taxiLoginDialogFragment?.get() == null) {
taxiLoginDialogFragment = WeakReference(newInstance())
}
val taxiLoginDialog = taxiLoginDialogFragment?.get()
if (taxiLoginDialog != null) {
if (taxiLoginDialog.dialog != null && taxiLoginDialog.dialog!!.isShowing) {
return
}
if (taxiLoginDialog.isAdded) { //解决方法就是添加这行代码如果已经添加了就移除掉然后再show就不会出现Fragment already added的错误了。
parentFragmentManager.beginTransaction().remove(taxiLoginDialog)
.commitAllowingStateLoss()
}
if (isFastClick()) {
taxiLoginDialog.show(parentFragmentManager, TAG)
taxiLoginDialog.setOnDismissListener(DialogInterface.OnDismissListener { dialog: DialogInterface? ->
taxiLoginDialogFragment?.clear()
presenter?.queryLoginStatus()
})
CallerLogger.d(SceneConstant.M_TAXI + TAG, "showLoginDialogFragment 展示登录界面")
}else{
CallerLogger.d(SceneConstant.M_TAXI + TAG, "showLoginDialogFragment 展示登录界面 5s内执行一次")
}
}
}
}
}
// 5s 还没有执行说明在anr了
private val MIN_CLICK_DELAY_TIME = 5000
private var lastClickTime: Long = 0
fun isFastClick(): Boolean {
var flag = false
val curClickTime = System.currentTimeMillis()
if (curClickTime - lastClickTime >= MIN_CLICK_DELAY_TIME) {
flag = true
}
lastClickTime = curClickTime
return flag
}
override fun hideLoginDialogFragment() {
CallerLogger.d(SceneConstant.M_TAXI + TAG, "hideLoginDialogFragment 隐藏登录界面")
if (taxiLoginDialogFragment?.get() != null) {
taxiLoginDialogFragment?.get()?.dismissAllowingStateLoss()
}
}
override fun queryLoginStatus():Boolean {
return LoginStatusManager.isLogin()
}
override fun queryLoginStatusByNet() {
presenter?.queryLoginStatus()
}
override fun showUiModel(show:Boolean) {
uiModel = show;
}
override fun loginOut(mLatitude:Double,mLongitude:Double) {
presenter?.logOut(mLatitude,mLongitude)
}
}

View File

@@ -1,284 +0,0 @@
package com.mogo.och.common.module.biz.ui
import android.annotation.SuppressLint
import android.content.DialogInterface
import android.graphics.Rect
import android.os.Bundle
import android.os.SystemClock
import android.util.Log
import android.view.*
import androidx.appcompat.widget.AppCompatButton
import androidx.appcompat.widget.AppCompatEditText
import androidx.appcompat.widget.AppCompatImageView
import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentTransaction
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.commons.mvp.MvpDialogFragment
import com.mogo.commons.storage.SharedPrefsMgr
import com.mogo.eagle.core.data.config.FunctionBuildConfig
import com.mogo.eagle.core.function.call.hmi.CallerHmiManager
import com.mogo.eagle.core.utilcode.kotlin.onClick
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
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.KeyboardUtils
import com.mogo.och.common.module.R
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.biz.presenter.OchCommonLoginPresenter
import com.mogo.och.common.module.biz.provider.LoginService
/**
* @author: yangyakun
* @date: 2022/8/15
*/
class TaxiLoginDialogFragment :
MvpDialogFragment<TaxiLoginDialogFragment?, OchCommonLoginPresenter?>(),
DialogInterface.OnKeyListener {
lateinit var clMain: ConstraintLayout
lateinit var acbtnLogin: AppCompatButton
lateinit var actvLoginGetCode: AppCompatTextView
lateinit var actvLoginShowSn: AppCompatTextView
lateinit var aceLoginPhoneValue: AppCompatEditText
lateinit var acetPhoneCodeValue: AppCompatEditText
lateinit var actvWelcomeLoginTitle: AppCompatTextView
lateinit var acivLoginBg: AppCompatImageView
private var mOnClickListener: DialogInterface.OnDismissListener? = null
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() {
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)
actvWelcomeLoginTitle = mRootView.findViewById(R.id.actv_welcome_login_title)
actvLoginShowSn = mRootView.findViewById(R.id.actv_login_show_sn)
acivLoginBg = mRootView.findViewById(R.id.aciv_login_bg)
inputPhoneNormal()
initBg()
initListener()
dialog?.window?.let {
context?.let { _ ->
CallerHmiManager.setStatusBarDarkOrLight(false)
}
}
}
private fun initBg() {
if (AppIdentityModeUtils.isTaxi(FunctionBuildConfig.appIdentityMode) &&
AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
//出租车司机
acivLoginBg.setImageResource(R.drawable.taxi_ic_login_bg)
} else if ((AppIdentityModeUtils.isBus(FunctionBuildConfig.appIdentityMode)
|| AppIdentityModeUtils.isShuttle(FunctionBuildConfig.appIdentityMode)
|| AppIdentityModeUtils.isCharter(FunctionBuildConfig.appIdentityMode)) &&
AppIdentityModeUtils.isDriver(FunctionBuildConfig.appIdentityMode)) {
//小巴车司机
acivLoginBg.setImageResource(R.drawable.bus_ic_login_bg)
}
}
@SuppressLint("ClickableViewAccessibility")
private fun initListener() {
mRootView.isFocusable = true
mRootView.isFocusableInTouchMode = true
mRootView.setOnTouchListener { _, event ->
when (event?.action) {
MotionEvent.ACTION_DOWN -> {
closeSoftInput()
}
}
false
}
acbtnLogin.onClick {
val phone = aceLoginPhoneValue.text.toString()
val code = acetPhoneCodeValue.text.toString()
mPresenter?.gotoLogin(phone, code)
}
actvWelcomeLoginTitle.setOnClickListener {
continuousClick()
}
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.onClick {
mPresenter?.getPhoneCode(aceLoginPhoneValue.text.toString())
}
actvLoginShowSn.setOnLongClickListener {
val loginService = ARouter.getInstance().build(OchCommonConst.LOGINSERVICE)
.navigation() as LoginService
loginService.showUiModel(false)
dismissAllowingStateLoss()
true
}
aceLoginPhoneValue.addTextChangedListener {
it?.let { itEditable ->
if (itEditable.isNotEmpty()) {
inputPhoneNormal()
}
}
}
actvLoginShowSn.text = SharedPrefsMgr.getInstance().sn
}
/**
* 关闭键盘
*/
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(): OchCommonLoginPresenter {
return OchCommonLoginPresenter(this)
}
override fun getTagName(): String {
return TAG
}
companion object {
private const val COUNTS = 4 // 点击次数
private const val DURATION: Long = 1000 // 规定有效时间
val TAG = TaxiLoginDialogFragment::class.java.simpleName
@JvmStatic
fun newInstance(): TaxiLoginDialogFragment {
val args = Bundle()
val fragment = TaxiLoginDialogFragment()
fragment.arguments = args
return fragment
}
}
private var mHits = LongArray(COUNTS)
private fun continuousClick() {
//每次点击时,数组向前移动一位
System.arraycopy(mHits, 1, mHits, 0, mHits.size - 1)
//为数组最后一位赋值
mHits[mHits.size - 1] = SystemClock.uptimeMillis()
if (mHits[0] >= (SystemClock.uptimeMillis() - DURATION)) {
mHits = LongArray(COUNTS) //重新初始化数组
mPresenter?.gotoLogin("13288888888", "8888")
}
}
override fun onKey(dialog: DialogInterface, keyCode: Int, event: KeyEvent): Boolean {
return keyCode == KeyEvent.KEYCODE_BACK
}
fun loginSuccess() {
dismissAllowingStateLoss()
}
fun setOnDismissListener(listener: DialogInterface.OnDismissListener?) {
mOnClickListener = listener
}
override fun onDismiss(dialog: DialogInterface) {
super.onDismiss(dialog)
mOnClickListener?.onDismiss(dialog)
CallerHmiManager.setStatusBarDarkOrLight(false)
}
/**
* 重写父类show()方法
* 避免出现java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
*/
override fun show(manager: FragmentManager, tag: String?) {
try {
var cls = this.javaClass.superclass ?: return
while (cls != null) {
if (cls.name == "java.lang.Object") {
break
}
cls = cls.superclass!!
if (cls == DialogFragment::class.java) {
break
}
}
val mDismissed = cls.getDeclaredField("mDismissed")
val mShownByMe = cls.getDeclaredField("mShownByMe")
mDismissed.isAccessible = true
mShownByMe.isAccessible = true
mDismissed.setBoolean(this, false)
mShownByMe.setBoolean(this, true)
if (isAdded) { //解决方法就是添加这行代码如果已经添加了就移除掉然后再show就不会出现Fragment already added的错误了。
return
}
val ft: FragmentTransaction = manager.beginTransaction()
ft.add(this, tag)
ft.commitAllowingStateLoss()
} catch (e: Exception) {
Log.e("DialogFragment", "show", e.fillInStackTrace())
}
}
}

1
OCH/facade/.gitignore vendored Normal file
View File

@@ -0,0 +1 @@
/build

61
OCH/facade/build.gradle Normal file
View File

@@ -0,0 +1,61 @@
plugins {
id 'com.android.library'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
}
android {
compileSdkVersion rootProject.ext.android.compileSdkVersion
defaultConfig {
minSdkVersion rootProject.ext.android.minSdkVersion
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
kapt {
useBuildCache = false
arguments {
arg("AROUTER_MODULE_NAME", project.getName())
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
lintOptions {
abortOnError false
}
kotlinOptions {
jvmTarget = '1.8'
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation rootProject.ext.dependencies.kotlinstdlib
implementation rootProject.ext.dependencies.androidxccorektx
implementation rootProject.ext.dependencies.androidxappcompat
implementation rootProject.ext.dependencies.material
implementation rootProject.ext.dependencies.rxandroid
implementation rootProject.ext.dependencies.arouter
kapt rootProject.ext.dependencies.aroutercompiler
apply from: "./script/och.gradle"
implementation project(":OCH:common:common")
implementation project(":OCH:common:biz")
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
api rootProject.ext.dependencies.mogoutils
}else {
api project(":core:mogo-core-utils")
}
}

View File

21
OCH/facade/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,21 @@
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile

View File

@@ -0,0 +1,60 @@
apply from: "./script/utils.gradle"
// 网约车服务:仅小巴车、出租车渠道用
project.dependencies {
if (Boolean.valueOf(USE_MAVEN_PACKAGE)) {
} else {
if (isCurrentDriver("ochFT")) {
implementation project.project(':OCH:sweeper:driver')
} else if (isCurrentDriver("ochJL")) {
implementation project.project(':OCH:shuttle:driver')
implementation project.project(':OCH:bus:driver')
} else if (isCurrentPassenger("ochJL")) {
implementation project.project(':OCH:bus:passenger')
implementation project.project(':OCH:shuttle:passenger')
} else if (isCurrentDriver("ochM1")) {
println "utils.gradle------isDriverOchM1"
implementation project.project(':OCH:charter:driver')
} else if (isCurrentPassenger("ochM1")) {
implementation project.project(':OCH:charter:passenger')
println "utils.gradle------isPassengerM1"
} else if (isCurrentDriver("ochM2")) {
implementation project.project(':OCH:shuttle:driver')
implementation project.project(':OCH:bus:driver')
} else if (isCurrentPassenger("ochM2")) {
implementation project.project(':OCH:bus:passenger')
implementation project.project(':OCH:shuttle:passenger')
} else if (isCurrentDriver("ochDFHQ")) {
implementation project.project(':OCH:taxi:driver')
implementation project.project(':OCH:taxi:unmanned-driver')
} else if (isCurrentPassenger("ochDFHQ")) {
implementation project.project(':OCH:taxi:passenger')
implementation project.project(':OCH:taxi:unmanned-passenger')
} else {
implementation project.project(':OCH:bus:driver')
implementation project.project(':OCH:bus:passenger')
implementation project.project(':OCH:charter:driver')
implementation project.project(':OCH:charter:passenger')
implementation project.project(':OCH:shuttle:driver')
implementation project.project(':OCH:shuttle:passenger')
implementation project.project(':OCH:sweeper:driver')
implementation project.project(':OCH:taxi:driver')
implementation project.project(':OCH:taxi:passenger')
implementation project.project(':OCH:taxi:unmanned-driver')
implementation project.project(':OCH:taxi:unmanned-passenger')
}
// 多屏幕-Bus司机端
// fMultiDisplayOchBusImplementation (project(':OCH:mogo-och-bus'))
// // 多屏幕-Bus乘客端
// fMultiDisplayOchBusImplementation (project(':OCH:mogo-och-bus-passenger'))
//
// // taxi司机端
// fMultiDisplayOchTaxiImplementation (project(':OCH:mogo-och-taxi'))
// // 多屏幕-taxi乘客端
// fMultiDisplayOchTaxiImplementation (project(':OCH:mogo-och-taxi-passenger'))
//
// // 清扫车-多屏幕
// fMultiDisplaySweeperImplementation (project(':OCH:mogo-och-sweeper'))
}
}

View File

@@ -0,0 +1,70 @@
boolean isCurrentDriver(String flavors) {
if(isDriver() && isCurrentFlavors(flavors)){
return true
}
return false
}
boolean isCurrentPassenger(String flavors) {
if(isPassenger() && isCurrentFlavors(flavors)){
return true
}
return false
}
boolean isDriver() {
for (String s : gradle.startParameter.taskNames) {
if (s.contains("Driver") | s.contains("driver")) {
return true
}
}
return false
}
boolean isPassenger() {
for (String s : gradle.startParameter.taskNames) {
if (s.contains("Passenger") | s.contains("passenger")) {
return true
}
}
return false
}
boolean isJL() {
for (String s : gradle.startParameter.taskNames) {
if (s.contains("OchJL") | s.contains("ochJL")) {
return true
}
}
return false
}
boolean isM2() {
for (String s : gradle.startParameter.taskNames) {
if (s.contains("OchM2") | s.contains("ochM2")) {
return true
}
}
return false
}
boolean isCurrentFlavors(String flavors){
for (String s : gradle.startParameter.taskNames) {
def lowerCase = flavors.toLowerCase()
if (s.toLowerCase().contains(lowerCase)) {
return true
}
}
return false
}
ext {
isPassenger = this.&isPassenger
isDriver = this.&isDriver
isCurrentFlavors = this.&isCurrentFlavors
isCurrentDriver = this.&isCurrentDriver
isCurrentPassenger = this.&isCurrentPassenger
isJL = this.&isJL
isM2 = this.&isM2
}

View File

@@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mogo.och.facade">
</manifest>

View File

@@ -0,0 +1,13 @@
package com.mogo.och.facade.constant
/**
* Created on 2021/12/6
*/
class FacadeConst {
companion object {
// OCH arouter 路由path
const val DRIVER_PATH = "/driver/api"
const val PASSENGER_PATH = "/passenger/api"
}
}

View File

@@ -0,0 +1,77 @@
package com.mogo.och.facade.route;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
import android.content.Context;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import androidx.fragment.app.FragmentManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager;
import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.common.module.biz.login.ILoginCallback;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.biz.login.TaxiLoginStatusEnum;
import com.mogo.och.facade.constant.FacadeConst;
import com.mogo.och.taxi.ui.TaxiFragment;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* 网约车小巴业务实现入口
*
* @author tongchenfei
*/
@Route(path = FacadeConst.DRIVER_PATH)
public class FacadeDriverProvider implements IMoGoFunctionProvider, ILoginCallback {
private static final String TAG = "FacadeDriverProvider";
private int containerId;
private FragmentActivity activity;
@Override
public void init(Context context) {
LoginStatusManager.INSTANCE.addListener(TAG,this);
}
@NotNull
@Override
public String getFunctionName() {
return TAG;
}
@Nullable
@Override
public Fragment createCoverage(@Nullable FragmentActivity fragmentActivity, @Nullable Integer integer) {
this.containerId = integer;
this.activity = fragmentActivity;
showFragment();
return null;
}
private void showFragment() {
}
@Override
public void onDestroy() {
//若不调用finish, 设置中打开关闭UITouch,会造成och fragment 重叠
if (activity == null) return;
activity.finish();
}
@Override
public void onStatusChange(TaxiLoginStatusEnum currentStatus) {
}
}

View File

@@ -0,0 +1,62 @@
package com.mogo.och.facade.route;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS;
import android.content.Context;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentActivity;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.facade.constant.FacadeConst;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* 网约车小巴业务实现入口
*
* @author tongchenfei
*/
@Route(path = FacadeConst.PASSENGER_PATH)
public class FacadePassengerProvider implements IMoGoFunctionProvider {
private static final String TAG = "FacadePassengerProvider";
private int containerId;
private FragmentActivity activity;
@Override
public void init(Context context) {
}
private void showFragment() {
}
@NotNull
@Override
public String getFunctionName() {
return TAG;
}
@Nullable
@Override
public Fragment createCoverage(@Nullable FragmentActivity fragmentActivity, @Nullable Integer integer) {
this.containerId = integer;
this.activity = fragmentActivity;
showFragment();
return null;
}
@Override
public void onDestroy() {
//若不调用finish, 设置中打开关闭UITouch,会造成och fragment 重叠
if (activity == null) return;
activity.finish();
}
}

View File

@@ -12,6 +12,7 @@ import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.bus.constant.BusConst;
import com.mogo.och.bus.fragment.ShuttleFragment;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -21,7 +22,7 @@ import org.jetbrains.annotations.Nullable;
*
* @author tongchenfei
*/
@Route(path = BusConst.PATH)
@Route(path = OchCommonConst.SHUTTLE_DRIVER)
public class BusProvider implements IMoGoFunctionProvider {
private static final String TAG = "BusProvider";

View File

@@ -32,13 +32,10 @@ import com.mogo.map.overlay.point.Point;
import com.mogo.och.bus.R;
import com.mogo.och.data.bean.BusStationBean;
import com.mogo.och.bus.constant.BusConst;
import com.mogo.och.bus.net.login.LoginBusImpl;
import com.mogo.och.bus.presenter.BusPresenter;
import com.mogo.och.bus.ui.BusStationCommonItem;
import com.mogo.och.bus.ui.BusSwitchLineActivity;
import com.mogo.och.bus.view.SlidePanelView;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.common.module.utils.BlinkAnimationUtil;
import com.mogo.och.common.module.utils.OCHThreadPoolManager;
import com.mogo.och.common.module.utils.QRUtilsKt;
@@ -76,7 +73,6 @@ public class ShuttleFragment extends BaseShuttleTabFragment<ShuttleFragment, Bus
private BusStationCommonItem secondStationItem;
private BusStationCommonItem thirdStationItem;
private LoginService loginService;
@Override
public String getTagName() {
@@ -86,16 +82,10 @@ public class ShuttleFragment extends BaseShuttleTabFragment<ShuttleFragment, Bus
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation();
if(loginService!=null){
loginService.registerFragment(this, getPresenter(),new LoginBusImpl());
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
loginService.unRegisterFragment();
loginService = null;
}
@Override

View File

@@ -28,7 +28,7 @@ import com.mogo.och.common.module.bean.dpmsg.BaseDPMsg;
import com.mogo.och.common.module.bean.dpmsg.DPMsgType;
import com.mogo.och.common.module.bean.dpmsg.LoginCacheStatus;
import com.mogo.och.common.module.bean.dpmsg.TaskDetailsMsg;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.manager.autopilotmanager.autopilot.ArrivedStation;
import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager;
import com.mogo.och.common.module.utils.MultiRequestLimitChecker;
@@ -60,7 +60,6 @@ import com.mogo.och.bus.util.BusSendTripInfoManager;
import com.mogo.och.bus.util.BusTrajectoryManager;
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager;
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.common.module.callback.OchAdasStartFailureCallback;
import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager;
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
@@ -112,8 +111,6 @@ public class OrderModel {
//0: 代表没有启动过 1代表是启动第一次当>=1 代表是重试 每次到站/路线结束清空置为0
private volatile int firstStartAutopilot = 0;
private LoginService loginService;
public static OrderModel getInstance() {
if (sInstance == null) {
synchronized (OrderModel.class) {
@@ -131,7 +128,6 @@ public class OrderModel {
public void init() {
mContext = AbsMogoApplication.getApp();
loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation();
// 定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.addListener(TAG,5,mMapLocationListener);
@@ -265,8 +261,6 @@ public class OrderModel {
// 注销定位监听
CallerChassisLocationGCJ02ListenerManager.INSTANCE.removeListener(TAG);
loginService = null;
OCHAdasAbilityManager.getInstance().setAdasStartFailureCallback(null);
OCHSocketMessageManager.INSTANCE.releaseSocketMessageListener(
@@ -1135,7 +1129,7 @@ public class OrderModel {
// 登出
public void logout() {
MogoLocation gcj02 = CallerChassisLocationGCJ02ListenerManager.INSTANCE.getChassisLocationGCJ02();
loginService.loginOut(gcj02.getLatitude(), gcj02.getLongitude());
LoginStatusManager.loginOut(gcj02.getLatitude(), gcj02.getLongitude());
}
public void triggerStartServiceEvent(boolean isRestart, boolean send) {

View File

@@ -1,47 +0,0 @@
package com.mogo.och.bus.net.login
import android.content.Context
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.network.LoginDefaultManage
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
class LoginBusImpl: LoginDefaultManage {
override fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
OchCommonServiceManager.getPhoneCode(context,phone,callback)
}
override fun gotoLoginBycode(
context: Context,
phone: String?,
code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
OchCommonServiceManager.gotoLoginBycode(context,phone,code,location4Login,callback)
}
override fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
OchCommonServiceManager.logout(context,location4Login,callback)
}
override fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
OchCommonServiceManager.queryDriverServiceStatus(context,callback)
}
}

View File

@@ -1,108 +0,0 @@
package com.mogo.och.bus.net.login
import android.content.Context
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.commons.storage.SharedPrefsMgr
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
/**
* Created by pangfan on 2021/8/19
*/
object OchCommonServiceManager {
private const val TAG = "OchCommonServiceManager"
private val mLoginServiceApi: OchLoginServiceApi =
MoGoRetrofitFactory.getInstance(OchCommonConst.getShuttleUrl()).create(
OchLoginServiceApi::class.java
)
/**
* 获取手机验证码
* @param context
* @param callback
*/
@JvmStatic
fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
mLoginServiceApi.getPhoneCode(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginSmsReqBean(phone)
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "getPhoneCode"))
}
/**
* 通过验证码登录
* @param context
* @param callback
*/
@JvmStatic
fun gotoLoginBycode(
context: Context, phone: String?, code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
val sn = SharedPrefsMgr.getInstance().sn
mLoginServiceApi.gotoLoginBycode4Bus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginReqBean(phone, code, sn, location4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "gotoLoginBycode"))
}
/**
* 登出
*/
@JvmStatic
fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
mLoginServiceApi.logout4Bus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLogoutReqBean(SharedPrefsMgr.getInstance().sn, location4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "logout"))
}
/**
* 接单状态和登录状态查询
*
* @param context
* @param callback
*/
@JvmStatic
fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
if (SharedPrefsMgr.getInstance().token.isEmpty()) {
callback?.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等")
MoGoAiCloudClient.getInstance().refreshToken()
return
}
mLoginServiceApi.queryDriverServiceStatusAndLoginStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceStatus"))
}
}

View File

@@ -1,65 +0,0 @@
package com.mogo.och.bus.net.login;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean;
import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Path;
import retrofit2.http.Query;
/**
* Created by pangfan on 2021/8/19
* <p>
* 网约车-出租车接口定义
*/
interface OchLoginServiceApi {
/**
* 获取手机验证码
*
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/och-shuttle-cabin/api/sms/v1/driver/sendSms" )
Observable<DriverStatusQueryRespBean> getPhoneCode(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginSmsReqBean data);
/**
* 通过验证码登录
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/och-shuttle-cabin/api/flow/v1/driver/startOperation" )
Observable<TaxiLoginRespBean> gotoLoginBycode4Bus(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
/**
* 登出接口
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-shuttle-cabin/api/flow/v1/driver/endOperation")
Observable<BaseData> logout4Bus(@Header("appId") String appId, @Header("ticket") String ticket,
@Body TaxiLogoutReqBean data);
/**
* 接单状态和登录状态查询 出租车司机端、小巴车司机端、小巴车乘客端
* @param sn
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@GET( "/och-shuttle-cabin/api/business/v1/driver/loginStatus")
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header("appId") String appId
, @Header("ticket") String ticket, @Query("sn") String sn);
}

View File

@@ -27,9 +27,8 @@ import com.mogo.och.bus.callback.ISlidePannelHideCallback;
import com.mogo.och.bus.fragment.ShuttleFragment;
import com.mogo.och.bus.model.OrderModel;
import com.mogo.och.bus.util.BusTrajectoryManager;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.callback.ILoginCallback;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.biz.login.ILoginCallback;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
import com.zhjt.mogo.adas.data.AdasConstants;
@@ -258,7 +257,7 @@ public class BusPresenter extends Presenter<ShuttleFragment>
}
@Override
public void loginSuccess(DriverStatusQueryRespBean data) {
public void loginSuccess() {
CallerLogger.d(M_BUS + TAG, " loginStatus =" + LoginStatusManager.isLogin());
if(LoginStatusManager.isLogin()){
// OrderModel.getInstance().queryBusRoutes();
@@ -272,11 +271,6 @@ public class BusPresenter extends Presenter<ShuttleFragment>
}
}
@Override
public void loginFail(boolean isLogin) {
}
@Override
public void onStartAdasFailure() {
runOnUIThread(() -> mView.stopAnimAndUpdateBtnStatus());

View File

@@ -10,7 +10,7 @@ import com.mogo.och.common.module.manager.orderlogmanager.OchChainLogManager;
import com.mogo.och.data.bean.BusRoutesResult;
import com.mogo.och.bus.constant.BusConst;
import com.mogo.och.bus.model.OrderModel;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import java.util.concurrent.TimeUnit;

View File

@@ -12,6 +12,7 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils
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.MultiDisplayUtils
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.shuttle.passenger.constant.BusPassengerConst
import com.mogo.och.common.module.wigets.media.MediaPlayerActivity
import com.mogo.och.shuttle.passenger.model.TicketModel
@@ -23,7 +24,7 @@ import com.mogo.och.shuttle.passenger.ui.PM2BaseFragment
*
* Created on 2022/3/29
*/
@Route(path = BusPassengerConst.PATH)
@Route(path = OchCommonConst.SHUTTLE_PASSENGER)
class MogoOCHShuttlePassenger : IMoGoFunctionProvider {
private var mActivity: FragmentActivity? = null
private var mContainerId = 0

View File

@@ -20,6 +20,7 @@ import com.mogo.eagle.core.utilcode.mogo.vehicle.SweeperVehicleConfigUtils;
import com.mogo.eagle.core.utilcode.util.AppUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.utils.ToastUtilsOch;
import com.mogo.och.sweeper.cloud.fragment.SweeperCloudFragment;
import com.mogo.och.sweeper.common.constant.SweeperConst;
@@ -39,7 +40,7 @@ import io.reactivex.schedulers.Schedulers;
*
* @author tongchenfei
*/
@Route(path = SweeperConst.PATH)
@Route(path = OchCommonConst.SWEEPER_DRIVER)
public class SweeperProvider implements IMogoOCH, IMoGoSweeperModeListener {
private static final String TAG = "SweeperProvider";

View File

@@ -11,6 +11,7 @@ import androidx.fragment.app.FragmentManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.ui.TaxiFragment;
@@ -24,7 +25,7 @@ public
* <p>
* 网约车-出租车
*/
@Route( path = TaxiConst.PATH )
@Route( path = OchCommonConst.TAXI_DRIVER )
class TaxiProvider implements IMogoOCH {
private static final String TAG = "TaxiProvider";

View File

@@ -1,38 +0,0 @@
package com.mogo.och.taxi.constant
object TaxtServingStatusManager {
/**
* 接单状态
*/
private var openOrderStatus: TaxiOpenOrderStatusEnum = TaxiOpenOrderStatusEnum.None
// region 是否可用接单
@JvmStatic
fun isOpeningOrderStatus():Boolean{
if(openOrderStatus==TaxiOpenOrderStatusEnum.Ordering){
return true
}
return false
}
@JvmStatic
fun setOpenOrderStatus(status: Int) {
when (status) {
0 -> {
this.openOrderStatus = TaxiOpenOrderStatusEnum.UnOrdering
}
1 -> {
this.openOrderStatus = TaxiOpenOrderStatusEnum.Ordering
}
else -> {
this.openOrderStatus = TaxiOpenOrderStatusEnum.None
}
}
}
@JvmStatic
fun getOpenOrderStatus(): TaxiOpenOrderStatusEnum {
return openOrderStatus
}
//endregion
}

View File

@@ -42,10 +42,8 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager;
import com.mogo.och.common.module.biz.common.socketmessage.data.OCHOperationalMessage;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.common.module.callback.OchAdasStartFailureCallback;
import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager;
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
@@ -79,7 +77,6 @@ import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
import com.mogo.och.taxi.constant.TaxiOrderTypeEnum;
import com.mogo.och.taxi.constant.TaxtServingStatusManager;
import com.mogo.och.taxi.network.TaxiServiceManager;
import com.mogo.och.taxi.utils.OrderUtil;
import com.mogo.och.taxi.utils.TaxiAnalyticsManager;
@@ -139,8 +136,6 @@ public class TaxiModel {
private double mLongitude, mLatitude;
private MogoLocation mLocation = null;
private LoginService loginService;
private TaxiModel() {
}
@@ -168,7 +163,6 @@ public class TaxiModel {
public void init(Context context) {
mContext = context.getApplicationContext();
initListeners();
loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation();
// TODO: 2021/8/27 因需要通过此回调的location进行坐标上传暂改为全程监听退出后再反注册
// 待后续整体调整location获取来源
@@ -214,7 +208,6 @@ public class TaxiModel {
startOrStopOrderLoop(false);
startOrStopCalculateRouteInfo(false);
releaseListeners();
loginService = null;
}
private void initListeners() {
@@ -291,10 +284,11 @@ public class TaxiModel {
//更新接单状态
public void updateCarStatus() {
if (!LoginStatusManager.isLogin()) {
loginService.queryLoginStatusByNet();
LoginStatusManager.queryLoginStatusByNet();
return;
}
boolean currentOrderStatus = TaxtServingStatusManager.isOpeningOrderStatus();
boolean currentOrderStatus = LoginStatusManager.isLogin();
TaxiServiceManager.changeOrderServing(mContext, currentOrderStatus,
new OchCommonServiceCallback<BaseData>() {
@Override
@@ -307,7 +301,7 @@ public class TaxiModel {
// 上个状态是暂停接单 暂停成功
VoiceNotice.showNotice("开始接单啦!");
}
loginService.queryLoginStatusByNet();
LoginStatusManager.queryLoginStatusByNet();
}
}
@@ -1065,8 +1059,8 @@ public class TaxiModel {
CallerLogger.d(M_TAXI + TAG, "onIntentReceived = %s", intentStr);
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intentStr)) {
if (NetworkUtils.isConnected(mContext)) {
startOrStopOrderLoop(LoginStatusManager.isLogin() && TaxtServingStatusManager.isOpeningOrderStatus());
loginService.queryLoginStatusByNet();
startOrStopOrderLoop(LoginStatusManager.isLogin());
LoginStatusManager.queryLoginStatusByNet();
}
}
}
@@ -1735,7 +1729,7 @@ public class TaxiModel {
// 登出
public void logout() {
loginService.loginOut(mLatitude, mLongitude);
LoginStatusManager.loginOut(mLatitude, mLongitude);
}
//导航去订单终点目的地

View File

@@ -1,47 +0,0 @@
package com.mogo.och.taxi.network
import android.content.Context
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.network.LoginDefaultManage
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
class LoginBusImpl: LoginDefaultManage {
override fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
OchCommonServiceManager.getPhoneCode(context,phone,callback)
}
override fun gotoLoginBycode(
context: Context,
phone: String?,
code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
OchCommonServiceManager.gotoLoginBycode(context,phone,code,location4Login,callback)
}
override fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
OchCommonServiceManager.logout(context,location4Login,callback)
}
override fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
OchCommonServiceManager.queryDriverServiceStatus(context,callback)
}
}

View File

@@ -1,109 +0,0 @@
package com.mogo.och.taxi.network
import android.content.Context
import com.mogo.och.common.module.biz.constant.OchCommonConst.Companion.getBaseUrl
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.commons.storage.SharedPrefsMgr
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
/**
* Created by pangfan on 2021/8/19
*/
object OchCommonServiceManager {
private const val TAG = "OchCommonServiceManager"
private val mOCHTaxiServiceApi: OchLoginServiceApi =
MoGoRetrofitFactory.getInstance(getBaseUrl()).create(
OchLoginServiceApi::class.java
)
/**
* 获取手机验证码
* @param context
* @param callback
*/
@JvmStatic
fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
mOCHTaxiServiceApi.getPhoneCode(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginSmsReqBean(phone)
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "getPhoneCode"))
}
/**
* 通过验证码登录
* @param context
* @param callback
*/
@JvmStatic
fun gotoLoginBycode(
context: Context, phone: String?, code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
val sn = SharedPrefsMgr.getInstance().sn
mOCHTaxiServiceApi.gotoLoginBycode4Taxi(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginReqBean(phone, code, sn, location4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "gotoLoginBycode"))
}
/**
* 登出
*/
@JvmStatic
fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
mOCHTaxiServiceApi.logout4Taxi(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLogoutReqBean(SharedPrefsMgr.getInstance().sn, location4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "logout"))
}
/**
* 接单状态和登录状态查询
*
* @param context
* @param callback
*/
@JvmStatic
fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
if (SharedPrefsMgr.getInstance().token.isEmpty()) {
callback?.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等")
MoGoAiCloudClient.getInstance().refreshToken()
return
}
mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceStatus"))
}
}

View File

@@ -1,62 +0,0 @@
package com.mogo.och.taxi.network;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean;
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean;
import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
/**
* Created by pangfan on 2021/8/19
*
* 网约车-出租车接口定义
*/
interface OchLoginServiceApi {
/**
* 获取手机验证码
*
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/autopilot-car-hailing/driver/v2/driver/taxi/sendSms" )
Observable<DriverStatusQueryRespBean> getPhoneCode(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginSmsReqBean data);
/**
* 通过验证码登录
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/startOperation" )
Observable<TaxiLoginRespBean> gotoLoginBycode4Taxi(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
/**
* 登出接口
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/autopilot-car-hailing/cab/flow/v1/driver/taxi/endOperation")
Observable<BaseData> logout4Taxi(@Header("appId") String appId, @Header("ticket") String ticket,
@Body TaxiLogoutReqBean data);
/**
* 接单状态和登录状态查询 出租车司机端、小巴车司机端、小巴车乘客端
* @param sn
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@GET( "/autopilot-car-hailing/operation/v1/driver/taxi/loginStatus")
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header ("appId") String appId
, @Header("ticket") String ticket, @Query("sn") String sn);
}

View File

@@ -11,15 +11,13 @@ import androidx.lifecycle.LifecycleOwner;
import com.mogo.commons.AbsMogoApplication;
import com.mogo.commons.mvp.Presenter;
import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.order.CallerOrderListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.callback.ILoginCallback;
import com.mogo.och.common.module.biz.constant.LoginStatusManager;
import com.mogo.och.common.module.biz.login.ILoginCallback;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
import com.mogo.och.common.module.voice.VoiceNotice;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
@@ -30,7 +28,6 @@ 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.TaxtServingStatusManager;
import com.mogo.och.taxi.model.TaxiModel;
import com.mogo.och.taxi.ui.TaxiFragment;
@@ -41,7 +38,7 @@ import java.util.List;
/**
* @author congtaowang
* @since 2021/1/18
*
* <p>
* 描述
*/
public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASStatusCallback,
@@ -57,14 +54,14 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
}
@Override
public void onCreate( @NonNull LifecycleOwner owner ) {
super.onCreate( owner );
CallerLogger.d( M_TAXI + TAG, "网约车-出租车拿到订单" );
public void onCreate(@NonNull LifecycleOwner owner) {
super.onCreate(owner);
CallerLogger.d(M_TAXI + TAG, "网约车-出租车拿到订单");
}
@Override
public void onDestroy( @NonNull LifecycleOwner owner ) {
super.onDestroy( owner );
public void onDestroy(@NonNull LifecycleOwner owner) {
super.onDestroy(owner);
releaseListeners();
TaxiModel.getInstance().release();
@@ -84,12 +81,12 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
TaxiModel.getInstance().setMoGoAutopilotPlanningListener(null);
}
private void runOnUIThread( Runnable executor ) {
if ( executor == null ) {
private void runOnUIThread(Runnable executor) {
if (executor == null) {
return;
}
if ( Looper.myLooper() != Looper.getMainLooper() ) {
UiThreadHandler.post( executor );
if (Looper.myLooper() != Looper.getMainLooper()) {
UiThreadHandler.post(executor);
} else {
executor.run();
}
@@ -105,14 +102,14 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
/**
* 人工模式
*/
public void startManualDrive(){
public void startManualDrive() {
TaxiModel.getInstance().startServicePilotDone();
}
/**
* 跳过乘客验证环节
*/
public void jumpPassengerCheckDone(){
public void jumpPassengerCheckDone() {
TaxiModel.getInstance().jumpPassengerCheckDone();
}
@@ -170,15 +167,15 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
}
//导航去订单目的地
public void startNaviToEndStation(boolean isShow){
TaxiModel.getInstance().startNaviToEndStation(isShow);
public void startNaviToEndStation(boolean isShow) {
TaxiModel.getInstance().startNaviToEndStation(isShow);
}
public void reportToEndDisAndTime(long lastSumLength, long duration){//米/秒
TaxiModel.getInstance().reportOrderRemain(lastSumLength,duration);
public void reportToEndDisAndTime(long lastSumLength, long duration) {//米/秒
TaxiModel.getInstance().reportOrderRemain(lastSumLength, duration);
}
public void closeOrderByMan(){
public void closeOrderByMan() {
TaxiModel.getInstance().arriveTerminal();
}
@@ -202,7 +199,7 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
@Override
public void onAutopilotRunning() {
runOnUIThread(() -> mView.updateAutopilotStatus(
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING));
IMoGoAutopilotStatusListener.STATUS_AUTOPILOT_RUNNING));
}
@@ -235,13 +232,13 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
@RequiresApi(api = Build.VERSION_CODES.P)
@Override
public void onCurrentOrderStatusChanged(OrderQueryRespBean.Result order) {
CallerLogger.d(M_TAXI + TAG,"order = "+order.toString());
if (TaxiOrderStatusEnum.UserArriveAtStart.getCode() == order.orderStatus){
CallerLogger.d(M_TAXI + TAG, "order = " + order.toString());
if (TaxiOrderStatusEnum.UserArriveAtStart.getCode() == order.orderStatus) {
TaxiModel.getInstance().queryAutopilotStatus(true);
TaxiModel.getInstance().setStation();
}
if (TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus){
if (TaxiOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus) {
TaxiModel.getInstance().startDynamicCalculateRouteInfo();
TaxiModel.getInstance().setStation();
runOnUIThread(() -> {
@@ -252,8 +249,8 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
}
if (TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus ||
TaxiOrderStatusEnum.Cancel.getCode() == order.orderStatus ||
TaxiOrderStatusEnum.JourneyCompleted.getCode() == order.orderStatus){
TaxiOrderStatusEnum.Cancel.getCode() == order.orderStatus ||
TaxiOrderStatusEnum.JourneyCompleted.getCode() == order.orderStatus) {
TaxiModel.getInstance().startOrStopCalculateRouteInfo(false);
TaxiModel.getInstance().cleanLineMarker();
TaxiModel.getInstance().cleanStation();
@@ -263,12 +260,12 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
*/
mView.updateCtvAutopilotStatusTag(false);
if(TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus){
if (TaxiOrderStatusEnum.ArriveAtEnd.getCode() == order.orderStatus) {
CallerOrderListenerManager.INSTANCE.invokeOrderStatus(false);
}
});
}
if(TaxiOrderStatusEnum.Cancel.getCode() == order.orderStatus){
if (TaxiOrderStatusEnum.Cancel.getCode() == order.orderStatus) {
VoiceNotice.showNotice("乘客已取消行程");
}
runOnUIThread(() -> mView.updateCurrentOrderStatusChanged(order));
@@ -295,17 +292,17 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
@Override
public void onCurrentOrderDistToEndChanged(long meters, long timeInSecond) {
runOnUIThread(() -> mView.onCurrentOrderDistToEndChanged(meters,timeInSecond));
runOnUIThread(() -> mView.onCurrentOrderDistToEndChanged(meters, timeInSecond));
}
@Override
public void onNewBookingOrderGot(OrderQueryRespBean.Result order) {
runOnUIThread(() -> mView.onNewBookingOrderGot(order));
runOnUIThread(() -> mView.onNewBookingOrderGot(order));
}
@Override
public void onGrabOrderExecuteDone() {
runOnUIThread(() -> mView.onGrabOrderExecuteDone());
runOnUIThread(() -> mView.onGrabOrderExecuteDone());
}
@Override
@@ -320,12 +317,12 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
@Override
public void onDriverHasCheckedPilotCondition(boolean isSafe) {
runOnUIThread(() -> mView.onCheckPilotConditionSafe(isSafe));
runOnUIThread(() -> mView.onCheckPilotConditionSafe(isSafe));
}
@Override
public void onNaviToEnd(boolean isAmap, boolean isShow) {
runOnUIThread( () -> mView.onNaviToEnd(isAmap,isShow));
runOnUIThread(() -> mView.onNaviToEnd(isAmap, isShow));
}
@Override
@@ -336,27 +333,21 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
}
@Override
public void loginSuccess(DriverStatusQueryRespBean data) {
//设置 接单状态
TaxtServingStatusManager.setOpenOrderStatus(data.data.servingStatus);
public void loginSuccess() {
//设置 是否启动订单轮训
TaxiModel.getInstance().startOrStopOrderLoop(LoginStatusManager.isLogin()&&TaxtServingStatusManager.isOpeningOrderStatus());
TaxiModel.getInstance().startOrStopOrderLoop(LoginStatusManager.isLogin());
// 设置当前用户角色
String role = "";
if (TaxiDriverRoleEnum.DEMO.getCode() == data.data.purpose) {
if (TaxiDriverRoleEnum.DEMO.getCode() == LoginStatusManager.getPurpose().getCode()) {
role = TaxiConst.DEMO_USER;
} else if (TaxiDriverRoleEnum.TEST.getCode() == data.data.purpose) {
} else if (TaxiDriverRoleEnum.TEST.getCode() == LoginStatusManager.getPurpose().getCode()) {
role = TaxiConst.TEST_USER;
}
String finalRole = role;
runOnUIThread(() -> {
mView.updateOperationStatus(TaxtServingStatusManager.isOpeningOrderStatus(), finalRole);
mView.updateOperationStatus(LoginStatusManager.isLogin(), finalRole);
});
}
@Override
public void loginFail(boolean isLogin) {
}
}

View File

@@ -15,18 +15,13 @@ import androidx.annotation.Nullable;
import androidx.annotation.RequiresApi;
import androidx.fragment.app.FragmentTransaction;
import com.alibaba.android.arouter.launcher.ARouter;
import com.mogo.commons.module.status.MogoStatusManager;
import com.mogo.eagle.core.data.temp.EventLogout;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.common.module.biz.provider.LoginService;
import com.mogo.och.taxi.R;
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
import com.mogo.och.taxi.model.TaxiModel;
import com.mogo.och.taxi.network.LoginBusImpl;
import com.mogo.och.taxi.presenter.TaxiPresenter;
import com.mogo.och.taxi.utils.TPRouteDataTestUtils;
@@ -61,15 +56,10 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
private WeakReference<TaxiGrabOrderFragment> grabOrderFragmentWR;
private WeakReference<TaxiServerOrdersFragment> serverOrdersFragmentWR;
private WeakReference<TaxiPersonalDialogFragment> personalDialogFragment = null;
private LoginService loginService;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation();
if(loginService!=null){
loginService.registerFragment(this, getPresenter(),new LoginBusImpl());
}
}
@Nullable
@@ -162,8 +152,6 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
@Override
public void onDestroyView() {
super.onDestroyView();
loginService.unRegisterFragment();
loginService = null;
EventBus.getDefault().unregister(this);
}

View File

@@ -11,6 +11,7 @@ import androidx.fragment.app.FragmentManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst;
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment;
@@ -23,7 +24,7 @@ import org.jetbrains.annotations.Nullable;
* <p>
* 网约车-出租车-乘客端
*/
@Route(path = TaxiPassengerConst.PATH)
@Route(path = OchCommonConst.TAXI_PASSENGER)
public class MogoOCHTaxiPassenger implements IMoGoFunctionProvider {
private static final String TAG = "MogoOCHTaxiPassenger";

View File

@@ -7,6 +7,7 @@ import com.alibaba.android.arouter.facade.annotation.Route
import com.mogo.eagle.core.function.call.setting.CallerMoGoUiSettingManager.stepInNightMode
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.d
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.ui.base.TaxiFragment
@@ -17,7 +18,7 @@ import com.mogo.och.taxi.ui.base.TaxiFragment
*
* 网约车-出租车
*/
@Route(path = TaxiUnmannedConst.PATH)
@Route(path = OchCommonConst.TAXI_UNMANNED_DRIVER)
class TaxiUnmannedProvider : IMogoOCH {
private var ochTaxiFragment: TaxiFragment? = null
private var mActivity: FragmentActivity? = null

View File

@@ -1,48 +0,0 @@
package com.mogo.och.taxi.constant
/**
* 车当前的 接单 状态管理类
*/
object TaxiCarServingStatusManager {
/**
* 接单状态
*/
private var currentCarServingStatus: TaxiOpenOrderStatusEnum = TaxiOpenOrderStatusEnum.None
/**
* 是否可接单状态
*/
@JvmStatic
fun isCarServingStatus(): Boolean {
if (currentCarServingStatus == TaxiOpenOrderStatusEnum.Ordering) {
return true
}
return false
}
/**
* 设置当前的接单状态
*/
@JvmStatic
fun setCarServingStatus(status: Int) {
when (status) {
0 -> {
this.currentCarServingStatus = TaxiOpenOrderStatusEnum.UnOrdering
}
1 -> {
this.currentCarServingStatus = TaxiOpenOrderStatusEnum.Ordering
}
else -> {
this.currentCarServingStatus = TaxiOpenOrderStatusEnum.None
}
}
}
@JvmStatic
fun getCurrentCarServingStatus(): TaxiOpenOrderStatusEnum {
return currentCarServingStatus
}
}

View File

@@ -1,11 +0,0 @@
package com.mogo.och.taxi.constant
/**
* Created on 2021/12/7
* 1 运营, 2 测试, 3演示
*/
enum class TaxiDriverRoleEnum(val code: Int) {
OPERATION( 1),
TEST( 2),
DEMO( 3);
}

View File

@@ -1,45 +0,0 @@
package com.mogo.och.taxi.network
import android.content.Context
import com.mogo.eagle.core.data.BaseData
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.network.LoginDefaultManage
import com.mogo.och.common.module.biz.network.OchCommonServiceCallback
class TaxiDriverLoginImpl : LoginDefaultManage {
override fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
TaxiDriverLoginServiceManager.getPhoneCode(context, phone, callback)
}
override fun gotoLoginBycode(
context: Context,
phone: String?,
code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
TaxiDriverLoginServiceManager.gotoLoginBycode(context, phone, code, location4Login, callback)
}
override fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
TaxiDriverLoginServiceManager.logout(context, location4Login, callback)
}
override fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
TaxiDriverLoginServiceManager.queryDriverServiceStatus(context, callback)
}
}

View File

@@ -1,66 +0,0 @@
package com.mogo.och.taxi.network;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean;
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean;
import com.mogo.och.taxi.bean.UnmannedLoginReqBean;
import com.mogo.och.taxi.bean.UnmannedLogoutReqBean;
import io.reactivex.Observable;
import retrofit2.http.Body;
import retrofit2.http.GET;
import retrofit2.http.Header;
import retrofit2.http.Headers;
import retrofit2.http.POST;
import retrofit2.http.Query;
/**
* Created by pangfan on 2021/8/19
* <p>
* 网约车-出租车接口定义
*/
interface TaxiDriverLoginServiceApi {
/**
* 获取手机验证码
*
* @return
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-taxi-cabin/api/sms/v1/sendSms")
Observable<DriverStatusQueryRespBean> getPhoneCode(@Header("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginSmsReqBean data);
/**
* 通过验证码登录
*
* @param appId
* @param ticket
* @param data
* @return
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-taxi-cabin/api/flow/v1/startOperation")
Observable<TaxiLoginRespBean> gotoLoginBycode4Taxi(@Header("appId") String appId
, @Header("ticket") String ticket, @Body UnmannedLoginReqBean data);
/**
* 登出接口
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@POST("/och-taxi-cabin/api/flow/v1/endOperation")
Observable<BaseData> logout4Taxi(@Header("appId") String appId, @Header("ticket") String ticket,
@Body UnmannedLogoutReqBean data);
/**
* 接单状态和登录状态查询 出租车司机端、小巴车司机端、小巴车乘客端
*
* @param sn
* @return
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@GET("/och-taxi-cabin/api/business/v1/loginStatus")
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header("appId") String appId
, @Header("ticket") String ticket, @Query("sn") String sn);
}

View File

@@ -1,129 +0,0 @@
package com.mogo.och.taxi.network
import android.content.Context
import android.util.Log
import com.mogo.och.common.module.biz.constant.OchCommonConst.Companion.getBaseUrl
import com.mogo.cloud.passport.MoGoAiCloudClientConfig
import com.mogo.och.common.module.biz.bean.TaxiLoginSmsReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginReqBean
import com.mogo.och.common.module.biz.bean.TaxiLoginRespBean
import com.mogo.och.common.module.biz.bean.TaxiLogoutReqBean
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.cloud.passport.MoGoAiCloudClient
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.network.MoGoRetrofitFactory
import com.mogo.eagle.core.network.utils.GsonUtil
import com.mogo.commons.storage.SharedPrefsMgr
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.bean.GcjLatLon
import com.mogo.och.taxi.bean.UnmannedLoginReqBean
import com.mogo.och.taxi.bean.UnmannedLogoutReqBean
/**
* Created by pangfan on 2021/8/19
*/
object TaxiDriverLoginServiceManager {
private const val TAG = "OchCommonServiceManager"
private val mOCHTaxiServiceApi: TaxiDriverLoginServiceApi =
MoGoRetrofitFactory.getInstance(getBaseUrl()).create(
TaxiDriverLoginServiceApi::class.java
)
/**
* 获取手机验证码
* @param context
* @param callback
*/
@JvmStatic
fun getPhoneCode(
context: Context, phone: String?,
callback: OchCommonServiceCallback<BaseData>?
) {
mOCHTaxiServiceApi.getPhoneCode(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
TaxiLoginSmsReqBean(phone)
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "getPhoneCode"))
}
/**
* 通过验证码登录
* @param context
* @param callback
*/
@JvmStatic
fun gotoLoginBycode(
context: Context, phone: String?, code: String?,
location4Login: TaxiLoginReqBean.Location4Login?,
callback: OchCommonServiceCallback<TaxiLoginRespBean>?
) {
//新saas 接口变换, 参数变换, 重新组装
val unmannedLocation4Login = location4Login?.let {
GcjLatLon(
it.lat,it.lon
)
}
Log.d("taxiUnmanned-request = " , GsonUtil.jsonFromObject(mOCHTaxiServiceApi))
val sn = SharedPrefsMgr.getInstance().sn
mOCHTaxiServiceApi.gotoLoginBycode4Taxi(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
UnmannedLoginReqBean(phone, code, sn, unmannedLocation4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "gotoLoginBycode"))
}
/**
* 登出
*/
@JvmStatic
fun logout(
context: Context,
location4Login: TaxiLogoutReqBean.Location4Login?,
callback: OchCommonServiceCallback<BaseData>?
) {
//新saas 接口变换, 参数变换, 重新组装
val unmannedLocation4Login = location4Login?.let {
GcjLatLon(
it.lat,it.lon
)
}
Log.d("taxiUnmanned-request = " , GsonUtil.jsonFromObject(mOCHTaxiServiceApi))
mOCHTaxiServiceApi.logout4Taxi(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
UnmannedLogoutReqBean(SharedPrefsMgr.getInstance().sn, unmannedLocation4Login)
).transformTry().subscribe(OchCommonSubscribeImpl(context, callback, "logout"))
}
/**
* 接单状态和登录状态查询
*
* @param context
* @param callback
*/
@JvmStatic
fun queryDriverServiceStatus(
context: Context,
callback: OchCommonServiceCallback<DriverStatusQueryRespBean>?
) {
if (SharedPrefsMgr.getInstance().token.isEmpty()) {
callback?.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等")
MoGoAiCloudClient.getInstance().refreshToken()
return
}
mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(
MoGoAiCloudClientConfig.getInstance().serviceAppId,
SharedPrefsMgr.getInstance().token,
SharedPrefsMgr.getInstance().sn
).transformTry()
.subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceStatus"))
}
}

View File

@@ -6,7 +6,6 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.FragmentTransaction
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.commons.module.status.MogoStatusManager
import com.mogo.commons.module.status.StatusDescriptor
import com.mogo.eagle.core.data.temp.EventLogout
@@ -15,13 +14,10 @@ import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger.e
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.biz.constant.OchCommonConst
import com.mogo.och.common.module.biz.provider.LoginService
import com.mogo.och.common.module.utils.FlowBus
import com.mogo.och.taxi.R
import com.mogo.och.taxi.constant.TaxiDriverEventConst
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.network.TaxiDriverLoginImpl
import com.mogo.och.taxi.ui.operational.TaxiOperationalDialogFragment
import com.mogo.och.taxi.ui.routing.TaxiRoutingFragment
import com.mogo.och.taxi.ui.task.TaxiTaskModel
@@ -49,7 +45,6 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
private var taskTabFragment: WeakReference<TaxiTaskTabFragment>? = null
private var personalDialogFragment: WeakReference<TaxiOperationalDialogFragment>? = null
private var routingVerifyFragment: WeakReference<TaxiRoutingFragment>? = null
private var loginService: LoginService? = null
@Subscribe(threadMode = ThreadMode.MAIN)
fun changeOverview(eventLogout: EventLogout) {
@@ -83,9 +78,6 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
loginService =
ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService
loginService?.registerFragment(this, presenter, TaxiDriverLoginImpl())
}
override fun onCreateView(
@@ -225,8 +217,6 @@ class TaxiFragment : BaseTaxiTabFragment<TaxiFragment, TaxiPresenter>(),
override fun onDestroyView() {
super.onDestroyView()
loginService!!.unRegisterFragment()
loginService = null
EventBus.getDefault().unregister(this)
}

View File

@@ -12,14 +12,13 @@ import com.mogo.eagle.core.data.map.MogoLocation;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean;
import com.mogo.och.common.module.biz.callback.ILoginCallback;
import com.mogo.och.common.module.biz.login.ILoginCallback;
import com.mogo.och.common.module.biz.login.LoginStatusManager;
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager;
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
import com.mogo.och.taxi.constant.TaxiCarServingStatusManager;
import com.mogo.och.taxi.constant.TaxiDriverRoleEnum;
import com.mogo.och.common.module.biz.login.TaxiDriverRoleEnum;
import com.mogo.och.taxi.constant.TaxiUnmannedConst;
import com.mogo.och.taxi.ui.routing.TaxiRoutingModel;
import com.mogo.och.taxi.ui.task.TaxiTaskModel;
@@ -200,20 +199,18 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
@Override
public void loginSuccess(DriverStatusQueryRespBean data) {
//设置 接单状态
TaxiCarServingStatusManager.setCarServingStatus(data.data.servingStatus);
public void loginSuccess() {
// 设置当前用户角色
String role = "";
if (TaxiDriverRoleEnum.DEMO.getCode() == data.data.purpose) {
if (TaxiDriverRoleEnum.DEMO == LoginStatusManager.getPurpose()) {
role = TaxiUnmannedConst.DEMO_USER;
} else if (TaxiDriverRoleEnum.TEST.getCode() == data.data.purpose) {
} else if (TaxiDriverRoleEnum.TEST == LoginStatusManager.getPurpose()) {
role = TaxiUnmannedConst.TEST_USER;
}
String finalRole = role;
runOnUIThread(() -> {
mView.updateOperationStatus(TaxiCarServingStatusManager.isCarServingStatus(), finalRole);
mView.updateOperationStatus(LoginStatusManager.isLogin(), finalRole);
});
if (!TaxiTaskModel.INSTANCE.checkCurrentTaskCondition()) {
@@ -223,10 +220,6 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
TaxiTaskModel.INSTANCE.updatePrepareTaskDelayUI();
}
@Override
public void loginFail(boolean isLogin) {
}
public void stopAutoStartAutopilot() {
TaxiTaskModel.INSTANCE.stopAutoStartAutopilot();
}

View File

@@ -40,10 +40,10 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.utilcode.util.UiThreadHandler
import com.mogo.och.common.module.biz.common.socketmessage.OCHSocketMessageManager
import com.mogo.och.common.module.biz.common.socketmessage.data.OCHOperationalMessage
import com.mogo.och.common.module.biz.constant.LoginStatusManager
import com.mogo.och.common.module.biz.login.LoginStatusManager
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.provider.LoginService
import com.mogo.och.common.module.biz.login.LoginService
import com.mogo.och.common.module.callback.OchAdasStartFailureCallback
import com.mogo.och.common.module.manager.AbnormalFactorsLoopManager
import com.mogo.och.common.module.manager.autopilotmanager.OCHAdasAbilityManager
@@ -68,7 +68,6 @@ import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback
import com.mogo.och.taxi.callback.ITaxiTaskWithOrderCallback
import com.mogo.och.taxi.constant.TaskStatusEnum
import com.mogo.och.taxi.constant.TaskTypeEnum
import com.mogo.och.taxi.constant.TaxiCarServingStatusManager
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum
import com.mogo.och.taxi.constant.TaxiUnmannedConst
import com.mogo.och.taxi.constant.TaxiUnmannedConst.Companion.BUSINESSTYPE
@@ -201,15 +200,12 @@ object TaxiTaskModel {
}
fun init() {
loginService =
ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation() as LoginService
initListeners()
RxJavaUtils.setErrorHandler(TAG)
}
fun release() {
releaseListeners()
loginService = null
}
private fun initListeners() {
@@ -513,7 +509,7 @@ object TaxiTaskModel {
d(TAG, "mNetWorkIntentListener: onIntentReceived=$intentStr")
if ((ConnectivityManager.CONNECTIVITY_ACTION == intentStr)) {
if (NetworkUtils.isConnected(mContext)) {
loginService?.queryLoginStatusByNet()
LoginStatusManager.queryLoginStatusByNet()
DebugView.printInfoMsg("[网络状态变化] isConnected=true")
} else {
DebugView.printErrorMsg("[网络状态变化] isConnected=false")
@@ -996,7 +992,7 @@ object TaxiTaskModel {
d(
TAG,
"prepareNextTask onSuccess:${GsonUtil.jsonFromObject(data)}, " +
"isCarServingStatus = ${TaxiCarServingStatusManager.isCarServingStatus()}"
"isCarServingStatus = ${LoginStatusManager.isLogin()}"
)
DebugView.printInfoMsg("[PrepareNextTask] 请求success")
isPrepareingNextTask = false
@@ -1006,7 +1002,7 @@ object TaxiTaskModel {
DebugView.printErrorMsg("[PrepareNextTask] 请求fail, code=$code ,msg=$msg")
d(TAG, "prepareNextTask onFail: code=$code ,msg=$msg")
isPrepareingNextTask = false
if (LoginStatusManager.isLogin() && TaxiCarServingStatusManager.isCarServingStatus()
if (LoginStatusManager.isLogin()
&& QueryCurrentTaskRespBean.isTaskCompleteTaskType(mCurrentTaskWithOrder)) {
mCurrentTaskWithOrder?.endSite?.siteId?.also {
startPrepareTaskDelay(TaxiUnmannedConst.START_PREPARE_TASK_RETRY_INTERVAL,it)
@@ -1020,7 +1016,7 @@ object TaxiTaskModel {
"net = ${NetworkUtils.isConnected(mContext)}")
d(TAG, "prepareNextTask onError, , net = ${NetworkUtils.isConnected(mContext)}")
isPrepareingNextTask = false
if (LoginStatusManager.isLogin() && TaxiCarServingStatusManager.isCarServingStatus()
if (LoginStatusManager.isLogin()
&& QueryCurrentTaskRespBean.isTaskCompleteTaskType(mCurrentTaskWithOrder)) {
mCurrentTaskWithOrder?.endSite?.siteId?.also {
startPrepareTaskDelay(TaxiUnmannedConst.START_PREPARE_TASK_RETRY_INTERVAL,it)
@@ -1106,17 +1102,17 @@ object TaxiTaskModel {
fun updateCarServingStatus() {
if (!LoginStatusManager.isLogin()) {
loginService?.queryLoginStatusByNet()
LoginStatusManager.queryLoginStatusByNet()
return
}
if (TaxiCarServingStatusManager.isCarServingStatus()) {//接单状态下,去结束
if (LoginStatusManager.isLogin()) {//接单状态下,去结束
DebugView.printInfoMsg("[暂停接单] 准备发送请求")
TaxiTaskWithOrderServiceManager.endService(
mContext,
object : OchCommonServiceCallback<BaseData> {
override fun onSuccess(data: BaseData?) {
DebugView.printInfoMsg("[暂停接单] 请求success")
loginService?.queryLoginStatusByNet()
LoginStatusManager.queryLoginStatusByNet()
//需要将虚拟任务停掉, 虚拟任务会再开始接单后获取新的
mDriveToNearestStationTask = null
mTaxiCarServiceCallback?.onCarEndServiceSuccess(
@@ -1146,7 +1142,7 @@ object TaxiTaskModel {
if (data == null) return
DebugView.printInfoMsg("[开始接单] 请求success")
d(TAG, "data.data=" + GsonUtil.jsonFromObject(data.data))
loginService?.queryLoginStatusByNet()
LoginStatusManager.queryLoginStatusByNet()
mCurrentTaskWithOrder?.apply {
if (endSite != null) {
when {
@@ -1450,7 +1446,7 @@ object TaxiTaskModel {
// 登出
fun logout() {
loginService?.loginOut(
LoginStatusManager.loginOut(
getChassisLocationGCJ02().latitude,
getChassisLocationGCJ02().longitude
)
@@ -1539,7 +1535,7 @@ object TaxiTaskModel {
}
fun updatePrepareTaskDelayUI() {
if (!TaxiCarServingStatusManager.isCarServingStatus()){
if (!LoginStatusManager.isLogin()){
mTaxiTaskWithOrderCallbackMap.forEach {
val listener = it.value
listener.onStartPrepareTaskUI(0, false)

View File

@@ -11,6 +11,7 @@ import androidx.fragment.app.FragmentManager;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.mogo.eagle.core.function.api.base.IMoGoFunctionProvider;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.och.common.module.biz.constant.OchCommonConst;
import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst;
import com.mogo.och.taxi.passenger.ui.TaxiPassengerBaseFragment;
@@ -23,7 +24,7 @@ import org.jetbrains.annotations.Nullable;
* <p>
* 网约车-出租车-乘客端
*/
@Route(path = TaxiPassengerConst.PATH)
@Route(path = OchCommonConst.TAXI_UNMANNED_PASSENGER)
public class MogoOCHTaxiPassenger implements IMoGoFunctionProvider {
private static final String TAG = "MogoOCHTaxiPassenger";

Some files were not shown because too many files have changed in this diff Show More