接口加入和部分逻辑

This commit is contained in:
yangyakun
2022-08-22 18:51:09 +08:00
parent a15aac3a02
commit 6ba43066e4
16 changed files with 451 additions and 251 deletions

View File

@@ -12,6 +12,7 @@ public class DriverStatusQueryRespBean extends BaseData {
public static class Result {
public int serviceStatus; //0收车1出车
public int loginStatus; //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

@@ -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,129 @@
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
/**
* 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))
if (iTaxiLoginCallback != null) {
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_get_code_success))
if (iTaxiLoginCallback != null) {
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")
}
})
}
}

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.loginStatus);
StatusManager.setOpenOrderStatus(data.data.serviceStatus);
//更新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.isLogin(), 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();
}
}
@@ -1525,19 +1536,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"));
}
@@ -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()
@@ -93,6 +93,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,16 +392,24 @@ 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());
if(taxiLoginDialogFragment==null||taxiLoginDialogFragment.get()==null) {
taxiLoginDialogFragment = new WeakReference<>(TaxiLoginDialogFragment.newInstance());
}
taxiLoginDialogFragment.get().show(getParentFragmentManager(),taxiLoginDialogFragment.get().getTag());
}
public void hideLoginDialogFragment(){
CallerLogger.INSTANCE.d(M_TAXI + TAG,"hideLoginDialogFragment 隐藏登录界面");
if(taxiLoginDialogFragment!=null&&taxiLoginDialogFragment.get()!=null){
taxiLoginDialogFragment.get().dismissAllowingStateLoss();
}
}
private void testRouteInfoUpload() {
TPRouteDataTestUtils.converToRouteData();

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 {

View File

@@ -0,0 +1,81 @@
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 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
}
@JvmStatic
fun changeOrderStatus() {
when (openOrderStatus) {
TaxiOpenOrderStatusEnum.Ordering -> {
openOrderStatus = TaxiOpenOrderStatusEnum.UnOrdering
}
TaxiOpenOrderStatusEnum.UnOrdering -> {
openOrderStatus = TaxiOpenOrderStatusEnum.Ordering
}
else -> {}
}
}
//endregion
}