Merge remote-tracking branch 'origin/dev_robotaxi-d-app-module_2100_220816_2.10.0' into dev_robotaxi-d-app-module_2100_220816_2.10.0

This commit is contained in:
wangmingjun
2022-08-24 16:57:42 +08:00
18 changed files with 464 additions and 254 deletions

View File

@@ -11,7 +11,8 @@ public class DriverStatusQueryRespBean extends BaseData {
public Result data;
public static class Result {
public int serviceStatus; //0收车1出车
public int servingStatus; //0收车1出车
public int driverStatus; //0收车1出车
public String orderNo;
public int purpose; // 1 运营, 2 测试, 3演示
}

View File

@@ -7,12 +7,24 @@ package com.mogo.och.taxi.bean;
public class TaxiLoginReqBean {
public String phone;
public String code;
public String captcha;
public String sn;
public Location4Login loc;
public TaxiLoginReqBean(String phone, String code, String sn) {
public TaxiLoginReqBean(String phone, String code, String sn,Location4Login location4Login) {
this.phone = phone;
this.code = code;
this.captcha = code;
this.sn = sn;
this.loc = location4Login;
}
public static class Location4Login{
double lat;
double lon;
public Location4Login(double lat, double lon) {
this.lat = lat;
this.lon = lon;
}
}
}

View File

@@ -0,0 +1,14 @@
package com.mogo.och.taxi.bean;
/**
* Created by pangfan on 2021/8/19
* 司机端准备好或者乘客已验证上车请求参数
*/
public class TaxiLoginSmsReqBean {
public String phone;
public TaxiLoginSmsReqBean(String phone) {
this.phone = phone;
}
}

View File

@@ -0,0 +1,25 @@
package com.mogo.och.taxi.bean;
/**
* Created by pangfan on 2021/8/19
* 司机端准备好或者乘客已验证上车请求参数
*/
public class TaxiLogoutReqBean {
public String sn;
public Location4Login loc;
public TaxiLogoutReqBean(String sn, Location4Login location4Login) {
this.sn = sn;
this.loc = location4Login;
}
public static class Location4Login{
double lat;
double lon;
public Location4Login(double lat, double lon) {
this.lat = lat;
this.lon = lon;
}
}
}

View File

@@ -14,4 +14,5 @@ import java.util.List;
*/
public interface ITaxiLoginCallback {
void getPhoneCodeSuccess();
void loginSuccess();
}

View File

@@ -0,0 +1,27 @@
package com.mogo.och.taxi.constant
/**
* Created on 2022/08/19
*
*
* 0 初始状态,
* 10 已登录,
* 20 已登出,
*/
enum class TaxiLoginStatusEnum(val code: Int) {
None( 0 ),
Login( 10),
Logout( 20),;
companion object {
@JvmStatic
fun valueOf(code: Int): TaxiLoginStatusEnum? {
for (value in values()) {
if (value.code == code) {
return value
}
}
return None
}
}
}

View File

@@ -0,0 +1,27 @@
package com.mogo.och.taxi.constant
/**
* Created on 2022/08/19
*
*
* 0 初始状态,
* 10 接单状态 可接单,
* 20 暂停接到哪 不可接单,
*/
enum class TaxiOpenOrderStatusEnum(val code: Int) {
None( 0 ),
Ordering( 10),
UnOrdering( 20),;
companion object {
@JvmStatic
fun valueOf(code: Int): TaxiOpenOrderStatusEnum? {
for (value in values()) {
if (value.code == code) {
return value
}
}
return None
}
}
}

View File

@@ -1,202 +0,0 @@
package com.mogo.och.taxi.model;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_ALIAS_CODE_OCH_TAXI_START_AUTOPILOT;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_ADAS;
import static com.mogo.eagle.core.data.deva.chain.ChainConstant.CHAIN_LINK_LOG_WEB_SOCKET_AUTOPILOT;
import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI;
import android.content.Context;
import android.content.Intent;
import android.location.Location;
import android.net.ConnectivityManager;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.core.content.ContextCompat;
import com.amap.api.maps.model.LatLng;
import com.elegant.network.utils.GsonUtil;
import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
import com.mogo.aicloud.services.socket.MogoAiCloudSocketManager;
import com.mogo.cloud.commons.utils.CoordinateUtils;
import com.mogo.commons.debug.DebugConfig;
import com.mogo.eagle.core.data.BaseData;
import com.mogo.eagle.core.data.autopilot.AutopilotControlParameters;
import com.mogo.eagle.core.data.autopilot.AutopilotStatusInfo;
import com.mogo.eagle.core.data.config.FunctionBuildConfig;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotPlanningListener;
import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager;
import com.mogo.eagle.core.function.call.autopilot.CallerAutopilotPlanningListenerManager;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.logger.Logger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
import com.mogo.och.common.module.utils.PinYinUtil;
import com.mogo.och.taxi.R;
import com.mogo.och.taxi.bean.DriverServiceDataRespBean;
import com.mogo.och.taxi.bean.DriverStatusQueryRespBean;
import com.mogo.och.taxi.bean.OrderGrabRespBean;
import com.mogo.och.taxi.bean.OrderGrabStatusQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRespBean;
import com.mogo.och.taxi.bean.OrderQueryRouteInfoRespBean;
import com.mogo.och.taxi.bean.OrderRouteUpdateReqBean;
import com.mogo.och.taxi.bean.OrdersInServiceQueryRespBean;
import com.mogo.och.taxi.bean.OrdersListQueryRespBean;
import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean;
import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLoginRespBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.taxi.callback.ITaxiCarStatusCallback;
import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.taxi.callback.ITaxiLoginCallback;
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.TaxiOrderTypeEnum;
import com.mogo.och.taxi.network.TaxiServiceCallback;
import com.mogo.och.taxi.network.TaxiServiceManager;
import com.mogo.och.taxi.utils.OrderUtil;
import com.mogo.och.taxi.utils.TaxiAnalyticsManager;
import com.mogo.och.taxi.utils.TaxiTrajectoryManager;
import com.mogo.service.intent.IMogoIntentListener;
import com.mogo.service.statusmanager.IMogoStatusChangedListener;
import com.mogo.service.statusmanager.StatusDescriptor;
import com.zhjt.service.chain.ChainLog;
import com.zhjt.service.chain.TracingConstants;
import org.jetbrains.annotations.NotNull;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import io.reactivex.exceptions.UndeliverableException;
import io.reactivex.functions.Consumer;
import io.reactivex.plugins.RxJavaPlugins;
import mogo.telematics.pad.MessagePad;
import mogo_msg.MogoReportMsg;
import system_master.SystemStatusInfo;
/**
* Created by pangfan on 2021/8/19
* <p>
* 网约车 - 出租车业务逻辑处理
*/
public class TaxiLoginModel {
private static final String TAG = TaxiLoginModel.class.getSimpleName();
private static final class SingletonHolder {
private static final TaxiLoginModel INSTANCE = new TaxiLoginModel();
}
public static TaxiLoginModel getInstance() {
return SingletonHolder.INSTANCE;
}
private Context mContext;
ITaxiLoginCallback iTaxiLoginCallback;
private TaxiLoginModel() {
}
public void init(Context context) {
mContext = context.getApplicationContext();
}
public ITaxiLoginCallback getiTaxiLoginCallback() {
return iTaxiLoginCallback;
}
public void setiTaxiLoginCallback(ITaxiLoginCallback iTaxiLoginCallback) {
this.iTaxiLoginCallback = iTaxiLoginCallback;
}
public void release() {
this.iTaxiLoginCallback = null;
}
/**
* 获取手机验证码
*/
public void getPhoneCode(String phone) {
TaxiServiceManager.getInstance().getPhoneCode(mContext,phone,
new TaxiServiceCallback<BaseData>() {
@Override
public void onSuccess(BaseData data) {
if (null != data && 0 == data.code) {
// 获取验证码成功
ToastUtils.showShort(mContext.getString(R.string.module_och_taxi_login_get_code_success));
if(iTaxiLoginCallback!=null){
iTaxiLoginCallback.getPhoneCodeSuccess();
}
}else {
if(data!=null) {
ToastUtils.showShort(data.code);
}
}
}
@Override
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
}
}
@Override
public void onFail(int code, String msg) {
ToastUtils.showShort(code + "," + msg);
}
});
}
public void gotoLogin(@NotNull String phone, @NotNull String code) {
TaxiServiceManager.getInstance().gotoLoginBycode(mContext,phone,code,
new TaxiServiceCallback<TaxiLoginRespBean>() {
@Override
public void onSuccess(TaxiLoginRespBean data) {
if (null != data && 0 == data.code) {
// 获取验证码成功
ToastUtils.showShort(mContext.getString(R.string.module_och_taxi_login_get_code_success));
if(iTaxiLoginCallback!=null){
iTaxiLoginCallback.getPhoneCodeSuccess();
}
}else {
if(data!=null) {
ToastUtils.showShort(data.code);
}
}
}
@Override
public void onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {
ToastUtils.showShort(mContext.getString(R.string.request_error_tip));
}
}
@Override
public void onFail(int code, String msg) {
ToastUtils.showShort(code + "," + msg);
}
});
}
}

