diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusQueryLineTaskResponse.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusQueryLineTaskResponse.java new file mode 100644 index 0000000000..4911c3cf99 --- /dev/null +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusQueryLineTaskResponse.java @@ -0,0 +1,19 @@ +package com.mogo.och.bus.bean; + +import com.mogo.eagle.core.data.BaseData; + +import java.util.List; + +/** + * @author: wangmingjun + * @date: 2022/2/9 + */ +public class BusQueryLineTaskResponse extends BaseData { + + public List data; + + public static class Result { + public int id; + public long taskStartTime; + } +} diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusQueryLinesResponse.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusQueryLinesResponse.java index 21dd901fc8..17540e3eed 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusQueryLinesResponse.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusQueryLinesResponse.java @@ -19,9 +19,9 @@ public class BusQueryLinesResponse extends BaseData { public String startSiteName;//始发站名称 public String endSiteName;//终点名称 - public boolean open; + public boolean open;//true 打开状态 false public boolean haveTask; - public List taskList; + public List taskList; } } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusResetDrivingLineRequest.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusResetDrivingLineRequest.java index c27264694f..6ab70768f9 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusResetDrivingLineRequest.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/bean/BusResetDrivingLineRequest.java @@ -9,10 +9,10 @@ import com.mogo.commons.network.Utils; */ public class BusResetDrivingLineRequest { public String sn; - public int lineId; //切换到的线路id + public int taskId; //切换到的线路id - public BusResetDrivingLineRequest(int lineId) { - sn = MoGoAiCloudClientConfig.getInstance().getSn(); - this.lineId = lineId; + public BusResetDrivingLineRequest(int taskId) { + this.sn = MoGoAiCloudClientConfig.getInstance().getSn(); + this.taskId = taskId; } } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/callback/IBusLinesCallback.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/callback/IBusLinesCallback.java index 805a359757..74cac63aa3 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/callback/IBusLinesCallback.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/callback/IBusLinesCallback.java @@ -1,5 +1,6 @@ package com.mogo.och.bus.callback; +import com.mogo.och.bus.bean.BusQueryLineTaskResponse; import com.mogo.och.bus.bean.BusQueryLinesResponse; /** @@ -9,5 +10,5 @@ import com.mogo.och.bus.bean.BusQueryLinesResponse; public interface IBusLinesCallback { void onBusLinesChange(BusQueryLinesResponse lines); void onChangeLineIdSuccess(); - void onBusLineTasks(BusQueryLinesResponse o, int position); + void onBusLineTasks(BusQueryLineTaskResponse o, int position); } 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 7278755f1a..b03625c1c7 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 @@ -1,17 +1,22 @@ package com.mogo.och.bus.fragment; import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_BUS; +import static com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant.M_TAXI; import android.content.Intent; +import android.os.Bundle; import android.view.View; import android.widget.TextView; import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.commons.AbsMogoApplication; import com.mogo.commons.voice.AIAssist; import com.mogo.eagle.core.data.map.CenterLine; import com.mogo.eagle.core.data.temp.EventBusOperation; +import com.mogo.eagle.core.data.temp.EventLogout; import com.mogo.eagle.core.function.api.autopilot.IMoGoAutopilotStatusListener; import com.mogo.eagle.core.function.call.autopilot.CallerAutoPilotStatusListenerManager; import com.mogo.eagle.core.function.call.hmi.CallerHmiManager; @@ -27,6 +32,8 @@ import com.mogo.och.bus.constant.BusConst; import com.mogo.och.bus.presenter.BusPresenter; import com.mogo.och.bus.ui.BusSwitchLineActivity; import com.mogo.och.bus.view.SlidePanelView; +import com.mogo.och.common.module.biz.constant.OchCommonConst; +import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.common.module.utils.OCHThreadPoolManager; import org.greenrobot.eventbus.Subscribe; @@ -34,8 +41,6 @@ import org.greenrobot.eventbus.ThreadMode; import java.util.List; -import mogo.telematics.pad.MessagePad; - /** * 网约车小巴界面 @@ -59,11 +64,28 @@ public class BusFragment extends BaseBusTabFragment private BusStationBean startStation = null; private BusStationBean endStation = null; + private LoginService loginService; + @Override public String getTagName() { return "BusFragment"; } + @Override + public void onActivityCreated(@Nullable Bundle savedInstanceState) { + super.onActivityCreated(savedInstanceState); + loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation(); + if(loginService!=null){ + loginService.registerFragment(this, getPresenter()); + } + } + @Override + public void onDestroyView() { + super.onDestroyView(); + loginService.unRegisterFragment(); + loginService = null; + } + @Override protected void initViews() { super.initViews(); @@ -101,6 +123,12 @@ public class BusFragment extends BaseBusTabFragment } } + @Subscribe(threadMode = ThreadMode.MAIN) + public void changeOverview(EventLogout eventLogout){ + CallerLogger.INSTANCE.d(M_TAXI + TAG,"changeOverview Event消息去登出"); + mPresenter.logout(); + } + @Override protected void onArriveStation() { mPresenter.onAutopilotArriveAtStation(null); 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 54014f9f5a..96e3308475 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 @@ -4,12 +4,15 @@ import android.content.Context; import com.mogo.commons.AbsMogoApplication; import com.mogo.eagle.core.utilcode.util.NetworkUtils; +import com.mogo.eagle.core.utilcode.util.SharedPrefs; import com.mogo.eagle.core.utilcode.util.ToastUtils; +import com.mogo.och.bus.bean.BusQueryLineTaskResponse; 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; /** * @author: wangmingjun @@ -69,9 +72,9 @@ public class BusLineModel { * @param position 位置 */ public void queryBusLineTasksById(int lineId, int position){ - BusServiceManager.getInstance().queryBusLines(mContext, new IBusServiceCallback() { + BusServiceManager.getInstance().queryBusTaskByLineId(mContext, String.valueOf(lineId),new IBusServiceCallback() { @Override - public void onSuccess(BusQueryLinesResponse data) { + public void onSuccess(BusQueryLineTaskResponse data) { if (null == data && mBusLinesCallback != null) { mBusLinesCallback.onBusLineTasks(null,position); return; @@ -93,10 +96,11 @@ public class BusLineModel { }); } - public void commitSwitchLineId(int lineId){ - BusServiceManager.getInstance().switchLine(mContext,lineId, new IBusServiceCallback() { + public void commitSwitchLineId(int taskId,int lineId){ + BusServiceManager.getInstance().switchLine(mContext,taskId, new IBusServiceCallback() { @Override public void onSuccess(BusRoutesResponse o) { + SharedPrefs.getInstance(mContext).putInt(BusSwitchLineActivity.LASTCOMMITLINEID,lineId); if (mBusLinesCallback != null){ mBusLinesCallback.onChangeLineIdSuccess(); } 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 f8e5b3bd17..3294442a68 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 @@ -14,6 +14,7 @@ import android.text.TextUtils; import androidx.annotation.NonNull; +import com.alibaba.android.arouter.launcher.ARouter; import com.amap.api.maps.model.LatLng; import com.elegant.network.utils.GsonUtil; import com.mogo.cloud.commons.utils.CoordinateUtils; @@ -53,6 +54,8 @@ 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.provider.LoginService; import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; import com.mogo.service.statusmanager.IMogoStatusChangedListener; @@ -116,6 +119,8 @@ public class BusOrderModel { private volatile boolean isArrivedStation = false; + private LoginService loginService; + private final Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { @@ -144,6 +149,7 @@ public class BusOrderModel { public void init() { mContext = AbsMogoApplication.getApp(); + loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation(); // 2021/10/20 衡阳小巴业务,使用LenovoPad时需要此app自己获取坐标并上传 String productFlavor = DebugConfig.getProductFlavor(); if (productFlavor != null && productFlavor.contains("fPadLenovoOchBus")) { @@ -351,6 +357,7 @@ public class BusOrderModel { //自动驾驶路线规划接口 CallerAutopilotPlanningListenerManager.INSTANCE.removeListener(moGoAutopilotPlanningListener); + loginService = null; } private Object readResolve() { @@ -998,6 +1005,11 @@ public class BusOrderModel { } } + // 登出 + public void logout() { + loginService.loginOut(mLatitude,mLongitude); + } + public void triggerStartServiceEvent(boolean isRestart, boolean send) { if (stationList == null || backgroundCurrentStationIndex >= stationList.size()-1) { return; 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 index 44284cb122..a35c16e7bf 100644 --- 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 @@ -10,6 +10,7 @@ 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.BusQueryLineTaskResponse; import com.mogo.och.bus.bean.BusQueryLinesResponse; import com.mogo.och.bus.bean.BusResetLineStatusRequest; import com.mogo.och.bus.bean.BusRoutePlanningUpdateReqBean; @@ -72,12 +73,12 @@ public class BusServiceManager { /** * 重置线路站点 * @param context - * @param lineId + * @param taskId * @param callback */ - public void switchLine(Context context, int lineId, IBusServiceCallback callback){ + public void switchLine(Context context, int taskId, IBusServiceCallback callback){ mService.switchLine(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken(),new BusResetDrivingLineRequest(lineId)) + ,MoGoAiCloudClientConfig.getInstance().getToken(),new BusResetDrivingLineRequest(taskId)) .subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()) .subscribe(getSubscribeImpl(context,callback,"debugResetStationStatus")); } @@ -211,6 +212,15 @@ public class BusServiceManager { .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){ diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusApiService.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusApiService.java index 291fb9f67f..9501ae03a5 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusApiService.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/net/IBusApiService.java @@ -2,6 +2,7 @@ package com.mogo.och.bus.net; import com.mogo.eagle.core.data.BaseData; import com.mogo.och.bus.bean.BusOperationStatusRequest; import com.mogo.och.bus.bean.BusOrdersResponse; +import com.mogo.och.bus.bean.BusQueryLineTaskResponse; import com.mogo.och.bus.bean.BusQueryLinesResponse; import com.mogo.och.bus.bean.BusResetLineStatusRequest; import com.mogo.och.bus.bean.BusRoutePlanningUpdateReqBean; @@ -45,11 +46,10 @@ public interface IBusApiService { /** * @param request 请求参数{"destLine":1,"sn":"F803EB2046PZD00229"} 这个接口是重置bus线路的, 不是重置线路中站点的 * @return 返回值是重置后的车站列表 + * 开始路线 */ @Headers( {"Content-Type:application/json;charset=UTF-8"} ) -// @POST( "/autopilot-car-hailing/car/v2/bus/drivingLine/reset" ) - @POST( "/autopilot-car-hailing/car/v2/driver/bus/drivingLine/reset" ) -// @POST( "/mock/268/autopilot-car-hailing/bus/api/drivingLine/reset" ) + @POST( "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startTask" ) Observable switchLine(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusResetDrivingLineRequest request); /** @@ -142,10 +142,20 @@ public interface IBusApiService { * @param sn * @return */ -// @GET("/autopilot-car-hailing/line/v2/driver/bindLine/query") @GET("/autopilot-car-hailing/line/v2/driver/bus/bindLine/query") Observable queryBusLines(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("sn") String sn); + /** + * 查询路线当天的任务 + * @param appId + * @param ticket + * @param lineId 线路id + * @return + */ + @GET("/autopilot-car-hailing/line/v2/driver/bus/task/query") + Observable queryBusTaskByLineId(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("lineId") String lineId); + + @Headers( {"Content-type:application/json;charset=UTF-8"} ) @POST( "/autopilot-car-hailing/location/v2/driver/bus/saveLineCoordinate" ) Observable updateOrderRoute(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusRoutePlanningUpdateReqBean data); diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java index 5fb1485874..7f1a70a0d1 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusLinePresenter.java @@ -7,18 +7,26 @@ import androidx.lifecycle.LifecycleOwner; import com.mogo.commons.mvp.Presenter; import com.mogo.eagle.core.utilcode.util.UiThreadHandler; +import com.mogo.och.bus.bean.BusQueryLineTaskResponse; import com.mogo.och.bus.bean.BusQueryLinesResponse; import com.mogo.och.bus.callback.IBusLinesCallback; import com.mogo.och.bus.model.BusLineModel; import com.mogo.och.bus.model.BusOrderModel; import com.mogo.och.bus.ui.BusSwitchLineView; +import java.util.concurrent.TimeUnit; + +import io.reactivex.Observable; +import io.reactivex.disposables.Disposable; + /** * @author: wangmingjun * @date: 2022/2/9 */ public class BusLinePresenter extends Presenter implements IBusLinesCallback { + private Disposable subscribe; + public BusLinePresenter(BusSwitchLineView view) { super(view); BusLineModel.getInstance().init(); @@ -61,12 +69,21 @@ public class BusLinePresenter extends Presenter implements IB BusLineModel.getInstance().queryBusLines(); } - public void queryBusLineTasks(int lineId, int position){ + public void queryBusLineTasks(int lineId, int position,boolean close){ + if(subscribe!=null&&!subscribe.isDisposed()){ + subscribe.dispose(); + } + if(close){ + return; + } BusLineModel.getInstance().queryBusLineTasksById(lineId,position); + subscribe = Observable.interval(5, TimeUnit.SECONDS).subscribe(aLong -> { + BusLineModel.getInstance().queryBusLineTasksById(lineId,position); + }); } - public void commitSwitchLineId(int lineId){ - BusLineModel.getInstance().commitSwitchLineId(lineId); + public void commitSwitchLineId(int taskId,int lineId){ + BusLineModel.getInstance().commitSwitchLineId(taskId,lineId); } public void removeListener(){ @@ -80,11 +97,14 @@ public class BusLinePresenter extends Presenter implements IB @Override public void onDestroy(@NonNull LifecycleOwner owner) { super.onDestroy(owner); + if(subscribe!=null&&!subscribe.isDisposed()){ + subscribe.dispose(); + } } @Override - public void onBusLineTasks(BusQueryLinesResponse o, int position) { + public void onBusLineTasks(BusQueryLineTaskResponse o, int position) { mView.onBusLineTasks(o,position); } } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java index 15b161f032..126a97dd83 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/presenter/BusPresenter.java @@ -24,6 +24,8 @@ import com.mogo.och.bus.callback.ISlidePannelHideCallback; import com.mogo.och.bus.fragment.BusFragment; import com.mogo.och.bus.model.BusOrderModel; import com.mogo.och.bus.util.BusTrajectoryManager; +import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean; +import com.mogo.och.common.module.biz.callback.ILoginCallback; import org.jetbrains.annotations.NotNull; @@ -41,7 +43,7 @@ import system_master.SystemStatusInfo; */ public class BusPresenter extends Presenter implements ICarOperationStatusCallback, IRefreshBusStationsCallback, ISlidePannelHideCallback - , IMoGoAutopilotStatusListener, IBusControllerStatusCallback { + , IMoGoAutopilotStatusListener, IBusControllerStatusCallback, ILoginCallback { private static final String TAG = "BusPresenter"; @@ -116,6 +118,11 @@ public class BusPresenter extends Presenter BusOrderModel.getInstance().onChangeOperationStatus(); } + // 登出 + public void logout() { + BusOrderModel.getInstance().logout(); + } + @Override public void changeOperationStatus(boolean changeStatus) { if (mView != null) { @@ -295,4 +302,14 @@ public class BusPresenter extends Presenter public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) { } + + @Override + public void loginSuccess(DriverStatusQueryRespBean data) { + + } + + @Override + public void loginFail(boolean isLogin) { + + } } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineActivity.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineActivity.kt index 0b5e58c53c..976bc2711e 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineActivity.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineActivity.kt @@ -1,233 +1,210 @@ -package com.mogo.och.bus.ui; +package com.mogo.och.bus.ui -import android.content.Context; -import android.graphics.Point; -import android.os.Bundle; -import android.view.Gravity; -import android.view.View; -import android.view.ViewGroup; -import android.view.Window; -import android.view.WindowManager; -import android.widget.ImageView; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.constraintlayout.widget.ConstraintLayout; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.commons.mvp.MvpActivity; -import com.mogo.eagle.core.utilcode.util.ToastUtils; -import com.mogo.module.common.view.SpacesItemDecoration; -import com.mogo.och.bus.R; -import com.mogo.och.bus.bean.BusQueryLinesResponse; -import com.mogo.och.bus.presenter.BusLinePresenter; -import com.mogo.och.bus.ui.adapter.OpenItemAnimator; -import com.mogo.och.bus.ui.adapter.SwitchLineAdapter; - -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.TimeUnit; - -import io.reactivex.Observable; -import io.reactivex.disposables.Disposable; +import android.graphics.Point +import android.os.Bundle +import android.view.Gravity +import android.view.View +import android.view.ViewGroup +import android.view.WindowManager +import android.widget.ImageView +import android.widget.TextView +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.mogo.commons.mvp.MvpActivity +import com.mogo.eagle.core.utilcode.util.SharedPrefs +import com.mogo.och.bus.presenter.BusLinePresenter +import com.mogo.och.bus.ui.adapter.SwitchLineAdapter +import com.mogo.och.bus.bean.BusQueryLinesResponse +import com.mogo.och.bus.ui.adapter.OpenItemAnimator +import com.mogo.module.common.view.SpacesItemDecoration +import com.mogo.eagle.core.utilcode.util.ToastUtils +import com.mogo.och.bus.R +import com.mogo.och.bus.bean.BusQueryLineTaskResponse +import java.util.ArrayList /** * @author: wangmingjun * @date: 2022/2/8 */ -public class BusSwitchLineActivity extends MvpActivity - implements View.OnClickListener, BusSwitchLineView { +class BusSwitchLineActivity : MvpActivity(), + View.OnClickListener, BusSwitchLineView { - private ImageView mClose; - private ConstraintLayout mNoDatasView; - private RecyclerView mLinesListView; - private TextView mLineCommitBtn; - private SwitchLineAdapter mAdapter; - private List mData = new ArrayList<>(); - private int mSelectLineId = -1; - - private Disposable subscribe; - - @Override - protected int getLayoutId() { - return R.layout.activity_bus_switch_line; + companion object{ + const val LASTCOMMITLINEID = "lastcommitlineid" } - @NonNull - @Override - protected BusLinePresenter createPresenter() { - return new BusLinePresenter(this); + private lateinit var mClose: ImageView + private lateinit var mNoDatasView: ConstraintLayout + private lateinit var mLinesListView: RecyclerView + private lateinit var mLineCommitBtn: TextView + private lateinit var mAdapter: SwitchLineAdapter + private lateinit var linearLayoutManager:LinearLayoutManager + private val mData: MutableList = ArrayList() + override fun getLayoutId(): Int { + return R.layout.activity_bus_switch_line } - @Override - protected void initViews() { - initWH(); - initView(); + override fun createPresenter(): BusLinePresenter { + return BusLinePresenter(this) } - @Override - protected void onCreate(@Nullable Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - initDatas(); + override fun initViews() { + initWH() + initView() + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + initDatas() } /** * 初始化view */ - private void initView() { - mClose = findViewById(R.id.switch_line_close); - mClose.setOnClickListener(this); - mNoDatasView = findViewById(R.id.no_order_data_view); - - mLineCommitBtn = findViewById(R.id.switch_line_btn_commit); - mLineCommitBtn.setOnClickListener(this); - - mLinesListView = findViewById(R.id.switch_line_rv); - mLinesListView.setLayoutManager(new LinearLayoutManager(this)); - mLinesListView.setItemAnimator(new OpenItemAnimator()); - mAdapter = new SwitchLineAdapter(getApplicationContext(),mData); - mLinesListView.addItemDecoration(new SpacesItemDecoration(4)); - mLinesListView.setAdapter(mAdapter); + private fun initView() { + mClose = findViewById(R.id.switch_line_close) + mClose.setOnClickListener(this) + mNoDatasView = findViewById(R.id.no_order_data_view) + mLineCommitBtn = findViewById(R.id.switch_line_btn_commit) + mLineCommitBtn.setOnClickListener(this) + mLinesListView = findViewById(R.id.switch_line_rv) + linearLayoutManager = LinearLayoutManager(this) + mLinesListView.setLayoutManager(linearLayoutManager) + mLinesListView.setItemAnimator(OpenItemAnimator()) + mAdapter = SwitchLineAdapter(applicationContext, mData) + mLinesListView.addItemDecoration(SpacesItemDecoration(4)) + mLinesListView.setAdapter(mAdapter) //设置item 点击事件 - mAdapter.setOnLineItemClickListener((position) -> { - mPresenter.queryBusLineTasks(mData.get(position).lineId,position); - if(subscribe!=null&&!subscribe.isDisposed()){ - subscribe.dispose(); + mAdapter.setOnLineItemClickListener(object :SwitchLineAdapter.LineItemClickListener{ + override fun onItemClick(position: Int, close: Boolean) { + mPresenter?.queryBusLineTasks(mData[position].lineId, position, close) } - subscribe = Observable.timer(3, TimeUnit.MINUTES).subscribe(aLong -> { - mPresenter.queryBusLineTasks(mData.get(position).lineId,position); - }); - }); + }) } /** * 设置布局宽高 */ - private void initWH() { - - Window window = getWindow(); - - WindowManager.LayoutParams params = window.getAttributes(); - WindowManager windowManager = (WindowManager)getSystemService(Context.WINDOW_SERVICE); - Point point = new Point(); - windowManager.getDefaultDisplay().getSize(point);//用于获取屏幕高度 - - params.width = (int)(point.x * 0.375); - params.height = ViewGroup.LayoutParams.MATCH_PARENT; - window.setAttributes(params); - window.setGravity(Gravity.LEFT|Gravity.BOTTOM); + private fun initWH() { + val window = window + val params = window.attributes + val windowManager = getSystemService(WINDOW_SERVICE) as WindowManager + val point = Point() + windowManager.defaultDisplay.getSize(point) //用于获取屏幕高度 + params.width = (point.x * 0.375).toInt() + params.height = ViewGroup.LayoutParams.MATCH_PARENT + window.attributes = params + window.setGravity(Gravity.START or Gravity.BOTTOM) } /** * 初始化数据 */ - private void initDatas() { - mPresenter.queryBusLines(); + private fun initDatas() { + mPresenter?.queryBusLines() } /** * 查询返回绑定路线集合 * @param data */ - @Override - public void onBusLinesChange(BusQueryLinesResponse data){ - if (null == data){ - showNoData(true); - return; + override fun onBusLinesChange(data: BusQueryLinesResponse?) { + if (null == data) { + showNoData(true) + return } - if (data.data != null && data.data.size() > 0){ - showNoData(false); - mData.clear(); - mData.addAll(data.data); - mAdapter.notifyDataSetChanged(); - changeCommitBtnBg(); - }else { - showNoData(true); + var lastCommitLineid = SharedPrefs.getInstance(this).getInt(LASTCOMMITLINEID, -1) + if (data.data != null && data.data.size > 0) { + showNoData(false) + mData.clear() + mData.addAll(data.data) + mAdapter.notifyDataSetChanged() + if(lastCommitLineid>0){ + mData.forEachIndexed { index, line -> + if(line.lineId==lastCommitLineid){ + line.open = true + mPresenter?.queryBusLineTasks(line.lineId,index,false) + return + } + } + } + } else { + showNoData(true) } } - /** - * 根据路线选中情况设置提交按钮样式 - */ - private void changeCommitBtnBg() { - for (int i=0; i(); - } - if(o.data.size()!=result.taskList.size()) {// 不相等有变动 重新赋值 - result.taskList.clear(); - if (position % 3 != 0) { - result.taskList.addAll(o.data); - result.haveTask = false; - } else { - result.haveTask = true; + if (lineTaskInfo == null) { + result.haveTask = true + // 打开操作 + mAdapter.notifyItemChanged(position) + } else { + if (lineTaskInfo.data == null || lineTaskInfo.data.isEmpty()) { + result.haveTask = true + lineTaskInfo.data = ArrayList() + } + if (lineTaskInfo.data.size != result.taskList.size) { // 不相等有变动 重新赋值 + result.taskList.clear() + result.taskList.addAll(lineTaskInfo.data) + // 打开操作 + mAdapter.notifyItemChanged(position) + if(position==mData.size-1||position==mData.size-2){ + linearLayoutManager.stackFromEnd = true + }else{ + linearLayoutManager.stackFromEnd = false + } + mLinesListView.scrollToPosition(position) } } - mAdapter.notifyItemChanged(position); } /** * 有无数据UI显示 * @param b */ - private void showNoData(boolean b) { - if (b){ - mLinesListView.setVisibility(View.GONE); - mLineCommitBtn.setVisibility(View.GONE); - mNoDatasView.setVisibility(View.VISIBLE); - }else { - mLinesListView.setVisibility(View.VISIBLE); - mLineCommitBtn.setVisibility(View.VISIBLE); - mNoDatasView.setVisibility(View.GONE); + private fun showNoData(b: Boolean) { + if (b) { + mLinesListView.visibility = View.GONE + mLineCommitBtn.visibility = View.GONE + mNoDatasView.visibility = View.VISIBLE + } else { + mLinesListView.visibility = View.VISIBLE + mLineCommitBtn.visibility = View.VISIBLE + mNoDatasView.visibility = View.GONE } } - @Override - public void onClick(View v) { + override fun onClick(v: View) { //关闭dialog - if (v.getId() == R.id.switch_line_close){ - finish(); - return; + if (v.id == R.id.switch_line_close) { + finish() + return } //切换路线提交 - if (v.getId() == R.id.switch_line_btn_commit){ - if (mSelectLineId > -1){ - mPresenter.commitSwitchLineId(mSelectLineId); - }else { - finish(); + if (v.id == R.id.switch_line_btn_commit) { + if(mAdapter.checkLineId!=-1&&mAdapter.checkTaskId!=-1){ + mPresenter?.commitSwitchLineId(mAdapter.checkTaskId,mAdapter.checkLineId) + }else{ + ToastUtils.showLong("请选择时间") } } } - @Override - protected void onDestroy() { - super.onDestroy(); - if(subscribe!=null&&!subscribe.isDisposed()){ - subscribe.dispose(); - } + override fun onDestroy() { + mPresenter!!.removeListener() + super.onDestroy() } -} +} \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineView.java b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineView.java index 14309a101f..e71474dcc7 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineView.java +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/BusSwitchLineView.java @@ -1,6 +1,7 @@ package com.mogo.och.bus.ui; import com.mogo.commons.mvp.IView; +import com.mogo.och.bus.bean.BusQueryLineTaskResponse; import com.mogo.och.bus.bean.BusQueryLinesResponse; /** @@ -12,6 +13,6 @@ public interface BusSwitchLineView extends IView { void onBusLinesChange(BusQueryLinesResponse data); void onChangeLineIdSuccess(); - void onBusLineTasks(BusQueryLinesResponse o, int position); + void onBusLineTasks(BusQueryLineTaskResponse o, int position); } diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt index 45f0d1b1fb..c6dd0640e5 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineAdapter.kt @@ -24,6 +24,8 @@ class SwitchLineAdapter( } // RecyclerView设置点击事件 private var mItemClickListener: LineItemClickListener? = null + var checkLineId:Int = -1 + var checkTaskId:Int = -1 override fun onCreateViewHolder( parent: ViewGroup, viewType: Int @@ -40,11 +42,21 @@ class SwitchLineAdapter( holder.lineName.text = line.name holder.lineEndName.text = mContext.getString(R.string.bus_line_goto_end, line.endSiteName) holder.rvLineTask.layoutManager = GridLayoutManager(mContext, 3) - val switchLineTaskAdapter = - SwitchLineTaskAdapter( - mContext, - line.taskList - ) + val switchLineTaskAdapter = SwitchLineTaskAdapter( + mContext, + checkTaskId, + line.taskList, + object : SwitchLineTaskAdapter.TaskItemClickListener { + override fun onItemClick(position: Int,isCheck:Boolean) { + if(isCheck) { + checkLineId = line.lineId + checkTaskId = line.taskList[position].id + }else{ + checkLineId=-1 + checkTaskId=-1 + } + } + }) holder.rvLineTask.adapter = switchLineTaskAdapter holder.rvLineTask.isFocusableInTouchMode = false holder.actvShowMore.visibility = View.VISIBLE @@ -95,18 +107,19 @@ class SwitchLineAdapter( if(holder.actvShowMore.text==mContext.getString(R.string.bus_switch_line_no_task)){ return@setOnClickListener } - closeOther() - mItemClickListener?.onItemClick(currentPosition) - line.open = holder.rvLineTask.visibility == View.GONE - } - } - - private fun closeOther() { - mData.forEachIndexed { index, result -> - if(result.open){ - result.open = false; - notifyItemChanged(index) + mData.forEachIndexed { index, result -> + if(result.open){ + result.open = false; + notifyItemChanged(index) + result.taskList.clear() + if(index==currentPosition){// 点击当前已经打开的item 去关闭定时网络请求 + mItemClickListener?.onItemClick(currentPosition,true) + return@setOnClickListener + } + } } + mItemClickListener?.onItemClick(currentPosition,false) + line.open = holder.rvLineTask.visibility == View.GONE } } @@ -137,6 +150,6 @@ class SwitchLineAdapter( } interface LineItemClickListener { - fun onItemClick(position: Int) + fun onItemClick(position: Int,close:Boolean) } } \ No newline at end of file diff --git a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineTaskAdapter.kt b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineTaskAdapter.kt index c4abd05426..8183e0efd4 100644 --- a/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineTaskAdapter.kt +++ b/OCH/mogo-och-bus/src/main/java/com/mogo/och/bus/ui/adapter/SwitchLineTaskAdapter.kt @@ -1,73 +1,76 @@ -package com.mogo.och.bus.ui.adapter; +package com.mogo.och.bus.ui.adapter - -import android.content.Context; -import android.view.LayoutInflater; -import android.view.View; -import android.view.ViewGroup; -import android.widget.TextView; - -import androidx.annotation.NonNull; -import androidx.recyclerview.widget.RecyclerView; - -import com.mogo.och.bus.R; -import com.mogo.och.bus.bean.BusQueryLinesResponse; - -import java.util.List; +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.mogo.eagle.core.utilcode.util.TimeUtils +import com.mogo.och.bus.R +import com.mogo.och.bus.bean.BusQueryLineTaskResponse +import com.mogo.och.bus.ui.adapter.SwitchLineTaskAdapter.SwitchLineTaskViewHolder /** * 路线列表adapter */ -public class SwitchLineTaskAdapter extends RecyclerView.Adapter { - - private Context mContext; - private List mData; - - public SwitchLineTaskAdapter(Context context, List data) { - mContext = context; - mData = data; +class SwitchLineTaskAdapter( + private val mContext: Context, + private var checkTaskId:Int, + private val mData: List?, + private val mTaskItemClickListener: TaskItemClickListener? +) : RecyclerView.Adapter() { + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SwitchLineTaskViewHolder { + val view = LayoutInflater.from(mContext).inflate( + R.layout.bus_switch_line_list_task_item, parent, false + ) + return SwitchLineTaskViewHolder(view) } - @NonNull - @Override - public SwitchLineTaskViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { - View view = LayoutInflater.from(mContext).inflate(R.layout.bus_switch_line_list_task_item - , parent, false); - return new SwitchLineTaskViewHolder(view); - } - - @Override - public void onBindViewHolder(@NonNull SwitchLineTaskViewHolder holder, int position) { - int currentPosition = holder.getBindingAdapterPosition(); - BusQueryLinesResponse.Result line = mData.get(currentPosition); - holder.lineTask.setText("13:40"); - holder.lineTask.setOnClickListener(new View.OnClickListener() { - @Override - public void onClick(View v) { - + override fun onBindViewHolder(holder: SwitchLineTaskViewHolder, position: Int) { + val currentPosition = holder.bindingAdapterPosition + val task = mData!![currentPosition] + val taskStartTime = TimeUtils.millis2String(task.taskStartTime, "HH:mm") + holder.lineTask.text = taskStartTime + if(checkTaskId==task.id){ + holder.lineTask.setBackgroundResource(R.drawable.bus_shape_select_line_item_time_bg_selected) + }else{ + holder.lineTask.setBackgroundResource(R.drawable.bus_shape_select_line_item_time_bg) + } + holder.lineTask.setOnClickListener { + if(checkTaskId==task.id){ + checkTaskId = -1 + mTaskItemClickListener?.onItemClick(currentPosition,false) + }else { + resetOther() + checkTaskId = task.id + mTaskItemClickListener?.onItemClick(currentPosition,true) } - }); - } - - @Override - public int getItemCount() { - return mData==null?0:mData.size(); - } - - static class SwitchLineTaskViewHolder extends RecyclerView.ViewHolder { - - private TextView lineTask; // 时间 - - public SwitchLineTaskViewHolder(@NonNull View itemView) { - super(itemView); - lineTask = itemView.findViewById(R.id.actv_line_task); + notifyItemChanged(currentPosition) } } - public interface LineItemClickListener { - void onItemClick(int position) ; + private fun resetOther() { + mData?.forEachIndexed { index, result -> + if(result.id==checkTaskId){ + checkTaskId = -1 + notifyItemChanged(index) + } + } } -} + override fun getItemCount(): Int { + return mData?.size ?: 0 + } + class SwitchLineTaskViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + val lineTask: TextView // 时间 + init { + lineTask = itemView.findViewById(R.id.actv_line_task) + } + } + interface TaskItemClickListener { + fun onItemClick(position: Int,isCheck:Boolean) + } +} \ No newline at end of file diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/DriverStatusQueryRespBean.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/DriverStatusQueryRespBean.java index 903fece224..e7a3138fd1 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/DriverStatusQueryRespBean.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/bean/DriverStatusQueryRespBean.java @@ -15,5 +15,11 @@ public class DriverStatusQueryRespBean extends BaseData { public int driverStatus; //1登录,0登出 public String orderNo; public int purpose; // 1 运营, 2 测试, 3演示 + + public String sn; + public String plateNumber;//车牌号 + public String phone;//手机号 + public String lineId;//线路id + public String taskId;//任务id } } diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt index 55a0b5cc2a..6e1891710e 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/constant/OchCommonConst.kt @@ -24,5 +24,7 @@ class OchCommonConst { // token 失效 重新获取token const val WAIT_TAKEN = 100046 + const val LOGINSERVICE = "/ochbiz/common/login" + } } \ No newline at end of file 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 08f1acc43f..b9874084bc 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 @@ -4,6 +4,7 @@ import android.annotation.SuppressLint import android.content.Context import com.mogo.eagle.core.data.BaseData import com.mogo.eagle.core.utilcode.util.NetworkUtils +import com.mogo.eagle.core.utilcode.util.SharedPrefs import com.mogo.eagle.core.utilcode.util.ToastUtils import com.mogo.map.navi.IMogoCarLocationChangedListener2 import com.mogo.module.common.MogoApisHandler @@ -106,6 +107,9 @@ object OchCommonLoginModel{ // 获取验证码成功 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) { diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt index c935981982..10348b6b2b 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/model/OchCommonLoginStatusDefaultModel.kt @@ -3,6 +3,7 @@ package com.mogo.och.common.module.biz.model import android.annotation.SuppressLint import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant +import com.mogo.eagle.core.utilcode.util.SharedPrefs import com.mogo.och.common.module.biz.bean.DriverStatusQueryRespBean import com.mogo.och.common.module.biz.callback.ILoginCallback import com.mogo.och.common.module.biz.callback.ILoginViewCallback @@ -21,8 +22,10 @@ object OchCommonLoginStatusDefaultModel : OchCommonLoginStatusModel() { override fun loginSuccess(data: DriverStatusQueryRespBean?) { CallerLogger.d(SceneConstant.M_TAXI + TAG, "loginSuccess:${LoginStatusManager.isLogin()}") if (LoginStatusManager.isLogin()) { + SharedPrefs.getInstance(mContext).putString("och_account", data?.data?.phone) loginViewCallback?.hideLoginDialogFragment() } else { + SharedPrefs.getInstance(mContext).putString("och_account", "") loginViewCallback?.showLoginDialogFragment() } loginCallback?.loginSuccess(data) diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceApiNew.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceApiNew.java index da32fc85be..d31f624578 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceApiNew.java +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/network/OchCommonServiceApiNew.java @@ -12,6 +12,7 @@ import retrofit2.http.GET; import retrofit2.http.Header; import retrofit2.http.Headers; import retrofit2.http.POST; +import retrofit2.http.Path; import retrofit2.http.Query; /** @@ -26,7 +27,6 @@ interface OchCommonServiceApiNew { * @return */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) -// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" ) @POST( "/autopilot-car-hailing/driver/v2/driver/taxi/sendSms" ) Observable getPhoneCode(@Header("appId") String appId , @Header("ticket") String ticket, @Body TaxiLoginSmsReqBean data); @@ -39,25 +39,43 @@ interface OchCommonServiceApiNew { */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) @POST( "/autopilot-car-hailing/cab/flow/v1/driver/taxi/startOperation" ) - Observable gotoLoginBycode(@Header("appId") String appId + Observable gotoLoginBycode4Taxi(@Header("appId") String appId + , @Header("ticket") String ticket, @Body TaxiLoginReqBean data); + + /** + * 通过验证码登录 + * @param appId + * @param ticket + * @param data + * @return + */ + @Headers( {"Content-type:application/json;charset=UTF-8"} ) + @POST( "/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/startOperation" ) + Observable gotoLoginBycode4Bus(@Header("appId") String appId , @Header("ticket") String ticket, @Body TaxiLoginReqBean data); /** * 登出接口 */ @Headers({"Content-type:application/json;charset=UTF-8"}) @POST("/autopilot-car-hailing/cab/flow/v1/driver/taxi/endOperation") - Observable logout(@Header("appId") String appId, @Header("ticket") String ticket, + Observable logout4Taxi(@Header("appId") String appId, @Header("ticket") String ticket, + @Body TaxiLogoutReqBean data); + /** + * 登出接口 + */ + @Headers({"Content-type:application/json;charset=UTF-8"}) + @POST("/autopilot-car-hailing/cab/flow/v1/bus/driver/bus/endOperation") + Observable logout4Bus(@Header("appId") String appId, @Header("ticket") String ticket, @Body TaxiLogoutReqBean data); /** - * 接单状态和登录状态查询 + * 接单状态和登录状态查询 出租车司机端、小巴车司机端、小巴车乘客端 * @param sn * @return */ @Headers( {"Content-type:application/json;charset=UTF-8"} ) -// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" ) - @GET( "/autopilot-car-hailing/operation/v1/driver/taxi/loginStatus" ) - Observable queryDriverServiceStatusAndLoginStatus(@Header ("appId") String appId - ,@Header("ticket") String ticket,@Query("sn") String sn); + @GET( "/autopilot-car-hailing/operation/v1/driver/{flavor}/loginStatus") + Observable queryDriverServiceStatusAndLoginStatus(@Path(value = "flavor",encoded = true) String flavor,@Header ("appId") String appId + , @Header("ticket") String ticket, @Query("sn") String sn); } 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 index 668f781253..ecc0129cfe 100644 --- 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 @@ -6,6 +6,7 @@ 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; @@ -18,6 +19,7 @@ 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; @@ -48,8 +50,8 @@ public class OchCommonServiceManager { * @param context * @param callback */ - public void getPhoneCode(Context context,String phone, - OchCommonServiceCallback callback) { + public void getPhoneCode(Context context, String phone, + OchCommonServiceCallback callback) { mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId() , MoGoAiCloudClientConfig.getInstance().getToken() , new TaxiLoginSmsReqBean(phone)) @@ -66,56 +68,98 @@ public class OchCommonServiceManager { TaxiLoginReqBean.Location4Login location4Login, OchCommonServiceCallback callback) { String sn = MoGoAiCloudClientConfig.getInstance().getSn(); - mOCHTaxiServiceApi.gotoLoginBycode(MoGoAiCloudClientConfig.getInstance().getServiceAppId() + Observable taxiLoginRespBeanObservable = null; + switch (DebugConfig.getProductFlavor()) { + case "fPadLenovoOchTaxi": {//出租车司机 + taxiLoginRespBeanObservable = mOCHTaxiServiceApi.gotoLoginBycode4Taxi(MoGoAiCloudClientConfig.getInstance().getServiceAppId() , MoGoAiCloudClientConfig.getInstance().getToken() - , new TaxiLoginReqBean(phone, code, sn, location4Login)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "gotoLoginBycode")); + , 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) { - mOCHTaxiServiceApi.logout( + Observable logout = null; + switch (DebugConfig.getProductFlavor()) { + case "fPadLenovoOchTaxi": {//出租车司机 + logout = mOCHTaxiServiceApi.logout4Taxi( MoGoAiCloudClientConfig.getInstance().getServiceAppId(), MoGoAiCloudClientConfig.getInstance().getToken(), - new TaxiLogoutReqBean(MoGoAiCloudClientConfig.getInstance().getSn(), location4Login)) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(getSubscribeImpl(context, callback, "logout")); + 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,"等待令牌中请稍等"); + if (MoGoAiCloudClientConfig.getInstance().getToken().isEmpty()) { + callback.onFail(OchCommonConst.WAIT_TAKEN, "等待令牌中请稍等"); MoGoAiCloudClient.getInstance().refreshToken(); return; } - mOCHTaxiServiceApi.queryDriverServiceStatusAndLoginStatus(MoGoAiCloudClientConfig.getInstance().getServiceAppId() - ,MoGoAiCloudClientConfig.getInstance().getToken() - ,MoGoAiCloudClientConfig.getInstance().getSn()) + 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); + CallerLogger.INSTANCE.d(M_TAXI + TAG, apiName + ": onSuccess() " + o.msg); if (callback != null) { callback.onSuccess(o); } @@ -124,7 +168,7 @@ public class OchCommonServiceManager { @Override public void onError(Throwable e) { super.onError(e); - CallerLogger.INSTANCE.e(M_TAXI + TAG,apiName + ": onError() " + e.getMessage()); + CallerLogger.INSTANCE.e(M_TAXI + TAG, apiName + ": onError() " + e.getMessage()); if (callback != null) { callback.onError(); } @@ -133,7 +177,7 @@ public class OchCommonServiceManager { @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)); + 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/provider/LoginServiceImpl.kt b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/provider/LoginServiceImpl.kt index dcbe881200..352fa57e6b 100644 --- a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/provider/LoginServiceImpl.kt +++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/biz/provider/LoginServiceImpl.kt @@ -12,12 +12,13 @@ import com.mogo.eagle.core.utilcode.util.AppStateManager.currentActivity import com.mogo.och.common.module.biz.callback.ILoginCallback import com.mogo.och.common.module.biz.callback.ILoginViewCallback import com.mogo.och.common.module.biz.constant.LoginStatusManager +import com.mogo.och.common.module.biz.constant.OchCommonConst import com.mogo.och.common.module.biz.presenter.OchCommonLoginStatusDefaultPresenter import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment import com.mogo.och.common.module.biz.ui.TaxiLoginDialogFragment.Companion.newInstance import java.lang.ref.WeakReference -@Route(path = "/ochbiz/common/login") +@Route(path = OchCommonConst.LOGINSERVICE) class LoginServiceImpl : LoginService,ILoginViewCallback { companion object{ diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java index dc0f367ad6..e515c4e397 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/model/TaxiModel.java @@ -36,6 +36,7 @@ import com.mogo.eagle.core.utilcode.util.ToastUtils; import com.mogo.map.navi.IMogoCarLocationChangedListener2; import com.mogo.module.common.MogoApisHandler; import com.mogo.och.common.module.biz.constant.LoginStatusManager; +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.CoordinateCalculateRouteUtil; import com.mogo.och.common.module.utils.PinYinUtil; @@ -147,7 +148,7 @@ public class TaxiModel { public void init(Context context) { mContext = context.getApplicationContext(); initListeners(); - loginService = (LoginService) ARouter.getInstance().build("/ochbiz/common/login").navigation(); + loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation(); // IMogoServiceApis apis = MogoApisHandler.getInstance().getApis(); // apis.getSocketManagerApi(mContext).init(mContext, DebugConfig.getSocketAppId()); diff --git a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java index e35ca7e733..fba6c4b394 100644 --- a/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java +++ b/OCH/mogo-och-taxi/src/main/java/com/mogo/och/taxi/ui/TaxiFragment.java @@ -19,6 +19,7 @@ import com.alibaba.android.arouter.launcher.ARouter; import com.mogo.eagle.core.data.temp.EventLogout; import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger; import com.mogo.module.common.MogoApisHandler; +import com.mogo.och.common.module.biz.constant.OchCommonConst; import com.mogo.och.common.module.biz.provider.LoginService; import com.mogo.och.taxi.R; import com.mogo.och.taxi.constant.TaxiOrderStatusEnum; @@ -64,7 +65,7 @@ public class TaxiFragment extends BaseTaxiTabFragment