diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java index 734edccdd6..565372b4a9 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/adapter/BusPassengerLineStationsAdapter.java @@ -1,6 +1,7 @@ package com.mogo.och.bus.passenger.adapter; import android.content.Context; +import android.text.TextUtils; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; @@ -14,6 +15,7 @@ import androidx.recyclerview.widget.RecyclerView; import com.mogo.och.bus.passenger.R; import com.mogo.och.bus.passenger.bean.BusPassengerStation; import com.mogo.och.common.module.utils.BlinkAnimationUtil; +import com.mogo.och.common.module.wigets.MarqueeTextView; import java.util.List; @@ -58,9 +60,11 @@ public class BusPassengerLineStationsAdapter extends RecyclerView.Adapter() { + BusPassengerServiceManager.queryDriverOperationStatus(mContext + , new OchCommonServiceCallback() { @Override public void onSuccess(BusPassengerOperationStatusResponse data) { if (data == null || data.data == null) return; @@ -149,8 +149,8 @@ public class BusPassengerModel { } public void queryDriverSiteByCoordinate(){ - BusPassengerServiceManager.getInstance().queryDriverSiteByCoordinate(mContext - , new BusPassengerServiceCallback() { + BusPassengerServiceManager.queryDriverSiteByCoordinate(mContext + , new OchCommonServiceCallback() { @Override public void onSuccess(BusPassengerRoutesResponse data) { if ( data == null diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java deleted file mode 100644 index fb53106dcd..0000000000 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceCallback.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mogo.och.bus.passenger.network; - -/** - * Created on 2022/3/31 - */ -public interface BusPassengerServiceCallback { - - void onSuccess(T data); - - void onFail(int code, String msg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java deleted file mode 100644 index b155cb084c..0000000000 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.mogo.och.bus.passenger.network; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse; -import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest; -import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse; -import com.mogo.och.bus.passenger.constant.BusPassengerConst; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS_P; - -/** - * Created on 2022/3/31 - */ -public class BusPassengerServiceManager { - private static final String TAG = BusPassengerServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final BusPassengerServiceManager INSTANCE = new BusPassengerServiceManager(); - } - - public static BusPassengerServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private BusPassengerServiceApi mBusPassengerServiceApi; - - private BusPassengerServiceManager() { - if (mBusPassengerServiceApi == null){ - mBusPassengerServiceApi = MoGoRetrofitFactory.getInstance( - BusPassengerConst.getBaseUrl()).create(BusPassengerServiceApi.class); - } - } - - /** - * 获取Bus司机端的sn - * @return - */ - private String getDriverAppSn(){ - return CallerTelematicManager.INSTANCE.getServerToken(); -// return "X2020211111NG0XNFK"; - } - - /** - * 查询绑定行驶的小巴车路线 - * @param context - * @param callback - */ - public void queryDriverSiteByCoordinate(Context context - ,BusPassengerServiceCallback callback){ - mBusPassengerServiceApi.queryDriverSiteByCoordinate(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusPassengerQueryLineRequest(getDriverAppSn())) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryDriverSiteByCoordinate")); - } - - /** - * 查询司机端出车收车状态,以及车牌号 - * @param context - * @param callback - */ - public void queryDriverOperationStatus(Context context, BusPassengerServiceCallback callback){ - mBusPassengerServiceApi.queryDriverOperationStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,getDriverAppSn()) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryDriverOperationStatus")); - } - - - private SubscribeImpl getSubscribeImpl( - Context context, BusPassengerServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.e(M_BUS_P + TAG,apiName + - ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_BUS_P + TAG,apiName + - ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_BUS_P + TAG,String.format(apiName + - ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } -} diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt new file mode 100644 index 0000000000..0e70161643 --- /dev/null +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/network/BusPassengerServiceManager.kt @@ -0,0 +1,62 @@ +package com.mogo.och.bus.passenger.network + +import android.content.Context +import com.mogo.och.bus.passenger.constant.BusPassengerConst.Companion.getBaseUrl +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken +import com.mogo.och.bus.passenger.bean.BusPassengerRoutesResponse +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.och.bus.passenger.bean.BusPassengerQueryLineRequest +import com.mogo.och.bus.passenger.bean.BusPassengerOperationStatusResponse +import com.mogo.eagle.core.network.MoGoRetrofitFactory +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 on 2022/3/31 + */ +object BusPassengerServiceManager { + + private var mBusPassengerServiceApi = MoGoRetrofitFactory.getInstance(getBaseUrl()) + .create(BusPassengerServiceApi::class.java) + + /** + * 获取Bus司机端的sn + * @return + */ + private val driverAppSn: String + get() = getServerToken() + /** + * 查询绑定行驶的小巴车路线 + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverSiteByCoordinate( + context: Context, callback: OchCommonServiceCallback? + ) { + mBusPassengerServiceApi.queryDriverSiteByCoordinate( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusPassengerQueryLineRequest(driverAppSn)) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverSiteByCoordinate")) + } + + /** + * 查询司机端出车收车状态,以及车牌号 + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverOperationStatus( + context: Context, + callback: OchCommonServiceCallback?) { + mBusPassengerServiceApi.queryDriverOperationStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + driverAppSn) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverOperationStatus")) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java index dfc9495007..7c72fc813e 100644 --- a/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java +++ b/OCH/mogo-och-bus-passenger/src/main/java/com/mogo/och/bus/passenger/ui/BusPassengerRouteFragment.java @@ -26,6 +26,7 @@ import com.mogo.och.bus.passenger.presenter.BaseBusPassengerPresenter; import com.mogo.och.bus.passenger.ui.layoutmanager.CenterLayoutManager; import com.mogo.och.bus.passenger.utils.BPRouteDataTestUtils; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; +import com.mogo.och.common.module.wigets.MarqueeTextView; import java.util.ArrayList; import java.util.List; @@ -49,7 +50,7 @@ public class BusPassengerRouteFragment extends private TextView mSpeedTv; private ConstraintLayout mNoLineInfoView; private TextView mCarPlateNum; - private TextView mLineName; + private MarqueeTextView mLineName; private TextView mOperationTime; private ConstraintLayout mRouteInfoView; private RecyclerView mStationsListRv; diff --git a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml index 420ea4fda3..7a7792bdc1 100644 --- a/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml +++ b/OCH/mogo-och-bus-passenger/src/main/res/layout/bus_p_route_fragment.xml @@ -105,21 +105,25 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent" /> - - diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java index e39b6ade10..a7341343f2 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/fragment/BusFragment.java @@ -35,6 +35,7 @@ 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.wigets.MarqueeTextView; import com.mogo.och.common.module.wigets.OCHCommitDialog; import org.greenrobot.eventbus.Subscribe; @@ -53,7 +54,7 @@ public class BusFragment extends BaseBusTabFragment public static final String TAG = "BusFragment"; private TextView mSwitchLine; //切换路线 - private TextView mLineName; + private MarqueeTextView mLineName; private TextView mTaskTime; private Group groupStationsPanel; private ConstraintLayout noDataView; diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java index fe1b1ba2d2..4e8d22d921 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusLineModel.java @@ -11,8 +11,8 @@ import com.mogo.och.bus.bean.BusQueryLinesResponse; import com.mogo.och.bus.bean.BusRoutesResponse; import com.mogo.och.bus.callback.IBusLinesCallback; import com.mogo.och.bus.net.BusServiceManager; -import com.mogo.och.bus.net.IBusServiceCallback; import com.mogo.och.bus.ui.BusSwitchLineActivity; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; /** * @author: wangmingjun @@ -42,7 +42,7 @@ public class BusLineModel { mBusLinesCallback = callback; } public void queryBusLines(){ - BusServiceManager.getInstance().queryBusLines(mContext, new IBusServiceCallback() { + BusServiceManager.queryBusLines(mContext, new OchCommonServiceCallback() { @Override public void onSuccess(BusQueryLinesResponse data) { if (null == data && mBusLinesCallback != null) { @@ -56,7 +56,7 @@ public class BusLineModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { @@ -72,7 +72,7 @@ public class BusLineModel { * @param position 位置 */ public void queryBusLineTasksById(int lineId, int position,boolean autoRefresh){ - BusServiceManager.getInstance().queryBusTaskByLineId(mContext, String.valueOf(lineId),new IBusServiceCallback() { + BusServiceManager.queryBusTaskByLineId(mContext, String.valueOf(lineId),new OchCommonServiceCallback() { @Override public void onSuccess(BusQueryLineTaskResponse data) { if (null == data && mBusLinesCallback != null) { @@ -86,7 +86,7 @@ public class BusLineModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { @@ -97,7 +97,7 @@ public class BusLineModel { } public void commitSwitchLineId(int taskId,int lineId){ - BusServiceManager.getInstance().switchLine(mContext,taskId, new IBusServiceCallback() { + BusServiceManager.switchLine(mContext,taskId, new OchCommonServiceCallback() { @Override public void onSuccess(BusRoutesResponse o) { SharedPrefs.getInstance(mContext).putInt(BusSwitchLineActivity.LASTCOMMITLINEID,lineId); @@ -107,7 +107,7 @@ public class BusLineModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else { diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java index 68c4e097c5..54e17aa76b 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/model/BusOrderModel.java @@ -47,11 +47,11 @@ import com.mogo.och.bus.callback.IRefreshBusStationsCallback; import com.mogo.och.bus.callback.ISlidePannelHideCallback; import com.mogo.och.bus.constant.BusConst; import com.mogo.och.bus.net.BusServiceManager; -import com.mogo.och.bus.net.IBusServiceCallback; import com.mogo.och.bus.presenter.BusModelLoopManager; import com.mogo.och.bus.util.BusAnalyticsManager; import com.mogo.och.bus.util.BusTrajectoryManager; 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.manager.OCHAdasAbilityManager; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; @@ -256,15 +256,15 @@ public class BusOrderModel { BusStationBean currentStation = stationList.get( backgroundCurrentStationIndex); BusStationBean nextStation = stationList.get( backgroundCurrentStationIndex +1); - BusServiceManager.getInstance().updateOrderRoute(mContext, currentLineId, currentStation.getSiteId() - , nextStation.getSiteId(), points, new IBusServiceCallback() { + BusServiceManager.updateOrderRoute(mContext, currentLineId, currentStation.getSiteId() + , nextStation.getSiteId(), points, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (isGoingToNextStation){//重试 updateOrderRoute(); } @@ -362,7 +362,7 @@ public class BusOrderModel { */ public void queryBusRoutes() { CallerLogger.INSTANCE.d(M_BUS + TAG, "查询小巴路线"); - BusServiceManager.getInstance().queryBusRoutes(mContext, new IBusServiceCallback() { + BusServiceManager.queryBusRoutes(mContext, new OchCommonServiceCallback() { @Override public void onSuccess(BusRoutesResponse data) { if ( data == null @@ -383,7 +383,7 @@ public class BusOrderModel { updateBusStatus( data.getResult()); } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { // 重复请求小巴路线,直至成功 //改为任务,为空不再去一直取 // queryBusStationDelay(); @@ -449,8 +449,8 @@ public class BusOrderModel { */ public void abortTask() { CallerLogger.INSTANCE.d( M_BUS + TAG, "结束当前路线abortTask"); - BusServiceManager.getInstance().abortTask(mContext, currentTaskId - , new IBusServiceCallback() { + BusServiceManager.abortTask(mContext, currentTaskId + , new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG, "abortTask success: " + o); @@ -462,7 +462,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { ToastUtils.showShort(failMsg); } }); @@ -531,11 +531,11 @@ public class BusOrderModel { CallerLogger.INSTANCE.e( M_BUS + TAG, "数组越界" ); return; } - BusServiceManager.getInstance().queryStationWriteOffPassengers(mContext, + BusServiceManager.queryStationWriteOffPassengers(mContext, currentTaskId, stationList.get(backgroundCurrentStationIndex).getSiteId(), prePassengerWriteOffTime, - new IBusServiceCallback(){ + new OchCommonServiceCallback(){ @Override public void onSuccess(BusQueryWriteOffPassengersResponse o) { @@ -547,7 +547,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { } }); @@ -587,11 +587,11 @@ public class BusOrderModel { String arriveStation = stationList.get(arrivedStationIndex).getName(); CallerLogger.INSTANCE.d(M_BUS + TAG,"arriveSiteStation-currentStationIndex = "+ arrivedStationIndex); - BusServiceManager.getInstance().arriveSiteStation(mContext , + BusServiceManager.arriveSiteStation(mContext , stationList.get(arrivedStationIndex).getSeq(), stationList.get(arrivedStationIndex).getSiteId(), currentTaskId , - new IBusServiceCallback() { + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG,"行程日志-arriveSiteStation success"); @@ -606,7 +606,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { isArrivedStation = false; isGoingToNextStation = true; if (ToastUtilsOch.isCustomFastClick(5000)){ @@ -630,11 +630,11 @@ public class BusOrderModel { nextStationName = stationList.get(backgroundCurrentStationIndex + 1).getName(); } String finalNextStationName = nextStationName; - BusServiceManager.getInstance().leaveStation(mContext, + BusServiceManager.leaveStation(mContext, stationList.get(backgroundCurrentStationIndex).getSeq(), stationList.get(backgroundCurrentStationIndex).getSiteId(), currentTaskId, - new IBusServiceCallback() { + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { isArrivedStation = false; @@ -646,7 +646,7 @@ public class BusOrderModel { leaveTTSTips(finalNextStationName); } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { if (!NetworkUtils.isConnected(mContext)) { ToastUtils.showShort("网络异常,请稍后重试"); }else{ @@ -831,8 +831,8 @@ public class BusOrderModel { */ private void endTask() { CallerLogger.INSTANCE.d( M_BUS + TAG, "任务正常走完endTask()"); - BusServiceManager.getInstance().endTask(mContext, currentTaskId - , new IBusServiceCallback() { + BusServiceManager.endTask(mContext, currentTaskId + , new OchCommonServiceCallback() { @Override public void onSuccess(BaseData o) { CallerLogger.INSTANCE.d(M_BUS + TAG, "endTask success: " + o); @@ -845,7 +845,7 @@ public class BusOrderModel { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { ToastUtils.showShort(failMsg); } }); @@ -896,15 +896,15 @@ public class BusOrderModel { // 车机端上传心跳数据(只在出车状态时上传) public void runCarHeartbeat() { - BusServiceManager.getInstance().runCarHeartbeat(mContext, mLongitude, mLatitude, - new IBusServiceCallback() { + BusServiceManager.runCarHeartbeat(mContext, mLongitude, mLatitude, + new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { } @Override - public void onFail(String failMsg) { + public void onFail(int code, String failMsg) { } }); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java deleted file mode 100644 index d99fcc5d26..0000000000 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.java +++ /dev/null @@ -1,270 +0,0 @@ -package com.mogo.och.bus.net; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.bus.bean.BusCloseTaskRequest; -import com.mogo.och.bus.bean.BusQueryLineTaskResponse; -import com.mogo.och.bus.bean.BusQueryLinesResponse; -import com.mogo.och.bus.bean.BusQueryWriteOffPassengersResponse; -import com.mogo.och.bus.bean.BusRoutePlanningUpdateReqBean; -import com.mogo.och.bus.bean.BusRoutesResponse; -import com.mogo.och.bus.bean.BusWriteOffPassengersQueryRequest; -import com.mogo.och.bus.bean.CarHeartbeatReqBean; -import com.mogo.och.bus.bean.BusOrdersResponse; -import com.mogo.och.bus.bean.BusQueryLineStationsRequest; -import com.mogo.och.bus.bean.BusResetDrivingLineRequest; -import com.mogo.och.bus.bean.BusUpdateSiteStatusRequest; -import com.mogo.och.bus.bean.QueryLeaveAwayPassengersRequest; -import com.mogo.och.bus.bean.QueryLeaveAwayPassengersResponse; -import com.mogo.och.bus.constant.BusConst; -import com.mogo.och.bus.model.BusOrderModel; - -import java.util.List; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * @author: wangmingjun - * @date: 2021/10/20 - */ -public class BusServiceManager { - - private static final String TAG = BusServiceManager.class.getSimpleName(); - - private final IBusApiService mService; - - private static final class SingletonHolder { - private static final BusServiceManager INSTANCE = new BusServiceManager(); - } - - public static BusServiceManager getInstance(){ - return SingletonHolder.INSTANCE; - } - - private BusServiceManager(){ - mService = MoGoRetrofitFactory.getInstance(BusConst.getBaseUrl()).create(IBusApiService.class); - } - - /** - * 查询小巴车当前任务 - * @param context - * @param callback - */ - public void queryBusRoutes(Context context, IBusServiceCallback callback) { - //获取当前高德坐标 - - mService.queryBusRoutes(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - , new BusQueryLineStationsRequest()) - .subscribeOn( Schedulers.io() ).observeOn( AndroidSchedulers.mainThread() ) - .subscribe( getSubscribeImpl(context,callback,"queryBusRoutes")); - } - - /** - * 重置线路站点 - * @param context - * @param taskId - * @param callback - */ - public void switchLine(Context context, int taskId, IBusServiceCallback callback){ - mService.switchLine(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new BusResetDrivingLineRequest(taskId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"switchLine")); - } - - /** - * 中断当前任务 - * @param context - * @param taskId - * @param callback - */ - public void abortTask(Context context, int taskId, IBusServiceCallback callback){ - mService.abortTask(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusCloseTaskRequest(taskId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"abortTask")); - } - - /** - * 正常结束任务 - * @param context - * @param taskId - * @param callback - */ - public void endTask(Context context, int taskId, IBusServiceCallback callback){ - mService.endTask(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusCloseTaskRequest(taskId)) - .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"endTask")); - } - - /** - * 离站上报 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void leaveStation(Context context, int seq, int siteId,int taskId, IBusServiceCallback callback){ - mService.leaveStation(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusUpdateSiteStatusRequest(taskId,siteId,seq)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"leaveStation")); - } - - /** - * 到站更新站点状态 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void arriveSiteStation(Context context, int seq, int siteId,int taskId, - IBusServiceCallback callback){ - mService.arriveSiteStation(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusUpdateSiteStatusRequest(taskId,siteId,seq)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"arriveSiteStation")); - } - - /** - * 查询下车乘客 - * @param context - * @param seq - * @param siteId - * @param callback - */ - public void queryStationLeaveAwayPassengers(Context context, int seq, int siteId - , IBusServiceCallback callback){ - mService.queryStationLeaveAwayPassengers( MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new QueryLeaveAwayPassengersRequest(seq,siteId)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryStationLeaveAwayPassengers")); - } - - /** - * 查询当前到站点核销乘客 - * @param context - * @param siteId - * @param callback - */ - public void queryStationWriteOffPassengers(Context context,int taskId,int siteId,long prePassengerTime - , IBusServiceCallback callback){ - mService.queryWriteOffPassengers( MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusWriteOffPassengersQueryRequest(taskId,siteId,prePassengerTime)) - .subscribeOn( Schedulers.io() ) - .observeOn( AndroidSchedulers.mainThread() ) - .subscribe(getSubscribeImpl(context,callback,"queryStationWriteOffPassengers")); - } - - - - /** - * 查询小巴车订单 - * @param context - * @param callback - */ - public void queryBusOrders(Context context, IBusServiceCallback callback){ - mService.queryBusOrders(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusOrders")); - } - - public void queryBusLines(Context context, IBusServiceCallback callback){ - mService.queryBusLines(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusLines")); - } - - public void queryBusTaskByLineId(Context context,String lineId,IBusServiceCallback callback){ - mService.queryBusTaskByLineId(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,lineId) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"queryBusLines")); - } - - public void updateOrderRoute(Context context,int lineId, int startSiteId, int endSiteId - , List< BusRoutePlanningUpdateReqBean.Result > points - , IBusServiceCallback callback){ - mService.updateOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new BusRoutePlanningUpdateReqBean(MoGoAiCloudClientConfig.getInstance().getSn() - ,lineId,startSiteId,endSiteId, points)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"updateOrderRoute")); - } - - /** - * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 - * @param context - * @param lon - * @param lat - * @param callback - */ - public void runCarHeartbeat(Context context, double lon, double lat, - IBusServiceCallback callback) { - mService.runCarHeartbeat(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new CarHeartbeatReqBean( - MoGoAiCloudClientConfig.getInstance().getSn(), lon, lat)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "runCarHeartbeat")); - } - - private SubscribeImpl getSubscribeImpl(Context context, IBusServiceCallback callback, String apiName){ - return new SubscribeImpl(RequestOptions.create(context)){ - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.e(M_BUS + TAG,apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_BUS + TAG,apiName + ": onError() " +"msg="+ message+" code="+code); - if (callback != null) { - callback.onFail("msg="+ message+" code="+code); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_BUS + TAG,apiName + ": onError() " +" e="+e.getMessage()); - if (callback != null) { - callback.onFail(e.getMessage()); - } - } - }; - } -} diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt new file mode 100644 index 0000000000..126932adbc --- /dev/null +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/BusServiceManager.kt @@ -0,0 +1,268 @@ +package com.mogo.och.bus.net + +import android.content.Context +import com.mogo.och.bus.constant.BusConst.Companion.getBaseUrl +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.MoGoRetrofitFactory +import com.mogo.och.bus.bean.* +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 + +/** + * @author: wangmingjun + * @date: 2021/10/20 + */ +object BusServiceManager { + + private val mService: IBusApiService = MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + IBusApiService::class.java + ) + + /** + * 查询小巴车当前任务 + * @param context + * @param callback + */ + @JvmStatic + fun queryBusRoutes(context: Context, callback: OchCommonServiceCallback?) { + //获取当前高德坐标 + mService.queryBusRoutes( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusQueryLineStationsRequest() + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusRoutes")) + } + + /** + * 重置线路站点 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun switchLine( + context: Context, + taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.switchLine( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusResetDrivingLineRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "switchLine")) + } + + /** + * 中断当前任务 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun abortTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { + mService.abortTask( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusCloseTaskRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "abortTask")) + } + + /** + * 正常结束任务 + * @param context + * @param taskId + * @param callback + */ + @JvmStatic + fun endTask(context: Context, taskId: Int, callback: OchCommonServiceCallback?) { + mService.endTask( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusCloseTaskRequest(taskId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "endTask")) + } + + /** + * 离站上报 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun leaveStation( + context: Context, + seq: Int, + siteId: Int, + taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.leaveStation( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusUpdateSiteStatusRequest(taskId, siteId, seq) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "leaveStation")) + } + + /** + * 到站更新站点状态 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun arriveSiteStation( + context: Context, seq: Int, siteId: Int, taskId: Int, + callback: OchCommonServiceCallback? + ) { + mService.arriveSiteStation( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusUpdateSiteStatusRequest(taskId, siteId, seq) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arriveSiteStation")) + } + + /** + * 查询下车乘客 + * @param context + * @param seq + * @param siteId + * @param callback + */ + @JvmStatic + fun queryStationLeaveAwayPassengers( + context: Context, + seq: Int, + siteId: Int, + callback: OchCommonServiceCallback? + ) { + mService.queryStationLeaveAwayPassengers( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + QueryLeaveAwayPassengersRequest(seq, siteId) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryStationLeaveAwayPassengers")) + } + + /** + * 查询当前到站点核销乘客 + * @param context + * @param siteId + * @param callback + */ + @JvmStatic + fun queryStationWriteOffPassengers( + context: Context, + taskId: Int, + siteId: Int, + prePassengerTime: Long, + callback: OchCommonServiceCallback? + ) { + mService.queryWriteOffPassengers( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusWriteOffPassengersQueryRequest(taskId, siteId, prePassengerTime) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryStationWriteOffPassengers")) + } + + /** + * 查询小巴车订单 + * @param context + * @param callback + */ + @JvmStatic + fun queryBusOrders(context: Context, callback: OchCommonServiceCallback?) { + mService.queryBusOrders( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusOrders")) + } + @JvmStatic + fun queryBusLines(context: Context, callback: OchCommonServiceCallback?) { + mService.queryBusLines( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines")) + } + @JvmStatic + fun queryBusTaskByLineId( + context: Context, + lineId: String?, + callback: OchCommonServiceCallback? + ) { + mService.queryBusTaskByLineId( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + lineId + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryBusLines")) + } + @JvmStatic + fun updateOrderRoute( + context: Context, + lineId: Int, + startSiteId: Int, + endSiteId: Int, + points: List?, + callback: OchCommonServiceCallback? + ) { + mService.updateOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + BusRoutePlanningUpdateReqBean( + MoGoAiCloudClientConfig.getInstance().sn, lineId, startSiteId, endSiteId, points + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "updateOrderRoute")) + } + + /** + * 车机端上传心跳数据(只在出车状态时上传):包含高德坐标系经纬度 + * @param context + * @param lon + * @param lat + * @param callback + */ + @JvmStatic + fun runCarHeartbeat( + context: Context, lon: Double, lat: Double, + callback: OchCommonServiceCallback? + ) { + mService.runCarHeartbeat( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + CarHeartbeatReqBean( + MoGoAiCloudClientConfig.getInstance().sn, lon, lat + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "runCarHeartbeat")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java deleted file mode 100644 index 966a86d980..0000000000 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusServiceCallback.java +++ /dev/null @@ -1,15 +0,0 @@ -package com.mogo.och.bus.net; - -/** - * @author: wangmingjun - * @date: 2021/10/20 - */ -public interface IBusServiceCallback< T >{ - void onSuccess(T o); - - void onFail(String failMsg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml b/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml index 8609630b9c..1b9bbeec01 100644 --- a/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml +++ b/OCH/mogo-och-bus/src/main/res/layout/fragment_och_bus.xml @@ -10,15 +10,16 @@ app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintTop_toTopOf="parent"> - { - val builder = Response.Builder() - val create:ResponseBody - if(first) { - create = ResponseBody.create( - MediaType.parse("application/json"), - "{\"code\":0,\"msg\":\"\",\"data\":{\"servingStatus\":0,\"driverStatus\":1,\"orderNo\":\"12111\",\"purpose\":1,\"sn\":\"fjsdlfjslf\",\"plateNumber\":\"车牌号\",\"phone\":\"18811539480\",\"lineId\":\"线路id\",\"taskId\":\"任务id\"}}" - ) - first = false - }else{ - create = ResponseBody.create( - MediaType.parse("application/json"), - "{\"code\":0,\"msg\":\"\",\"data\":{\"servingStatus\":0,\"driverStatus\":0,\"orderNo\":\"12111\",\"purpose\":1,\"sn\":\"fjsdlfjslf\",\"plateNumber\":\"车牌号\",\"phone\":\"18811539480\",\"lineId\":\"线路id\",\"taskId\":\"任务id\"}}" - ) - first = true - } - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } - "/autopilot-car-hailing/line/v2/driver/bus/task/query" -> { - val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":[{\"id\":1,\"taskStartTime\":1663722000000},{\"id\":2,\"taskStartTime\":1663725600000},{\"id\":3,\"taskStartTime\":1663729200000},{\"id\":4,\"taskStartTime\":1663732800000},{\"id\":5,\"taskStartTime\":1663736400000},{\"id\":6,\"taskStartTime\":1663740000000},{\"id\":7,\"taskStartTime\":1663743600000},{\"id\":8,\"taskStartTime\":1663747200000},{\"id\":9,\"taskStartTime\":1663750800000},{\"id\":10,\"taskStartTime\":1663754400000}]}") - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } - "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startTask" -> { - val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":null}") - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } - "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/endOperation" -> { - val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":null}") - builder.code(200) - builder.request(original) - builder.protocol(Protocol.HTTP_1_1) - builder.message("") - return builder.body(create).build() - } "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startOperation" -> { val builder = Response.Builder() - val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":0,\"msg\":\"\",\"data\":null}") + val create = ResponseBody.create(MediaType.parse("application/json"), "{\"code\":100006,\"msg\":\"\",\"data\":null}") builder.code(200) builder.request(original) builder.protocol(Protocol.HTTP_1_1) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt index d945f03a1f..a5b2277c7d 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginModel.kt @@ -71,66 +71,70 @@ object OchCommonLoginModel{ * 获取手机验证码 */ fun getPhoneCode(phone: String?) { - OchCommonServiceManager.getInstance().getPhoneCode(mContext, phone, - object : OchCommonServiceCallback { - 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) + mContext?.let { + OchCommonServiceManager.getPhoneCode(it, phone, + object : OchCommonServiceCallback { + 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 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) { - ToastUtilsOch.showWithCodeMessage(code,msg) - } - }) + override fun onFail(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage(code,msg) + } + }) + } + } fun gotoLogin(phone: String, code: String) { - val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude) - OchCommonServiceManager.getInstance().gotoLoginBycode(mContext, phone, code, location4Login, - object : OchCommonServiceCallback { - override fun onSuccess(data: TaxiLoginRespBean?) { - if (null != data && 0 == data.code) { - // 获取验证码成功 - ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) - LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Login) - mContext?.let { - SharedPrefs.getInstance(it).putString("och_account",phone) - } - iTaxiLoginCallback?.loginSuccess() - } else { - if (data != null) { - ToastUtils.showShort(data.code) + mContext?.let { + val location4Login = TaxiLoginReqBean.Location4Login(mLatitude, mLongitude) + OchCommonServiceManager.gotoLoginBycode(it, phone, code, location4Login, + object : OchCommonServiceCallback { + override fun onSuccess(data: TaxiLoginRespBean?) { + if (null != data && 0 == data.code) { + // 获取验证码成功 + ToastUtils.showShort(mContext?.getString(R.string.module_och_taxi_login_login_success)) + LoginStatusManager.setLoginStatus(TaxiLoginStatusEnum.Login) + mContext?.let { + SharedPrefs.getInstance(it).putString("och_account",phone) + } + 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 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) { - ToastUtilsOch.showWithCodeMessage(code,msg) - } - }) + override fun onFail(code: Int, msg: String) { + ToastUtilsOch.showWithCodeMessage(code,msg) + } + }) + } } - } \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java index 0b1e9f0bfb..a2951bfbde 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusModel.java @@ -53,7 +53,7 @@ public abstract class OchCommonLoginStatusModel { * 8、登录页面关闭后查下状态 */ public void queryCarStatus() { - OchCommonServiceManager.getInstance().queryDriverServiceStatus(mContext, + OchCommonServiceManager.queryDriverServiceStatus(mContext, new OchCommonServiceCallback() { @Override public void onSuccess(DriverStatusQueryRespBean data) { @@ -93,7 +93,7 @@ public abstract class OchCommonLoginStatusModel { // 登出 public void logout(double mLatitude,double mLongitude) { TaxiLogoutReqBean.Location4Login location4Login = new TaxiLogoutReqBean.Location4Login(mLatitude, mLongitude); - OchCommonServiceManager.getInstance().logout(mContext,location4Login, + OchCommonServiceManager.logout(mContext,location4Login, new OchCommonServiceCallback() { @Override public void onSuccess(BaseData data) { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java deleted file mode 100644 index ecc0129cfe..0000000000 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.java +++ /dev/null @@ -1,187 +0,0 @@ -package com.mogo.och.common.module.biz.network; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClient; -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.commons.debug.DebugConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -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.common.module.biz.constant.OchCommonConst; - -import io.reactivex.Observable; -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by pangfan on 2021/8/19 - */ -public class OchCommonServiceManager { - private static final String TAG = OchCommonServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final OchCommonServiceManager INSTANCE = new OchCommonServiceManager(); - } - - public static OchCommonServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private OchCommonServiceApiNew mOCHTaxiServiceApi; - - private OchCommonServiceManager() { - if (mOCHTaxiServiceApi == null){ - mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(OchCommonConst.getBaseUrl()).create(OchCommonServiceApiNew.class); - } - } - - /** - * 获取手机验证码 - * @param context - * @param callback - */ - public void getPhoneCode(Context context, String phone, - OchCommonServiceCallback callback) { - mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginSmsReqBean(phone)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "getPhoneCode")); - } - /** - * 通过验证码登录 - * @param context - * @param callback - */ - public void gotoLoginBycode(Context context, String phone, String code, - TaxiLoginReqBean.Location4Login location4Login, - OchCommonServiceCallback callback) { - String sn = MoGoAiCloudClientConfig.getInstance().getSn(); - Observable taxiLoginRespBeanObservable = null; - switch (DebugConfig.getProductFlavor()) { - case "fPadLenovoOchTaxi": {//出租车司机 - taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Taxi(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginReqBean(phone, code, sn, location4Login)); - break; - } - case "fPadLenovoOchBus": {//小巴车司机 - taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Bus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginReqBean(phone, code, sn, location4Login)); - break; - } - } - if (taxiLoginRespBeanObservable != null) { - taxiLoginRespBeanObservable.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode")); - } - } - - /** - * 登出 - */ - public void logout(Context context, TaxiLogoutReqBean.Location4Login location4Login, OchCommonServiceCallback callback) { - Observable logout = null; - switch (DebugConfig.getProductFlavor()) { - case "fPadLenovoOchTaxi": {//出租车司机 - logout = mOCHTaxiServiceApi.logout4Taxi( - MoGoAiCloudClientConfig.getInstance().getServiceAppId(), - MoGoAiCloudClientConfig.getInstance().getToken(), - new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login)); - break; - } - case "fPadLenovoOchBus": {//小巴车司机 - logout = mOCHTaxiServiceApi.logout4Bus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId(), - MoGoAiCloudClientConfig.getInstance().getToken(), - new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login)); - break; - } - } - if (logout != null) { - logout.subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "logout")); - } - } - - /** - * 接单状态和登录状态查询 - * - * @param context - * @param callback - */ - public void queryDriverServiceStatus(Context context, - OchCommonServiceCallback callback) { - if (MoGoAiCloudClientConfig.getInstance().getToken().isEmpty()) { - callback.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等"); - MoGoAiCloudClient.getInstance().refreshToken(); - return; - } - String flavor = ""; - switch (DebugConfig.getProductFlavor()) { - case "fPadLenovoOchTaxi": {//出租车司机 - flavor = "taxi"; - break; - } - case "fPadLenovoOchBus": {//小巴车司机 - flavor = "bus"; - break; - } - case "fPadLenovoOchBusPassenger": {//小巴车乘客 - flavor = "bus/passenger"; - break; - } - } - mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(flavor, MoGoAiCloudClientConfig.getInstance().getServiceAppId() - , MoGoAiCloudClientConfig.getInstance().getToken() - , MoGoAiCloudClientConfig.getInstance().getSn()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryDriverServiceStatus")); - } - - - private SubscribeImpl getSubscribeImpl( - Context context, OchCommonServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.d(M_TAXI + TAG, apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_TAXI + TAG, apiName + ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_TAXI + TAG, String.format(apiName + ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } -} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt new file mode 100644 index 0000000000..6779e4a891 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceManager.kt @@ -0,0 +1,154 @@ +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 val mOCHTaxiServiceApi: OchCommonServiceApiNew = + MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + OchCommonServiceApiNew::class.java + ) + + /** + * 获取手机验证码 + * @param context + * @param callback + */ + @JvmStatic + fun getPhoneCode( + context: Context, phone: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.getPhoneCode( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.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? + ) { + val sn = MoGoAiCloudClientConfig.getInstance().sn + var taxiLoginRespBeanObservable: Observable? = null + when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Taxi( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLoginReqBean(phone, code, sn, location4Login) + ).transformTry() + } + "fPadLenovoOchBus" -> { + //小巴车司机 + taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Bus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLoginReqBean(phone, code, sn, location4Login) + ).transformTry() + } + } + taxiLoginRespBeanObservable?.subscribe(OchCommonSubscribeImpl(context, callback, "gotoLoginBycode")) + } + + /** + * 登出 + */ + @JvmStatic + fun logout( + context: Context, + location4Login: TaxiLogoutReqBean.Location4Login?, + callback: OchCommonServiceCallback? + ) { + var logout: Observable? = null + when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + logout = mOCHTaxiServiceApi.logout4Taxi( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().sn, location4Login) + ).transformTry() + } + "fPadLenovoOchBus" -> { + //小巴车司机 + logout = mOCHTaxiServiceApi.logout4Bus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().sn, location4Login) + ).transformTry() + } + } + logout?.subscribe(OchCommonSubscribeImpl(context, callback, "logout")) + } + + /** + * 接单状态和登录状态查询 + * + * @param context + * @param callback + */ + @JvmStatic + fun queryDriverServiceStatus( + context: Context, + callback: OchCommonServiceCallback? + ) { + if (MoGoAiCloudClientConfig.getInstance().token.isEmpty()) { + callback?.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等") + MoGoAiCloudClient.getInstance().refreshToken() + return + } + var flavor = "" + when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + flavor = "taxi" + } + "fPadLenovoOchBus" -> { + //小巴车司机 + flavor = "bus" + } + "fPadLenovoOchBusPassenger" -> { + //小巴车乘客 + flavor = "bus/passenger" + } + } + mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus( + flavor, + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + MoGoAiCloudClientConfig.getInstance().sn + ).transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryDriverServiceStatus")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt new file mode 100644 index 0000000000..01f08eaaee --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonSubscribeImpl.kt @@ -0,0 +1,36 @@ +package com.mogo.och.common.module.biz.network + +import com.mogo.eagle.core.data.BaseData +import com.mogo.eagle.core.network.RequestOptions +import com.mogo.eagle.core.network.SubscribeImpl +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.och.common.module.utils.CallerLoggerUtils.flavorTag + +class OchCommonSubscribeImpl( + val context: Any, + val callback: OchCommonServiceCallback?, + val apiName: String +) : SubscribeImpl(RequestOptions.create(context)) { + + companion object { + const val TAG = "OchCommonSubscribeImpl" + } + + override fun onSuccess(o: T) { + super.onSuccess(o) + CallerLogger.d("$flavorTag$TAG", "$apiName: onSuccess() ${o.msg}") + callback?.onSuccess(o) + } + + override fun onError(e: Throwable) { + super.onError(e) + CallerLogger.e("$flavorTag$TAG", "$apiName: onError() ${e.message}") + callback?.onError() + } + + override fun onError(message: String, code: Int) { + super.onError(message, code) + CallerLogger.e("$flavorTag$TAG", "$apiName: onError() code = $code; message = $message") + callback?.onFail(code, message) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt new file mode 100644 index 0000000000..93869d6edc --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/FRetryWithTime.kt @@ -0,0 +1,20 @@ +package com.mogo.och.common.module.biz.network.interceptor + +import com.mogo.cloud.passport.MoGoAiCloudClient +import com.mogo.eagle.core.data.BaseData +import io.reactivex.Observable +import io.reactivex.ObservableSource +import io.reactivex.functions.Function + +class FRetryWithTime : Function> { + + override fun apply(baseData: T): ObservableSource { + baseData.let { + if (it.code == 100046 || it.code == 100045 || it.code == 100005 || it.code == 100006 || it.code == 520003) { + MoGoAiCloudClient.getInstance().refreshToken() + return Observable.error(OchCommonRetryException()) + } + } + return Observable.just(baseData) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt new file mode 100644 index 0000000000..1fa0e4bf57 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonNetInterceptor.kt @@ -0,0 +1,13 @@ +package com.mogo.och.common.module.biz.network.interceptor + +import io.reactivex.Observable +import com.mogo.eagle.core.data.BaseData +import io.reactivex.android.schedulers.AndroidSchedulers +import io.reactivex.schedulers.Schedulers + +fun Observable.transformTry():Observable { + return flatMap(FRetryWithTime()) + .retryWhen(RetryWithTime()) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java new file mode 100644 index 0000000000..262d1806c0 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/OchCommonRetryException.java @@ -0,0 +1,5 @@ +package com.mogo.och.common.module.biz.network.interceptor; + +public class OchCommonRetryException extends RuntimeException{ + +} diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt new file mode 100644 index 0000000000..83606fdea0 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/interceptor/RetryWithTime.kt @@ -0,0 +1,30 @@ +package com.mogo.och.common.module.biz.network.interceptor + +import com.mogo.eagle.core.utilcode.constant.TimeConstants +import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.och.common.module.utils.CallerLoggerUtils.flavorTag +import io.reactivex.Observable +import io.reactivex.ObservableSource +import io.reactivex.functions.Function +import java.util.concurrent.TimeUnit + + +class RetryWithTime : Function, ObservableSource> { + companion object { + private const val TAG = "RetryWithTime" + } + var current = -1 + private var timeDelys = intArrayOf(3, 1, 2) + override fun apply(throwableObservable: Observable): ObservableSource? { + return throwableObservable.flatMap { + ++current + CallerLogger.e("${flavorTag}${TAG}", " 时间:${TimeUtils.getStringByNow(0, TimeConstants.SEC)}") + if (it is OchCommonRetryException && current < timeDelys.size) { + Observable.timer(timeDelys[current].toLong(), TimeUnit.SECONDS) + } else { + Observable.error(it) + } + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt new file mode 100644 index 0000000000..6289004563 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/CallerLoggerUtils.kt @@ -0,0 +1,31 @@ +package com.mogo.och.common.module.utils + +import com.mogo.commons.debug.DebugConfig +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_BUS_P +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI +import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.Companion.M_TAXI_P + +object CallerLoggerUtils { + var flavorTag = when (DebugConfig.getProductFlavor()) { + "fPadLenovoOchTaxi" -> { + //出租车司机 + M_TAXI + } + "fPadLenovoOchBus" -> { + //小巴车司机 + M_BUS + } + "fPadLenovoOchTaxiPassenger" -> { + //出租车乘客 + M_TAXI_P + } + "fPadLenovoOchBusPassenger" -> { + //小巴车乘客 + M_BUS_P + } + else -> { + "" + } + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java new file mode 100644 index 0000000000..9dc909d19c --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/utils/FieldUtils.java @@ -0,0 +1,37 @@ +package com.mogo.och.common.module.utils; + +import android.text.TextUtils; + +import java.lang.reflect.Field; +import java.lang.reflect.Member; +import java.lang.reflect.Modifier; + +public class FieldUtils { + + public static Field getDeclaredField(final Class cls, final String fieldName, final + boolean forceAccess) { + if (cls == null || TextUtils.isEmpty(fieldName)) { + return null; + } + try { + // only consider the specified class by using getDeclaredField() + final Field field = cls.getDeclaredField(fieldName); + if (!isAccessible(field)) { + if (forceAccess) { + field.setAccessible(true); + } else { + return null; + } + } + return field; + } catch (final Exception e) { + e.printStackTrace(); + } + return null; + } + + + private static boolean isAccessible(final Member m) { + return m != null && Modifier.isPublic(m.getModifiers()) && !m.isSynthetic(); + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java new file mode 100644 index 0000000000..884d504338 --- /dev/null +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/MarqueeTextView.java @@ -0,0 +1,129 @@ +package com.mogo.och.common.module.wigets; + +import android.content.Context; +import android.content.res.TypedArray; +import android.util.AttributeSet; +import android.view.ViewDebug; +import android.widget.TextView; + +import com.mogo.och.common.module.R; +import com.mogo.och.common.module.utils.FieldUtils; + +import java.lang.reflect.Field; + + +public class MarqueeTextView extends androidx.appcompat.widget.AppCompatTextView{ + + /** + * 上一次设置的时间,用于过滤多余操作 + */ + private long mLastSetTime; + /** + * 自定义 gap + */ + private float mCustomGap = 0.3f; + /** + * 是否使用自定义 gap + */ + private boolean mUseCustomGap; + + public MarqueeTextView(Context context) { + this(context, null); + } + + public MarqueeTextView(Context context, AttributeSet attrs) { + this(context, attrs, 0); + } + + public MarqueeTextView(Context context, AttributeSet attrs, int defStyle) { + super(context, attrs, defStyle); + + TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.MarqueeTextView); + mCustomGap = typedArray.getFloat(R.styleable.MarqueeTextView_customGap, mCustomGap); + mUseCustomGap = typedArray.getBoolean(R.styleable.MarqueeTextView_useCustomGap, false); + typedArray.recycle(); + } + + @Override + @ViewDebug.ExportedProperty(category = "focus") + public boolean isFocused() { + return true; + } + + @Override + @ViewDebug.ExportedProperty + public boolean isSelected() { + return true; + } + + @Override + public void invalidate() { + reflectToChangeGap(); + + super.invalidate(); + } + + private void reflectToChangeGap() { + if (!mUseCustomGap) { + return; + } + if (System.currentTimeMillis() - mLastSetTime < 1000) { + // 1s 内不重新设置,过滤多余操作 + return; + } + try { + Class marqueClass = null; + Class[] innerClazz = TextView.class.getDeclaredClasses(); + for (Class clazz : innerClazz) { + if ("Marquee".equals(clazz.getSimpleName())) { + marqueClass = clazz; + } + } + + if (marqueClass == null) { + return; + } + + Field field1 = FieldUtils.getDeclaredField(marqueClass, "mGhostStart", true); + + if (field1 == null) { + return; + } + + final int textWidth = getWidth() - getCompoundPaddingLeft() - getCompoundPaddingRight(); + final float lineWidth = getLayout().getLineWidth(0); + final float gap = mCustomGap*textWidth; + float ghostStart = lineWidth - textWidth + gap; + float maxScroll = ghostStart + textWidth; + float ghostOffset = lineWidth + gap; + float maxFadeScroll = ghostStart + lineWidth + lineWidth; + + final Field field = FieldUtils.getDeclaredField(TextView.class, "mMarquee", true); + if (field != null) { + Object mMarque = field.get(this); + if (mMarque != null) { + mLastSetTime = System.currentTimeMillis(); + float mGhostStart = (float) field1.get(mMarque); + if (mGhostStart != ghostStart) { + // 需要设置的 mGhostStart 与当前 ghostStart 不相等时才去设置 + Field field2 = FieldUtils.getDeclaredField(marqueClass, "mMaxScroll", true); + Field field3 = FieldUtils.getDeclaredField(marqueClass, "mGhostOffset", true); + Field field4 = FieldUtils.getDeclaredField(marqueClass, "mMaxFadeScroll", true); + + if (field2 == null || field3 == null || field4 == null) { + return; + } + + field1.set(mMarque, ghostStart); + field2.set(mMarque, maxScroll); + field3.set(mMarque, ghostOffset); + field4.set(mMarque, maxFadeScroll); + } + } + } + } catch (Exception e) { + e.printStackTrace(); + } + } + +} diff --git a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml index 27efdf3802..9043a1d2ad 100644 --- a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml +++ b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml @@ -52,4 +52,9 @@ + + + + + \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java index 9849fafda2..79e59a7b17 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java @@ -34,6 +34,7 @@ import com.mogo.eagle.core.utilcode.util.UiThreadHandler; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.common.module.map.AmapNaviToDestinationModel; +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; @@ -53,7 +54,6 @@ import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonValueCallback; import com.mogo.och.taxi.passenger.callback.ITaxiPassengerVeloctityCallback; import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; import com.mogo.och.taxi.passenger.constant.TaxiPassengerOrderStatusEnum; -import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceCallback; import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager; import com.mogo.aicloud.services.socket.IMogoLifecycleListener; import com.mogo.och.taxi.passenger.utils.TaxiPassengerAnalyticsManager; @@ -290,8 +290,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback * 才更新最新进行中单到本地 */ public void queryInAndWaitOrders() { - TaxiPassengerServiceManager.getInstance().queryOrdersInAndWaitService(mContext, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrdersInAndWaitService(mContext, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerOrdersInServiceQueryRespBean data) { if (data == null || data.data == null) { @@ -348,8 +348,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback return; } final String orderNo = mCurrentOCHOrder.orderNo; - TaxiPassengerServiceManager.getInstance().queryOrderById(mContext, orderNo, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrderById(mContext, orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerOrderQueryRespBean data) { if (data != null && data.data != null @@ -718,7 +718,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback */ public void queryOrderRemaining(){ if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.getInstance().queryOrderRemaining(mContext, mCurrentOCHOrder.orderNo, new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrderRemaining(mContext, mCurrentOCHOrder.orderNo, new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerOrderQueryRemainingResp data) { if (data != null && data.data!=null){ @@ -739,7 +739,7 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void queryOrderRouteList() { if (mCurrentOCHOrder == null) return; CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route--- queryOrderRouteList"); - TaxiPassengerServiceManager.getInstance().queryOrderRouteList(mContext, mCurrentOCHOrder.orderNo, new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryOrderRouteList(mContext, mCurrentOCHOrder.orderNo, new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerQueryOrderRouteResp data) { CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route---"+GsonUtil.jsonFromObject(data)); @@ -790,8 +790,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void checkPhoneAndUpdateStatus(String phoneTail,ITaxiPassengerCommonCallback commonCallback) { if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.getInstance().checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo, - phoneTail, new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo, + phoneTail, new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerBaseRespBean data) { if (data != null && data.code == 0 && mCurrentOCHOrder != null){ @@ -824,8 +824,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void arrivedAndScore(TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean , ITaxiPassengerCommonValueCallback commonCallback) { if (taxiPassengerScoreUpdateOrderReqBean.orderNo == null) return; - TaxiPassengerServiceManager.getInstance().arrivedAndScore(mContext,taxiPassengerScoreUpdateOrderReqBean, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.arrivedAndScore(mContext,taxiPassengerScoreUpdateOrderReqBean, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerBaseRespBean data) { if(commonCallback!=null) { @@ -854,8 +854,8 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback public void loopQueryPilotStatus(){ if (mCurrentOCHOrder == null) return; - TaxiPassengerServiceManager.getInstance().queryPilotStatus(mContext, mCurrentOCHOrder.orderNo, - new TaxiPassengerServiceCallback() { + TaxiPassengerServiceManager.queryPilotStatus(mContext, mCurrentOCHOrder.orderNo, + new OchCommonServiceCallback() { @Override public void onSuccess(TaxiPassengerBaseRespBean data) { if (data != null && data.code == 0 && data.data.equals(true)) { @@ -898,9 +898,9 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback TaxiPassengerStartReqBean.Result result = new TaxiPassengerStartReqBean.Result(); result.lat = mLatitude; result.lon = mLongitude; - TaxiPassengerServiceManager.getInstance().startServicePilotDone(mContext, + TaxiPassengerServiceManager.startServicePilotDone(mContext, mCurrentOCHOrder.orderNo, result, - new TaxiPassengerServiceCallback(){ + new OchCommonServiceCallback(){ @Override public void onSuccess(TaxiPassengerBaseRespBean data) { diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java deleted file mode 100644 index b2d02607c3..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceCallback.java +++ /dev/null @@ -1,18 +0,0 @@ -package com.mogo.och.taxi.passenger.network; - -/** - * @author congtaowang - * @since 2021/1/15 - * - * 修改订单状态回调接口 - */ -public interface TaxiPassengerServiceCallback< T > { - - void onSuccess(T data); - - void onFail(int code, String msg); - - default void onError() { - - } -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java deleted file mode 100644 index f052794c40..0000000000 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java +++ /dev/null @@ -1,208 +0,0 @@ -package com.mogo.och.taxi.passenger.network; - -import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI_P; - -import android.content.Context; - -import com.mogo.cloud.passport.MoGoAiCloudClientConfig; -import com.mogo.eagle.core.data.BaseData; -import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager; -import com.mogo.eagle.core.network.MoGoRetrofitFactory; -import com.mogo.eagle.core.network.RequestOptions; -import com.mogo.eagle.core.network.SubscribeImpl; -import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean; -import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean; -import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst; -import com.mogo.commons.debug.DebugConfig; - -import io.reactivex.android.schedulers.AndroidSchedulers; -import io.reactivex.schedulers.Schedulers; - -/** - * Created by pangfan on 2021/8/19 - */ -public class TaxiPassengerServiceManager { - private static final String TAG = TaxiPassengerServiceManager.class.getSimpleName(); - - private static final class SingletonHolder { - private static final TaxiPassengerServiceManager INSTANCE = new TaxiPassengerServiceManager(); - } - - public static TaxiPassengerServiceManager getInstance() { - return SingletonHolder.INSTANCE; - } - - private TaxiPassengerServiceApi mOCHTaxiServiceApi; - - private TaxiPassengerServiceManager() { - if (mOCHTaxiServiceApi == null){ - mOCHTaxiServiceApi = MoGoRetrofitFactory.getInstance(TaxiPassengerConst.getBaseUrl()).create(TaxiPassengerServiceApi.class); - } - } - - /** - * 获取司机端的sn - * @return - */ - private String getDriverAppSn(){ - return CallerTelematicManager.INSTANCE.getServerToken(); - } - - /** - * 查询全部服务中/待服务订单列表 - * @param context - * @param callback - */ - public void queryOrdersInAndWaitService(Context context, - TaxiPassengerServiceCallback callback) { - mOCHTaxiServiceApi.queryOrdersInAndWaitService(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,getDriverAppSn()) //获取到司机端的sn - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrdersInAndWaitService")); - } - - /** - * 查询订单剩余里程和时间 - * @param context - * @param orderNo - * @param callback - */ - public void queryOrderRemaining(Context context, String orderNo, TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.queryOrderRemaining(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderRemaining")); - } - - public void queryOrderRouteList(Context context, String orderNo, TaxiPassengerServiceCallback callback){ - - mOCHTaxiServiceApi.queryOrderRoute(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderRouteList")); - } - - /** - * 通过orderId查询订单信息(用于本地已经有orderId时) - * @param context - * @param orderNo - * @param callback - * @deprecated v2.1_0930需求中暂不再使用此接口 - */ - public void queryOrderById(Context context, String orderNo, - TaxiPassengerServiceCallback callback) { - mOCHTaxiServiceApi.queryOrderById(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerOrderQueryReqBean(getDriverAppSn(), orderNo)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryOrderById")); - } - - private SubscribeImpl getSubscribeImpl( - Context context, TaxiPassengerServiceCallback callback, String apiName) { - return new SubscribeImpl(RequestOptions.create(context)) { - @Override - public void onSuccess(T o) { - super.onSuccess(o); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,apiName + ": onSuccess() " + o.msg); - if (callback != null) { - callback.onSuccess(o); - } - } - - @Override - public void onError(Throwable e) { - super.onError(e); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,apiName + ": onError() " + e.getMessage()); - if (callback != null) { - callback.onError(); - } - } - - @Override - public void onError(String message, int code) { - super.onError(message, code); - CallerLogger.INSTANCE.e(M_TAXI_P + TAG,String.format(apiName + ": onError() code = %d; message = %s;", code, message)); - if (callback != null) { - callback.onFail(code, message); - } - } - }; - } - - public void checkPhoneAndUpdateOrderStatus(Context context, String orderNo,String phone ,TaxiPassengerServiceCallback callback){ - - mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerCheckPhoneUpdateOrderReqBean(orderNo,phone)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); - } - public void arrivedAndScore(Context context,TaxiPassengerScoreUpdateOrderReqBean taxiPassengerScoreUpdateOrderReqBean, TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.arrivedAndScore( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,taxiPassengerScoreUpdateOrderReqBean) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); - } - - public void getAllScoreWorld(Context context,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.getWorldAllStar( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken()) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "arrivedAndScore")); - } - - public void queryPilotStatus(Context context, String orderNo - ,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.queryPilotStatus( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,orderNo) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "queryPilotStatus")); - } - - public void startServicePilotDone(Context context,String orderNo,TaxiPassengerStartReqBean.Result loc - ,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.startServicePilotDone(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,new TaxiPassengerStartReqBean(getDriverAppSn() - ,orderNo,loc)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context,callback,"startServicePilotDone")); - } - public void getWorldByStar(Context context,String start,TaxiPassengerServiceCallback callback){ - mOCHTaxiServiceApi.getWorldByStar( - MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),start) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")); - } - -} diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt new file mode 100644 index 0000000000..37e0bc2b39 --- /dev/null +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.kt @@ -0,0 +1,199 @@ +package com.mogo.och.taxi.passenger.network + +import android.content.Context +import com.mogo.och.taxi.passenger.constant.TaxiPassengerConst.Companion.getBaseUrl +import com.mogo.eagle.core.function.call.telematic.CallerTelematicManager.getServerToken +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean +import com.mogo.cloud.passport.MoGoAiCloudClientConfig +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp +import com.mogo.och.taxi.passenger.bean.TaxiPassengerQueryOrderRouteResp +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean +import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld +import com.mogo.och.taxi.passenger.bean.TaxiPassengerStartReqBean +import com.mogo.eagle.core.network.MoGoRetrofitFactory +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 TaxiPassengerServiceManager { + + private val mOCHTaxiServiceApi: TaxiPassengerServiceApi = MoGoRetrofitFactory.getInstance(getBaseUrl()).create( + TaxiPassengerServiceApi::class.java + ) + + /** + * 获取司机端的sn + * @return + */ + private val driverAppSn: String + get() = getServerToken() + + /** + * 查询全部服务中/待服务订单列表 + * @param context + * @param callback + */ + @JvmStatic + fun queryOrdersInAndWaitService( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrdersInAndWaitService( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + driverAppSn + ) //获取到司机端的sn + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrdersInAndWaitService")) + } + + /** + * 查询订单剩余里程和时间 + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + fun queryOrderRemaining( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRemaining( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRemaining")) + } + @JvmStatic + fun queryOrderRouteList( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderRoute( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderRouteList")) + } + + /** + * 通过orderId查询订单信息(用于本地已经有orderId时) + * @param context + * @param orderNo + * @param callback + */ + @JvmStatic + @Deprecated("v2.1_0930需求中暂不再使用此接口") + fun queryOrderById( + context: Context, orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryOrderById( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiPassengerOrderQueryReqBean(driverAppSn, orderNo) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryOrderById")) + } + @JvmStatic + fun checkPhoneAndUpdateOrderStatus( + context: Context, + orderNo: String?, + phone: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiPassengerCheckPhoneUpdateOrderReqBean(orderNo, phone) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) + } + @JvmStatic + fun arrivedAndScore( + context: Context, + taxiPassengerScoreUpdateOrderReqBean: TaxiPassengerScoreUpdateOrderReqBean?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.arrivedAndScore( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + taxiPassengerScoreUpdateOrderReqBean + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) + } + @JvmStatic + fun getAllScoreWorld( + context: Context, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.getWorldAllStar( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "arrivedAndScore")) + } + @JvmStatic + fun queryPilotStatus( + context: Context, + orderNo: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.queryPilotStatus( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + orderNo + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "queryPilotStatus")) + } + @JvmStatic + fun startServicePilotDone( + context: Context, + orderNo: String?, + loc: TaxiPassengerStartReqBean.Result?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.startServicePilotDone( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + TaxiPassengerStartReqBean( + driverAppSn, orderNo, loc + ) + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "startServicePilotDone")) + } + @JvmStatic + fun getWorldByStar( + context: Context, + start: String?, + callback: OchCommonServiceCallback? + ) { + mOCHTaxiServiceApi.getWorldByStar( + MoGoAiCloudClientConfig.getInstance().serviceAppId, + MoGoAiCloudClientConfig.getInstance().token, + start + ) + .transformTry() + .subscribe(OchCommonSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus")) + } + +} \ No newline at end of file diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerCheckView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerCheckView.kt index da793abc1e..68fe7170da 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerCheckView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/TaxiPassengerCheckView.kt @@ -103,7 +103,7 @@ class TaxiPassengerCheckView :RelativeLayout, View.OnClickListener { R.id.tv_taxi_passenger_number_second -> {selectIndex(1)} R.id.tv_taxi_passenger_number_third -> {selectIndex(2)} R.id.tv_taxi_passenger_number_fourth -> {selectIndex(3)} - R.id.tv_taxi_passenger_number_submit -> {checkAndCommit()} + R.id.tv_taxi_passenger_number_submit -> {clearNumber()} else -> {} } } @@ -130,9 +130,27 @@ class TaxiPassengerCheckView :RelativeLayout, View.OnClickListener { index++ } changeStyle() + numSelect.forEach { + if(it==null){ + return + } + } + + checkAndCommit() } } + private fun clearNumber(){ + for(i in numSelect.indices){ + numSelect[i] = null + } + numSelectTextView.forEach { + it?.text = "" + } + index = 0 + changeStyle() + } + private fun deleteNumver() { if (index in 0..3) { if(numSelect[index]==null){ diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt index 6f56314a9f..548280ca96 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt +++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/ui/comment/TaxiPassengerArrivedView.kt @@ -25,13 +25,13 @@ import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant import com.mogo.eagle.core.utilcode.util.OverlayViewUtils import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer +import com.mogo.och.common.module.biz.network.OchCommonServiceCallback import com.mogo.och.common.module.wigets.OCHBorderShadowLayout import com.mogo.och.taxi.passenger.R import com.mogo.och.taxi.passenger.bean.TaxiPassengerAllStarWorld import com.mogo.och.taxi.passenger.bean.TaxiPassengerScoreUpdateOrderReqBean import com.mogo.och.taxi.passenger.callback.ITaxiPassengerCommonCallback import com.mogo.och.taxi.passenger.callback.ITaxiPassengerScoreCallback -import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceCallback import com.mogo.och.taxi.passenger.network.TaxiPassengerServiceManager import com.mogo.och.taxi.passenger.ui.comment.adapter.CommentAdapter import com.mogo.och.taxi.passenger.widget.ResizeAnimation @@ -412,8 +412,8 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { } private fun requestStarWord() { - TaxiPassengerServiceManager.getInstance().getAllScoreWorld(context, - object : TaxiPassengerServiceCallback { + TaxiPassengerServiceManager.getAllScoreWorld(context, + object : OchCommonServiceCallback { override fun onError() { CallerLogger.e( SceneConstant.M_TAXI_P + TAG, @@ -436,8 +436,8 @@ class TaxiPassengerArrivedView :RelativeLayout, View.OnClickListener { } private fun requestStarWordByStar(start:Int) { - TaxiPassengerServiceManager.getInstance().getWorldByStar(context,start.toString(), - object : TaxiPassengerServiceCallback { + TaxiPassengerServiceManager.getWorldByStar(context,start.toString(), + object : OchCommonServiceCallback { override fun onError() { CallerLogger.e( SceneConstant.M_TAXI_P + TAG, diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml index e7dc22f64a..3887d99934 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml @@ -189,7 +189,7 @@ android:layout_marginTop="@dimen/dp_14" tools:text="蘑菇 3291号为您服务" android:textColor="@color/taxi_p_check_keyboard_samll_mogo_color" - android:textSize="@dimen/dp_24" + android:textSize="24px" app:layout_constraintStart_toStartOf="@+id/tv_small_mogo" app:layout_constraintTop_toBottomOf="@+id/tv_small_mogo" /> @@ -198,12 +198,12 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dp_84" - android:layout_marginTop="@dimen/dp_129" + android:layout_marginTop="308px" android:text="@string/taxi_p_check_input_phone_tail_title" android:textColor="@color/taxi_p_check_keyboard_samll_mogo_color" - android:textSize="@dimen/sp_36" + android:textSize="@dimen/dp_36" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/tv_taxi_number" /> + app:layout_constraintTop_toTopOf="parent" /> - - + app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_back" + app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_back" /> + app:layout_constraintStart_toEndOf="@+id/tv_taxi_passenger_number_zero" + app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_back" /> - - - - + app:layout_constraintHorizontal_chainStyle="packed" + app:layout_constraintStart_toStartOf="parent" /> + app:layout_constraintTop_toTopOf="@+id/tv_taxi_passenger_number_seven" /> + + + + + + + + + @@ -340,7 +347,7 @@ - - diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml index e50749e0fd..6776cc12e1 100644 --- a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml +++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml @@ -28,7 +28,7 @@