View File

@@ -0,0 +1,128 @@
package com.mogo.och.taxi.model
import android.annotation.SuppressLint
import android.content.Context
import com.mogo.eagle.core.data.BaseData
import com.mogo.eagle.core.utilcode.util.NetworkUtils
import com.mogo.och.taxi.model.TaxiLoginModel
import com.mogo.och.taxi.callback.ITaxiLoginCallback
import com.mogo.module.common.MogoApisHandler
import com.mogo.map.navi.IMogoCarLocationChangedListener2
import com.mogo.och.taxi.network.TaxiServiceManager
import com.mogo.och.taxi.network.TaxiServiceCallback
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.och.taxi.R
import com.mogo.och.taxi.bean.TaxiLoginReqBean
import com.mogo.och.taxi.bean.TaxiLoginRespBean
import com.mogo.och.taxi.constant.TaxiLoginStatusEnum
import com.mogo.och.taxi.utils.StatusManager
/**
* Created by pangfan on 2021/8/19
*
*
* 网约车 - 出租车业务逻辑处理
*/
@SuppressLint("StaticFieldLeak")
object TaxiLoginModel{
private val TAG = "TaxiLoginModel"
private var mContext: Context? = null
var iTaxiLoginCallback: ITaxiLoginCallback? = null
private var mLongitude = 0.0
private var mLatitude = 0.0
fun init(context: Context) {
mContext = context.applicationContext
// 达到起始站围栏监听
MogoApisHandler.getInstance()
.apis
.registerCenterApi
.registerCarLocationChangedListener(TAG, mCarLocationChangedListener2)
}
// 自车定位
private val mCarLocationChangedListener2 = IMogoCarLocationChangedListener2 { location ->
mLongitude = location.longitude
mLatitude = location.latitude
}
fun getiTaxiLoginCallback(): ITaxiLoginCallback? {
return iTaxiLoginCallback
}
fun setiTaxiLoginCallback(iTaxiLoginCallback: ITaxiLoginCallback?) {
this.iTaxiLoginCallback = iTaxiLoginCallback
}
fun release() {
mContext = null
iTaxiLoginCallback = null
// 注销到达起始站围栏监听
MogoApisHandler.getInstance().apis.registerCenterApi
.unregisterCarLocationChangedListener(TAG, mCarLocationChangedListener2)
}
/**
* 获取手机验证码
*/
fun getPhoneCode(phone: String?) {
TaxiServiceManager.getInstance().getPhoneCode(mContext, phone,
object : TaxiServiceCallback<BaseData?> {
override fun onSuccess(data: BaseData?) {
if (null != data && 0 == data.code) {
// 获取验证码成功
ToastUtils.showShort(mContext!!.getString(R.string.module_och_taxi_login_get_code_success))
iTaxiLoginCallback?.getPhoneCodeSuccess()
} else {
if (data != null) {
ToastUtils.showShort(data.code)
}
}
}
override fun onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext!!.getString(R.string.network_error_tip))
} else {
ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip))
}
}
override fun onFail(code: Int, msg: String) {
ToastUtils.showShort("$code,$msg")
}
})
}
fun gotoLogin(phone: String, code: String) {
val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude)
TaxiServiceManager.getInstance().gotoLoginBycode(mContext, phone, code, location4Login,
object : TaxiServiceCallback<TaxiLoginRespBean?> {
override fun onSuccess(data: TaxiLoginRespBean?) {
if (null != data && 0 == data.code) {
// 获取验证码成功
ToastUtils.showShort(mContext!!.getString(R.string.module_och_taxi_login_login_success))
StatusManager.setLoginStatus(TaxiLoginStatusEnum.Login)
iTaxiLoginCallback?.loginSuccess()
} else {
if (data != null) {
ToastUtils.showShort(data.code)
}
}
}
override fun onError() {
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext!!.getString(R.string.network_error_tip))
} else {
ToastUtils.showShort(mContext!!.getString(R.string.request_error_tip))
}
}
override fun onFail(code: Int, msg: String) {
ToastUtils.showShort("$code,$msg")
}
})
}
}

