[2110] 账号登录登出、切换路线

This commit is contained in:
yangyakun
2022-09-21 17:57:42 +08:00
parent 7190b44544
commit 93d5bae0b4
25 changed files with 517 additions and 306 deletions

View File

@@ -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<Result> data;
public static class Result {
public int id;
public long taskStartTime;
}
}

View File

@@ -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<Result> taskList;
public List<BusQueryLineTaskResponse.Result> taskList;
}
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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<BusFragment, BusPresenter>
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<BusFragment, BusPresenter>
}
}
@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);

View File

@@ -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<BusQueryLinesResponse>() {
BusServiceManager.getInstance().queryBusTaskByLineId(mContext, String.valueOf(lineId),new IBusServiceCallback<BusQueryLineTaskResponse>() {
@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<BusRoutesResponse>() {
public void commitSwitchLineId(int taskId,int lineId){
BusServiceManager.getInstance().switchLine(mContext,taskId, new IBusServiceCallback<BusRoutesResponse>() {
@Override
public void onSuccess(BusRoutesResponse o) {
SharedPrefs.getInstance(mContext).putInt(BusSwitchLineActivity.LASTCOMMITLINEID,lineId);
if (mBusLinesCallback != null){
mBusLinesCallback.onChangeLineIdSuccess();
}

View File

@@ -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;

View File

@@ -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<BusRoutesResponse> callback){
public void switchLine(Context context, int taskId, IBusServiceCallback<BusRoutesResponse> 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<BusQueryLineTaskResponse> 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<BaseData> callback){

View File

@@ -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<BusRoutesResponse> 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<BusQueryLinesResponse> 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<BusQueryLineTaskResponse> 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<BaseData> updateOrderRoute(@Header ("appId") String appId, @Header("ticket") String ticket, @Body BusRoutePlanningUpdateReqBean data);

View File

@@ -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<BusSwitchLineView> implements IBusLinesCallback {
private Disposable subscribe;
public BusLinePresenter(BusSwitchLineView view) {
super(view);
BusLineModel.getInstance().init();
@@ -61,12 +69,21 @@ public class BusLinePresenter extends Presenter<BusSwitchLineView> 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<BusSwitchLineView> 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);
}
}

View File

@@ -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<BusFragment>
implements ICarOperationStatusCallback, IRefreshBusStationsCallback, ISlidePannelHideCallback
, IMoGoAutopilotStatusListener, IBusControllerStatusCallback {
, IMoGoAutopilotStatusListener, IBusControllerStatusCallback, ILoginCallback {
private static final String TAG = "BusPresenter";
@@ -116,6 +118,11 @@ public class BusPresenter extends Presenter<BusFragment>
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<BusFragment>
public void onAutopilotStatusRespByQuery(@NonNull SystemStatusInfo.StatusInfo status) {
}
@Override
public void loginSuccess(DriverStatusQueryRespBean data) {
}
@Override
public void loginFail(boolean isLogin) {
}
}

View File

@@ -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<BusSwitchLineView, BusLinePresenter>
implements View.OnClickListener, BusSwitchLineView {
class BusSwitchLineActivity : MvpActivity<BusSwitchLineView?, BusLinePresenter?>(),
View.OnClickListener, BusSwitchLineView {
private ImageView mClose;
private ConstraintLayout mNoDatasView;
private RecyclerView mLinesListView;
private TextView mLineCommitBtn;
private SwitchLineAdapter mAdapter;
private List<BusQueryLinesResponse.Result> 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<BusQueryLinesResponse.Result> = 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<mData.size();i++){
if (mData.get(i).choose == 1){
mLineCommitBtn.setBackgroundResource(R.drawable.bus_switch_line_btn_commit);
mLineCommitBtn.setTextColor(getResources().getColor(android.R.color.white));
return;
}
}
override fun onChangeLineIdSuccess() {
ToastUtils.showLong(resources.getString(R.string.bus_change_line_commit_tip_s))
mPresenter?.queryBusRoutes()
mAdapter.setOnLineItemClickListener(null)
mPresenter?.removeListener()
finish()
}
@Override
public void onChangeLineIdSuccess(){
ToastUtils.showLong(getResources().getString(R.string.bus_change_line_commit_tip_s));
mPresenter.queryBusRoutes();
if (mAdapter != null){
mAdapter.setOnLineItemClickListener(null);
override fun onBusLineTasks(lineTaskInfo: BusQueryLineTaskResponse?, position: Int) {
val result = mData[position]
if (result.taskList == null) {
result.taskList = ArrayList()
}
mPresenter.removeListener();
finish();
}
@Override
public void onBusLineTasks(BusQueryLinesResponse o, int position) {
BusQueryLinesResponse.Result result = mData.get(position);
if(result.taskList ==null){
result.taskList = new ArrayList<>();
}
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()
}
}
}

View File

@@ -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);
}

View File

@@ -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)
}
}

View File

@@ -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<SwitchLineTaskAdapter.SwitchLineTaskViewHolder> {
private Context mContext;
private List<BusQueryLinesResponse.Result> mData;
public SwitchLineTaskAdapter(Context context, List<BusQueryLinesResponse.Result> data) {
mContext = context;
mData = data;
class SwitchLineTaskAdapter(
private val mContext: Context,
private var checkTaskId:Int,
private val mData: List<BusQueryLineTaskResponse.Result>?,
private val mTaskItemClickListener: TaskItemClickListener?
) : RecyclerView.Adapter<SwitchLineTaskViewHolder>() {
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)
}
}

View File

@@ -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
}
}

View File

@@ -24,5 +24,7 @@ class OchCommonConst {
// token 失效 重新获取token
const val WAIT_TAKEN = 100046
const val LOGINSERVICE = "/ochbiz/common/login"
}
}

View File

@@ -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) {

View File

@@ -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)

View File

@@ -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<DriverStatusQueryRespBean> 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<TaxiLoginRespBean> gotoLoginBycode(@Header("appId") String appId
Observable<TaxiLoginRespBean> 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<TaxiLoginRespBean> 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<BaseData> logout(@Header("appId") String appId, @Header("ticket") String ticket,
Observable<BaseData> 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<BaseData> logout4Bus(@Header("appId") String appId, @Header("ticket") String ticket,
@Body TaxiLogoutReqBean data);
/**
* 接单状态和登录状态查询
* 接单状态和登录状态查询 出租车司机端、小巴车司机端、小巴车乘客端
* @param sn
* @return
*/
@Headers( {"Content-type:application/json;charset=UTF-8"} )
// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" )
@GET( "/autopilot-car-hailing/operation/v1/driver/taxi/loginStatus" )
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Header ("appId") String appId
,@Header("ticket") String ticket,@Query("sn") String sn);
@GET( "/autopilot-car-hailing/operation/v1/driver/{flavor}/loginStatus")
Observable<DriverStatusQueryRespBean> queryDriverServiceStatusAndLoginStatus(@Path(value = "flavor",encoded = true) String flavor,@Header ("appId") String appId
, @Header("ticket") String ticket, @Query("sn") String sn);
}

View File

@@ -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<BaseData> callback) {
public void getPhoneCode(Context context, String phone,
OchCommonServiceCallback<BaseData> callback) {
mOCHTaxiServiceApi.getPhoneCode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
, MoGoAiCloudClientConfig.getInstance().getToken()
, new TaxiLoginSmsReqBean(phone))
@@ -66,56 +68,98 @@ public class OchCommonServiceManager {
TaxiLoginReqBean.Location4Login location4Login,
OchCommonServiceCallback<TaxiLoginRespBean> callback) {
String sn = MoGoAiCloudClientConfig.getInstance().getSn();
mOCHTaxiServiceApi.gotoLoginBycode(MoGoAiCloudClientConfig.getInstance().getServiceAppId()
Observable<TaxiLoginRespBean> 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<BaseData> callback) {
mOCHTaxiServiceApi.logout(
Observable<BaseData> 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<DriverStatusQueryRespBean> 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 <T extends BaseData> SubscribeImpl getSubscribeImpl(
Context context, OchCommonServiceCallback<T> callback, String apiName) {
return new SubscribeImpl<T>(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);
}

View File

@@ -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{

View File

@@ -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());

View File

@@ -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<TaxiFragment, TaxiPresente
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
loginService = (LoginService) ARouter.getInstance().build("/ochbiz/common/login").navigation();
loginService = (LoginService) ARouter.getInstance().build(OchCommonConst.LOGINSERVICE).navigation();
if(loginService!=null){
loginService.registerFragment(this, getPresenter());
}

View File

@@ -7,8 +7,8 @@ import android.view.View
import com.mogo.eagle.core.data.temp.EventBusOperation
import com.mogo.eagle.core.function.api.hmi.view.IOchBusView
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.util.ShadowUtils
import com.mogo.eagle.core.utilcode.util.SharedPrefs
import com.mogo.eagle.core.utilcode.util.StringUtils
import kotlinx.android.synthetic.main.view_och_bus_operation.view.*
import org.greenrobot.eventbus.EventBus
@@ -41,11 +41,27 @@ class BusOperationView @JvmOverloads constructor(
override fun onAttachedToWindow() {
super.onAttachedToWindow()
context?.let {
actvAccountPhone.text = SharedPrefs.getInstance(it).getString("account","")
actvAccountPhone.text = phoneMask(SharedPrefs.getInstance(it).getString("och_account",""))
}
}
override fun onClick(v: View?) {
EventBus.getDefault().post(EventBusOperation(1))
}
/**
* 用户电话号码的打码隐藏加星号加*
* 一般都是中间四位
* @return 处理完成的手机号码
*/
fun phoneMask(phone: String?): String? {
var res = ""
if (!StringUtils.isEmpty(phone)&&phone?.length==11) {
val stringBuilder = StringBuilder(phone)
res = stringBuilder.replace(3, 7, "****").toString()
}
return res
}
}