View File

@@ -49,6 +49,7 @@ import com.mogo.och.taxi.bean.OrdersListQueryRespBean;
import com.mogo.och.taxi.bean.OrdersNewBookingQueryRespBean;
import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLogoutReqBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.callback.ITaxiADASStatusCallback;
import com.mogo.och.taxi.callback.ITaxiCarStatusCallback;
@@ -56,10 +57,12 @@ import com.mogo.och.taxi.callback.ITaxiControllerStatusCallback;
import com.mogo.och.taxi.callback.ITaxiOrderStatusCallback;
import com.mogo.och.taxi.constant.TaxiDriverRoleEnum;
import com.mogo.och.taxi.constant.TaxiConst;
import com.mogo.och.taxi.constant.TaxiLoginStatusEnum;
import com.mogo.och.taxi.constant.TaxiOrderStatusEnum;
import com.mogo.och.taxi.constant.TaxiOrderTypeEnum;
import com.mogo.och.taxi.network.TaxiServiceCallback;
import com.mogo.och.taxi.network.TaxiServiceManager;
import com.mogo.och.taxi.utils.StatusManager;
import com.mogo.och.taxi.utils.TaxiAnalyticsManager;
import com.mogo.och.taxi.utils.OrderUtil;
import com.mogo.aicloud.services.socket.IMogoLifecycleListener;
@@ -103,7 +106,6 @@ public class TaxiModel {
private Context mContext;
private volatile int mPrevAPStatus = -1; //前一次自动驾驶状态值
private volatile int mOCHCarStatus = -1; //出车/收车状态1 出车0 收车
private volatile String mPrevOrderNo = ""; //前一次的新到单id当次和前一次orderId相同时本次不再弹出
private volatile OrderQueryRespBean.Result mNewBookingOrder; //新到待抢预约单
private volatile OrderQueryRespBean.Result mCurrentOCHOrder; //当前订单
@@ -255,17 +257,26 @@ public class TaxiModel {
}
}
//查询出车/收车状态
/**
* 查询出车/收车状态
* 1、初始化查下状态
* 2、点击更新接单状态 如果是初始化状态就查下状态
* 3、点击更新接单状态后 查询状态
* 4、网络状态波动时 查询状态
* 5、登出后更新状态
*/
public void queryCarStatus() {
TaxiServiceManager.getInstance().queryDriverServiceStatus(mContext,
new TaxiServiceCallback<DriverStatusQueryRespBean>() {
@Override
public void onSuccess(DriverStatusQueryRespBean data) {
if (null != data && 0 == data.code) {
mOCHCarStatus = data.data.serviceStatus == 1 ? 1 : 0;
StatusManager.setLoginStatus(data.data.driverStatus);
StatusManager.setOpenOrderStatus(data.data.servingStatus);
//更新view
CallerLogger.INSTANCE.d(M_TAXI + TAG, "changeCarStatus:" + mOCHCarStatus);
startOrStopOrderLoop(mOCHCarStatus == 1);
CallerLogger.INSTANCE.d(M_TAXI + TAG, "changeCarStatus:" + StatusManager.getLoginStatus());
startOrStopOrderLoop(StatusManager.isLogin());
mCarStatusCallback.onCarLoginStatusChange(StatusManager.isLogin());
String role = "";
if (TaxiDriverRoleEnum.DEMO.getCode() == data.data.purpose) {
role = TaxiConst.DEMO_USER;
@@ -273,7 +284,7 @@ public class TaxiModel {
role = TaxiConst.TEST_USER;
}
if (mCarStatusCallback != null) {
mCarStatusCallback.onCarStatusChanged(mOCHCarStatus == 1, role);
mCarStatusCallback.onCarStatusChanged(StatusManager.isOpeningOrderStatus(), role);
}
}
@@ -299,17 +310,16 @@ public class TaxiModel {
//更新出车收车状态
public void updateCarStatus() {
if (mOCHCarStatus == -1) {
if (StatusManager.getLoginStatus().equals(TaxiLoginStatusEnum.None)) {
queryCarStatus();
return;
}
final int status = mOCHCarStatus == 1 ? 0 : 1;
TaxiServiceManager.getInstance().updateDriverServiceStatus(mContext, status,
TaxiServiceManager.getInstance().changeOrderServing(mContext,StatusManager.isOpeningOrderStatus(),
new TaxiServiceCallback<BaseData>() {
@Override
public void onSuccess(BaseData data) {
if (null != data && 0 == data.code) {
mOCHCarStatus = status;
//StatusManager.changeOrderStatus();
queryCarStatus();
}
}
@@ -328,6 +338,7 @@ public class TaxiModel {
ToastUtils.showShort(code + "," + msg);
}
});
}
/**
@@ -972,7 +983,7 @@ public class TaxiModel {
CallerLogger.INSTANCE.d(M_TAXI + TAG, "onIntentReceived = %s", intentStr);
if (ConnectivityManager.CONNECTIVITY_ACTION.equals(intentStr)) {
if (NetworkUtils.isConnected(mContext)) {
startOrStopOrderLoop(mOCHCarStatus == 1);
startOrStopOrderLoop(StatusManager.isLogin());
queryCarStatus();
}
}
@@ -1543,19 +1554,22 @@ public class TaxiModel {
}
}
// 取消待服务中订单
// 登出
public void logout() {
TaxiServiceManager.getInstance().logout(mContext,
TaxiLogoutReqBean.Location4Login location4Login = new TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude);
TaxiServiceManager.getInstance().logout(mContext,location4Login,
new TaxiServiceCallback<BaseData>() {
@Override
public void onSuccess(BaseData data) {
if (null != data && 0 == data.code) {
mCarStatusCallback.onCarLoginStatusChange(false);
queryCarStatus();
}
}
@Override
public void onError() {
mCarStatusCallback.onCarLoginStatusChange(false);
if (!NetworkUtils.isConnected(mContext)) {
ToastUtils.showShort(mContext.getString(R.string.network_error_tip));
} else {

View File

@@ -22,6 +22,8 @@ import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLoginReqBean;
import com.mogo.och.taxi.bean.TaxiLoginRespBean;
import com.mogo.och.taxi.bean.TaxiLoginSmsReqBean;
import com.mogo.och.taxi.bean.TaxiLogoutReqBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean;
@@ -313,14 +315,14 @@ interface TaxiServiceApiNew {
/**
* 获取手机验证码
* @param sn
*
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" )
@GET( "/autopilot-car-hailing/car/v2/driver/taxi/serviceStatus/query" )
@POST( "/autopilot-car-hailing/driver/v2/driver/taxi/sendSms" )
Observable<DriverStatusQueryRespBean> getPhoneCode(@Header ("appId") String appId
,@Header("ticket") String ticket,@Query("sn") String sn,@Query("phone") String phone);
,@Header("ticket") String ticket,@Body TaxiLoginSmsReqBean data);
/**
* 通过验证码登录
* @param appId
@@ -329,15 +331,45 @@ interface TaxiServiceApiNew {
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/orderCompleted" )
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/startOperation" )
Observable<TaxiLoginRespBean> gotoLoginBycode(@Header ("appId") String appId
, @Header("ticket") String ticket, @Body TaxiLoginReqBean data);
/**
* 登出接口
*/
@Headers({"Content-type:application/json;charset=UTF-8"})
@GET("/autopilot-car-hailing/car/v2/driver/taxi/serviceStatus/query")
@POST("/autopilot-car-hailing/cab/flow/v1/driver/taxi/endOperation")
Observable<BaseData> logout(@Header ("appId") String appId,@Header("ticket") String ticket,
@Query("sn") String sn);
@Body TaxiLogoutReqBean data);
/**
* 暂停接单
* @param data
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @POST( "/autopilot-car-hailing/api/v1/driver/serviceStatus/update" )
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/stopOrderServing" )
Observable<BaseData> stopOrderServing(@Header ("appId") String appId,@Header("ticket") String ticket
,@Body DriverStatusUpdateReqBean data);
/**
* 暂停接单
* @param data
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @POST( "/autopilot-car-hailing/api/v1/driver/serviceStatus/update" )
@POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/resetOrderServing" )
Observable<BaseData> resetOrderServing(@Header ("appId") String appId,@Header("ticket") String ticket
,@Body DriverStatusUpdateReqBean data);
/**
* 收车/出车状态和登录状态查询
* @param sn
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" )
@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

@@ -32,12 +32,15 @@ import com.mogo.och.taxi.bean.QueryOrderRouteResp;
import com.mogo.och.taxi.bean.TaxiDataBaseRespBean;
import com.mogo.och.taxi.bean.TaxiLoginReqBean;
import com.mogo.och.taxi.bean.TaxiLoginRespBean;
import com.mogo.och.taxi.bean.TaxiLoginSmsReqBean;
import com.mogo.och.taxi.bean.TaxiLogoutReqBean;
import com.mogo.och.taxi.bean.TaxiOrPassengerReadyReqBean;
import com.mogo.och.taxi.bean.UpdateOrderDisAndTimeReqBean;
import com.mogo.och.taxi.constant.TaxiConst;
import java.util.List;
import io.reactivex.Observable;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
@@ -234,19 +237,43 @@ public class TaxiServiceManager {
.subscribe(getSubscribeImpl(context, callback, "updateOrderStatus"));
}
// /**
// * 收车/出车状态更新
// * @param context
// * @param status
// * @param callback
// */
// public void updateDriverServiceStatus(Context context, int status,
// TaxiServiceCallback<BaseData> callback) {
// mOCHTaxiServiceApi.updateDriverServiceStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
// ,MoGoAiCloudClientConfig.getInstance().getToken()
// ,new DriverStatusUpdateReqBean(
// MoGoAiCloudClientConfig.getInstance().getSn(), status))
// .subscribeOn(Schedulers.io())
// .observeOn(AndroidSchedulers.mainThread())
// .subscribe(getSubscribeImpl(context, callback, "updateDriverServiceStatus"));
// }
/**
* 收车/出车状态更新
* 暂停接单
* @param context
* @param status
* @param callback
*/
public void updateDriverServiceStatus(Context context, int status,
TaxiServiceCallback<BaseData> callback) {
mOCHTaxiServiceApi.updateDriverServiceStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
,MoGoAiCloudClientConfig.getInstance().getToken()
,new DriverStatusUpdateReqBean(
MoGoAiCloudClientConfig.getInstance().getSn(), status))
.subscribeOn(Schedulers.io())
public void changeOrderServing(Context context,boolean isOrdering,
TaxiServiceCallback<BaseData> callback) {
Observable<BaseData> baseDataObservable = null;
if(isOrdering) {// 正在接单去暂停
baseDataObservable = mOCHTaxiServiceApi.stopOrderServing(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, new DriverStatusUpdateReqBean(
MoGoAiCloudClientConfig.getInstance().getSn(), 0));
}else {// 没有接单去接单
baseDataObservable = mOCHTaxiServiceApi.resetOrderServing(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, new DriverStatusUpdateReqBean(
MoGoAiCloudClientConfig.getInstance().getSn(), 0));
}
baseDataObservable.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "updateDriverServiceStatus"));
}
@@ -258,7 +285,7 @@ public class TaxiServiceManager {
*/
public void queryDriverServiceStatus(Context context,
TaxiServiceCallback<DriverStatusQueryRespBean> callback) {
mOCHTaxiServiceApi.queryDriverServiceStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
,MoGoAiCloudClientConfig.getInstance().getToken()
,MoGoAiCloudClientConfig.getInstance().getSn())
.subscribeOn(Schedulers.io())
@@ -447,8 +474,7 @@ public class TaxiServiceManager {
TaxiServiceCallback<BaseData> callback) {
mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, MoGoAiCloudClientConfig.getInstance().getSn()
, phone)
, new TaxiLoginSmsReqBean(phone))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "getPhoneCode"));
@@ -458,12 +484,13 @@ public class TaxiServiceManager {
* @param context
* @param callback
*/
public void gotoLoginBycode(Context context,String phone,String code,
TaxiServiceCallback<TaxiLoginRespBean> callback) {
public void gotoLoginBycode(Context context, String phone, String code,
TaxiLoginReqBean.Location4Login location4Login,
TaxiServiceCallback<TaxiLoginRespBean> callback) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
mOCHTaxiServiceApi.gotoLoginBycode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, new TaxiLoginReqBean(phone,code,sn))
, new TaxiLoginReqBean(phone, code, sn, location4Login))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode"));
@@ -472,11 +499,11 @@ public class TaxiServiceManager {
/**
* 登出
*/
public void logout(Context context, TaxiServiceCallback<BaseData> callback) {
public void logout(Context context, TaxiLogoutReqBean.Location4Login location4Login, TaxiServiceCallback<BaseData> callback) {
mOCHTaxiServiceApi.logout(
MoGoAiCloudClientConfig.getInstance().getServiceAppId(),
MoGoAiCloudClientConfig.getInstance().getToken(),
MoGoAiCloudClientConfig.getInstance().getSn())
new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login))
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(getSubscribeImpl(context, callback, "logout"));

View File

@@ -29,12 +29,12 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
private var countDownDisposable: Disposable? = null
init {
TaxiLoginModel.getInstance().init(AbsMogoApplication.getApp())
TaxiLoginModel.init(AbsMogoApplication.getApp())
initListeners()
}
private fun initListeners() {
TaxiLoginModel.getInstance().setiTaxiLoginCallback(this)
TaxiLoginModel.setiTaxiLoginCallback(this)
}
fun getPhoneCode(phone:String){
@@ -43,7 +43,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
mView?.inputPhoneError()
return
}
TaxiLoginModel.getInstance().getPhoneCode(phone)
TaxiLoginModel.getPhoneCode(phone)
}
override fun onCreate(owner: LifecycleOwner) {
@@ -55,7 +55,7 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
override fun onDestroy(owner: LifecycleOwner) {
super.onDestroy(owner)
TaxiLoginModel.getInstance().release()
TaxiLoginModel.release()
countDownDisposable?.let {
if (!it.isDisposed) {
it.dispose()
@@ -86,6 +86,10 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
})
}
override fun loginSuccess() {
mView?.loginSuccess()
}
fun gotoLogin(phone: String, code: String) {
if (!RegexUtils.isMobileExact(phone)) {
ToastUtils.showShort(R.string.module_och_taxi_login_phone_error)
@@ -93,6 +97,6 @@ class TaxiLoginPresenter(view: TaxiLoginDialogFragment?) :
return
}
mView?.closeSoftInput()
TaxiLoginModel.getInstance().gotoLogin(phone,code)
TaxiLoginModel.gotoLogin(phone,code)
}
}

View File

@@ -204,7 +204,11 @@ public class TaxiPresenter extends Presenter<TaxiFragment> implements ITaxiADASS
@Override
public void onCarLoginStatusChange(boolean isLogin) {
mView.showLoginDialogFragment();
if(isLogin){
mView.hideLoginDialogFragment();
}else {
mView.showLoginDialogFragment();
}
}
@Override

View File

@@ -392,15 +392,32 @@ public class TaxiFragment extends BaseTaxiTabFragment<TaxiFragment, TaxiPresente
@Subscribe(threadMode = ThreadMode.MAIN)
public void changeOverview(EventLogout eventLogout){
CallerLogger.INSTANCE.d(M_TAXI + TAG,"changeOverview 开始登出成功");
CallerLogger.INSTANCE.d(M_TAXI + TAG,"changeOverview Event消息去登出");
mPresenter.logout();
}
public void showLoginDialogFragment(){
CallerLogger.INSTANCE.d(M_TAXI + TAG,"showLoginDialogFragment 登出成功");
CallerLogger.INSTANCE.d(M_TAXI + TAG,"showLoginDialogFragment 展示登录界面");
CallerHmiManager.INSTANCE.hideToolsView();
taxiLoginDialogFragment = new WeakReference<>(TaxiLoginDialogFragment.newInstance());
taxiLoginDialogFragment.get().show(getParentFragmentManager(),taxiLoginDialogFragment.get().getTag());
if(taxiLoginDialogFragment==null||taxiLoginDialogFragment.get()==null) {
taxiLoginDialogFragment = new WeakReference<>(TaxiLoginDialogFragment.newInstance());
}
TaxiLoginDialogFragment taxiLoginDialog = taxiLoginDialogFragment.get();
if(taxiLoginDialog!=null) {
if (taxiLoginDialog.getDialog() != null && taxiLoginDialog.getDialog().isShowing()) {
return;
}
if (taxiLoginDialog.isAdded()) {//解决方法就是添加这行代码如果已经添加了就移除掉然后再show就不会出现Fragment already added的错误了。
getParentFragmentManager().beginTransaction().remove(taxiLoginDialog).commit();
}
taxiLoginDialog.show(getParentFragmentManager(), taxiLoginDialog.getTag());
}
}
public void hideLoginDialogFragment(){
CallerLogger.INSTANCE.d(M_TAXI + TAG,"hideLoginDialogFragment 隐藏登录界面");
if(taxiLoginDialogFragment!=null&&taxiLoginDialogFragment.get()!=null){
taxiLoginDialogFragment.get().dismissAllowingStateLoss();
}
}
private void testRouteInfoUpload() {

View File

@@ -11,6 +11,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
import androidx.core.content.ContextCompat
import androidx.core.widget.addTextChangedListener
import com.mogo.commons.mvp.MvpDialogFragment
import com.mogo.eagle.core.utilcode.kotlin.onClick
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.BarUtils
@@ -88,7 +89,7 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
return false
}
})
acbtnLogin.setOnClickListener {
acbtnLogin.onClick {
val phone = aceLoginPhoneValue.text.toString()
val code = acetPhoneCodeValue.text.toString()
mPresenter?.gotoLogin(phone,code)
@@ -109,7 +110,7 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
clMain.scrollTo(0, 0)
}
}
actvLoginGetCode.setOnClickListener {
actvLoginGetCode.onClick {
mPresenter?.getPhoneCode(aceLoginPhoneValue.text.toString())
}
aceLoginPhoneValue.addTextChangedListener {
@@ -181,6 +182,10 @@ class TaxiLoginDialogFragment : MvpDialogFragment<TaxiLoginDialogFragment?, Taxi
return keyCode == KeyEvent.KEYCODE_BACK
}
fun loginSuccess() {
dismissAllowingStateLoss()
}
companion object {
private val TAG = TaxiLoginDialogFragment::class.java.simpleName

View File

@@ -0,0 +1,73 @@
package com.mogo.och.taxi.utils
import com.mogo.och.taxi.constant.TaxiLoginStatusEnum
import com.mogo.och.taxi.constant.TaxiOpenOrderStatusEnum
object StatusManager {
/**
* 登录状态
*/
private var loginStatus: TaxiLoginStatusEnum = TaxiLoginStatusEnum.None
/**
* 接单状态
*/
private var openOrderStatus: TaxiOpenOrderStatusEnum = TaxiOpenOrderStatusEnum.None
@JvmStatic
fun setLoginStatus(status: Int) {
when (status) {
0 -> {
this.loginStatus = TaxiLoginStatusEnum.Logout
}
1 -> {
this.loginStatus = TaxiLoginStatusEnum.Login
}
else -> {
this.loginStatus = TaxiLoginStatusEnum.None
}
}
}
@JvmStatic
fun setLoginStatus(loginStatus: TaxiLoginStatusEnum) {
this.loginStatus = loginStatus
}
@JvmStatic
fun getLoginStatus(): TaxiLoginStatusEnum {
return loginStatus
}
@JvmStatic
fun isLogin():Boolean {
if(loginStatus==TaxiLoginStatusEnum.Login){
return true
}
return false
}
// 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

@@ -35,6 +35,7 @@
<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_phone_hint_text">请输入手机号</string>
<string name="module_och_taxi_login_get_phone_title">请输入手机号</string>