diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHShapeBlurView.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHShapeBlurView.java
new file mode 100644
index 0000000000..b9170190c3
--- /dev/null
+++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHShapeBlurView.java
@@ -0,0 +1,70 @@
+package com.mogo.och.common.module.wigets;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.BitmapShader;
+import android.graphics.Canvas;
+import android.graphics.LinearGradient;
+import android.graphics.Matrix;
+import android.graphics.Paint;
+import android.graphics.RectF;
+import android.graphics.Shader;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+
+import com.mogo.och.common.module.R;
+
+
+/**
+ * Created by mmin18 on 9/27/16.
+ */
+public class OCHShapeBlurView extends OCHStockBlurView {
+ Paint mPaint;
+ RectF mRectF;
+ private float mRadius;
+ private int mTopColor; // default #aaffffff
+ private int mBottomColor; // default #aaffffff
+
+ public OCHShapeBlurView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.OCHRShapeBlurView);
+ mRadius = a.getDimension(R.styleable.OCHRShapeBlurView_och_realtime_radius,
+ TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 0, context.getResources().getDisplayMetrics()));
+ mTopColor = a.getColor(R.styleable.OCHRShapeBlurView_och_realtime_start_color, 0xAAFFFFFF);
+ mBottomColor = a.getColor(R.styleable.OCHRShapeBlurView_och_realtime_end_color, 0xAAFFFFFF);
+ a.recycle();
+ mPaint = new Paint();
+ mRectF = new RectF();
+ }
+
+ /**
+ * Custom oval shape
+ */
+ @Override
+ protected void drawBlurredBitmap(Canvas canvas, Bitmap blurredBitmap, int overlayColor) {
+ if (blurredBitmap != null) {
+ mRectF.right = getWidth();
+ mRectF.bottom = getHeight();
+
+ mPaint.reset();
+ mPaint.setAntiAlias(true);
+ BitmapShader shader = new BitmapShader(blurredBitmap, Shader.TileMode.CLAMP, Shader.TileMode.CLAMP);
+ Matrix matrix = new Matrix();
+ matrix.postScale(mRectF.width() / blurredBitmap.getWidth(), mRectF.height() / blurredBitmap.getHeight());
+ shader.setLocalMatrix(matrix);
+ mPaint.setShader(shader);
+ canvas.drawRoundRect(mRectF, mRadius,mRadius,mPaint);
+
+ mPaint.reset();
+ mPaint.setAntiAlias(true);
+ /* 设置渐变色 这个正方形的颜色是改变的 */
+ Shader mShader = new LinearGradient(getWidth()/2, 0, getWidth()/2, getHeight(),
+ new int[] {mTopColor,mBottomColor}, null, Shader.TileMode.CLAMP); // 一个材质,打造出一个线性梯度沿著一条线。
+ mPaint.setShader(mShader);//0xBFE0E8FF,0xBF6AA2D7
+ canvas.drawRoundRect(mRectF, mRadius,mRadius,mPaint);
+
+ }
+ }
+}
diff --git a/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHStockBlurView.java b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHStockBlurView.java
new file mode 100644
index 0000000000..f88571b949
--- /dev/null
+++ b/OCH/mogo-och-common-module/src/main/java/com/mogo/och/common/module/wigets/OCHStockBlurView.java
@@ -0,0 +1,343 @@
+package com.mogo.och.common.module.wigets;
+
+import android.app.Activity;
+import android.content.Context;
+import android.content.ContextWrapper;
+import android.content.res.TypedArray;
+import android.graphics.Bitmap;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Rect;
+import android.renderscript.Allocation;
+import android.renderscript.Element;
+import android.renderscript.RenderScript;
+import android.renderscript.ScriptIntrinsicBlur;
+import android.util.AttributeSet;
+import android.util.TypedValue;
+import android.view.View;
+import android.view.ViewTreeObserver;
+
+import com.mogo.och.common.module.R;
+
+public class OCHStockBlurView extends View {
+
+ private float mDownsampleFactor; // default 4
+ private int mOverlayColor; // default #aaffffff
+ private float mBlurRadius; // default 10dp (0 < r <= 25)
+ private boolean onece;
+
+ private boolean mDirty;
+ private Bitmap mBitmapToBlur, mBlurredBitmap;
+ private Canvas mBlurringCanvas;
+ private boolean mIsRendering;
+ private Paint mPaint;
+ private final Rect mRectSrc = new Rect(), mRectDst = new Rect();
+ // mDecorView should be the root view of the activity (even if you are on a different window like a dialog)
+ private View mDecorView;
+ // If the view is on different root view (usually means we are on a PopupWindow),
+ // we need to manually call invalidate() in onPreDraw(), otherwise we will not be able to see the changes
+ private boolean mDifferentRoot;
+ private static int RENDERING_COUNT;
+ private static int BLUR_IMPL;
+
+ private RenderScript mRenderScript;
+ private ScriptIntrinsicBlur mBlurScript;
+ private Allocation mBlurInput, mBlurOutput;
+
+ public OCHStockBlurView(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.OCHRealtimeBlurView);
+ mBlurRadius = a.getDimension(R.styleable.OCHRealtimeBlurView_och_realtime_blur_radius,
+ TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 20, context.getResources().getDisplayMetrics()));
+ mDownsampleFactor = a.getFloat(R.styleable.OCHRealtimeBlurView_och_realtime_downsample_factor, 4);
+ mOverlayColor = a.getColor(R.styleable.OCHRealtimeBlurView_och_realtime_overlay_color, 0xAAFFFFFF);
+ onece = a.getBoolean(R.styleable.OCHRealtimeBlurView_och_realtime_onece,false);
+ a.recycle();
+
+ mPaint = new Paint();
+ }
+
+ public void setBlurRadius(float radius) {
+ if (mBlurRadius != radius) {
+ mBlurRadius = radius;
+ mDirty = true;
+ invalidate();
+ }
+ }
+
+ public void setDownsampleFactor(float factor) {
+ if (factor <= 0) {
+ throw new IllegalArgumentException("Downsample factor must be greater than 0.");
+ }
+
+ if (mDownsampleFactor != factor) {
+ mDownsampleFactor = factor;
+ mDirty = true; // may also change blur radius
+ releaseBitmap();
+ invalidate();
+ }
+ }
+
+ public void setOverlayColor(int color) {
+ if (mOverlayColor != color) {
+ mOverlayColor = color;
+ invalidate();
+ }
+ }
+
+ private void releaseBitmap() {
+ if (mBitmapToBlur != null) {
+ mBitmapToBlur.recycle();
+ mBitmapToBlur = null;
+ }
+ if (mBlurredBitmap != null) {
+ mBlurredBitmap.recycle();
+ mBlurredBitmap = null;
+ }
+ }
+
+ protected void release() {
+ releaseBitmap();
+ releaseBlur();
+ }
+
+ protected boolean prepare() {
+ if (mBlurRadius == 0) {
+ release();
+ return false;
+ }
+
+ float downsampleFactor = mDownsampleFactor;
+ float radius = mBlurRadius / downsampleFactor;
+ if (radius > 25) {
+ downsampleFactor = downsampleFactor * radius / 25;
+ radius = 25;
+ }
+
+ final int width = getWidth();
+ final int height = getHeight();
+
+ int scaledWidth = Math.max(1, (int) (width / downsampleFactor));
+ int scaledHeight = Math.max(1, (int) (height / downsampleFactor));
+
+ boolean dirty = mDirty;
+
+ if (mBlurringCanvas == null || mBlurredBitmap == null
+ || mBlurredBitmap.getWidth() != scaledWidth
+ || mBlurredBitmap.getHeight() != scaledHeight) {
+ dirty = true;
+ releaseBitmap();
+
+ boolean r = false;
+ try {
+ mBitmapToBlur = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
+ if (mBitmapToBlur == null) {
+ return false;
+ }
+ mBlurringCanvas = new Canvas(mBitmapToBlur);
+
+ mBlurredBitmap = Bitmap.createBitmap(scaledWidth, scaledHeight, Bitmap.Config.ARGB_8888);
+ if (mBlurredBitmap == null) {
+ return false;
+ }
+
+ r = true;
+ } catch (OutOfMemoryError e) {
+ // Bitmap.createBitmap() may cause OOM error
+ // Simply ignore and fallback
+ } finally {
+ if (!r) {
+ release();
+ return false;
+ }
+ }
+ }
+
+ if (dirty) {
+ if (prepareBlur(getContext(), mBitmapToBlur, radius)) {
+ mDirty = false;
+ } else {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ protected void blur(Bitmap bitmapToBlur, Bitmap blurredBitmap) {
+ mBlurInput.copyFrom(bitmapToBlur);
+ mBlurScript.setInput(mBlurInput);
+ mBlurScript.forEach(mBlurOutput);
+ mBlurOutput.copyTo(blurredBitmap);
+ }
+
+ private final ViewTreeObserver.OnPreDrawListener preDrawListener = new ViewTreeObserver.OnPreDrawListener() {
+ @Override
+ public boolean onPreDraw() {
+ final int[] locations = new int[2];
+ Bitmap oldBmp = mBlurredBitmap;
+ View decor = mDecorView;
+ if (decor != null && isShown() && prepare()) {
+ boolean redrawBitmap = mBlurredBitmap != oldBmp;
+ oldBmp = null;
+ decor.getLocationOnScreen(locations);
+ int x = -locations[0];
+ int y = -locations[1];
+
+ getLocationOnScreen(locations);
+ x += locations[0];
+ y += locations[1];
+
+ // just erase transparent
+ mBitmapToBlur.eraseColor(mOverlayColor & 0xffffff);
+
+ int rc = mBlurringCanvas.save();
+ mIsRendering = true;
+ RENDERING_COUNT++;
+ try {
+ mBlurringCanvas.scale(1.f * mBitmapToBlur.getWidth() / getWidth(), 1.f * mBitmapToBlur.getHeight() / getHeight());
+ mBlurringCanvas.translate(-x, -y);
+ if (decor.getBackground() != null) {
+ decor.getBackground().draw(mBlurringCanvas);
+ }
+ decor.draw(mBlurringCanvas);
+ } catch (StopException e) {
+ } finally {
+ mIsRendering = false;
+ RENDERING_COUNT--;
+ mBlurringCanvas.restoreToCount(rc);
+ }
+
+ blur(mBitmapToBlur, mBlurredBitmap);
+
+ if (redrawBitmap || mDifferentRoot) {
+ invalidate();
+ }
+ }
+ if(onece) {
+ mDecorView.getViewTreeObserver().removeOnPreDrawListener(this);
+ }
+ return true;
+ }
+ };
+
+ protected View getActivityDecorView() {
+ Context ctx = getContext();
+ for (int i = 0; i < 4 && ctx != null && !(ctx instanceof Activity) && ctx instanceof ContextWrapper; i++) {
+ ctx = ((ContextWrapper) ctx).getBaseContext();
+ }
+ if (ctx instanceof Activity) {
+ return ((Activity) ctx).getWindow().getDecorView();
+ } else {
+ return null;
+ }
+ }
+
+ @Override
+ protected void onAttachedToWindow() {
+ super.onAttachedToWindow();
+ mDecorView = getRootView();
+ if (mDecorView != null) {
+ mDecorView.getViewTreeObserver().addOnPreDrawListener(preDrawListener);
+ mDifferentRoot = mDecorView.getRootView() != getRootView();
+ if (mDifferentRoot) {
+ mDecorView.postInvalidate();
+ }
+ } else {
+ mDifferentRoot = false;
+ }
+ }
+
+ @Override
+ protected void onDetachedFromWindow() {
+ if (mDecorView != null) {
+ mDecorView.getViewTreeObserver().removeOnPreDrawListener(preDrawListener);
+ }
+ release();
+ super.onDetachedFromWindow();
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ if (mIsRendering) {
+ // Quit here, don't draw views above me
+ throw STOP_EXCEPTION;
+ } else if (RENDERING_COUNT > 0) {
+ // Doesn't support blurview overlap on another blurview
+ } else {
+ super.draw(canvas);
+ }
+ }
+
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ drawBlurredBitmap(canvas, mBlurredBitmap, mOverlayColor);
+ }
+
+ /**
+ * Custom draw the blurred bitmap and color to define your own shape
+ *
+ * @param canvas
+ * @param blurredBitmap
+ * @param overlayColor
+ */
+ protected void drawBlurredBitmap(Canvas canvas, Bitmap blurredBitmap, int overlayColor) {
+ if (blurredBitmap != null) {
+ mRectSrc.right = blurredBitmap.getWidth();
+ mRectSrc.bottom = blurredBitmap.getHeight();
+ mRectDst.right = getWidth();
+ mRectDst.bottom = getHeight();
+ canvas.drawBitmap(blurredBitmap, mRectSrc, mRectDst, null);
+ }
+ mPaint.setColor(overlayColor);
+ canvas.drawRect(mRectDst, mPaint);
+ }
+
+ private static class StopException extends RuntimeException {
+ }
+
+ private static StopException STOP_EXCEPTION = new StopException();
+
+
+ public boolean prepareBlur(Context context, Bitmap buffer, float radius) {
+ if (mRenderScript == null) {
+ try {
+ mRenderScript = RenderScript.create(context);
+ mBlurScript = ScriptIntrinsicBlur.create(mRenderScript, Element.U8_4(mRenderScript));
+ } catch (android.renderscript.RSRuntimeException e) {
+ // In release mode, just ignore
+ releaseBlur();
+ return false;
+ }
+ }
+ mBlurScript.setRadius(radius);
+
+ mBlurInput = Allocation.createFromBitmap(mRenderScript, buffer,
+ Allocation.MipmapControl.MIPMAP_NONE, Allocation.USAGE_SCRIPT);
+ mBlurOutput = Allocation.createTyped(mRenderScript, mBlurInput.getType());
+
+ return true;
+ }
+
+ public void releaseBlur() {
+ if (mBlurInput != null) {
+ mBlurInput.destroy();
+ mBlurInput = null;
+ }
+ if (mBlurOutput != null) {
+ mBlurOutput.destroy();
+ mBlurOutput = null;
+ }
+ if (mBlurScript != null) {
+ mBlurScript.destroy();
+ mBlurScript = null;
+ }
+ if (mRenderScript != null) {
+ mRenderScript.destroy();
+ mRenderScript = null;
+ }
+ }
+
+}
diff --git a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml
index 5c2f6845f0..002381f781 100644
--- a/OCH/mogo-och-common-module/src/main/res/values/attrs.xml
+++ b/OCH/mogo-och-common-module/src/main/res/values/attrs.xml
@@ -34,4 +34,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerBaseRespBean.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerBaseRespBean.java
new file mode 100644
index 0000000000..4ad877a45b
--- /dev/null
+++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerBaseRespBean.java
@@ -0,0 +1,15 @@
+package com.mogo.och.taxi.passenger.bean;
+
+import com.mogo.eagle.core.data.BaseData;
+
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * Created by pangfan on 2021/8/19
+ *
+ * 查询订单返回数据结构
+ */
+public class TaxiPassengerBaseRespBean extends BaseData {
+ public Object data;
+}
diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCheckPhoneUpdateOrderReqBean.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCheckPhoneUpdateOrderReqBean.java
new file mode 100644
index 0000000000..6e1c9544ce
--- /dev/null
+++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerCheckPhoneUpdateOrderReqBean.java
@@ -0,0 +1,17 @@
+package com.mogo.och.taxi.passenger.bean;
+
+/**
+ * Created by pangfan on 2021/8/19
+ *
+ * 验证手机号后四位同时流转订单状态
+ */
+public class TaxiPassengerCheckPhoneUpdateOrderReqBean {
+
+ public String orderNo;
+ public String phone;
+
+ public TaxiPassengerCheckPhoneUpdateOrderReqBean(String driverSn, String orderNo,String phone) {
+ this.orderNo = orderNo;
+ this.phone = phone;
+ }
+}
diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java
index 5b1da564c7..dc5859b4ab 100644
--- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java
+++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/bean/TaxiPassengerOrderQueryRespBean.java
@@ -45,7 +45,10 @@ public class TaxiPassengerOrderQueryRespBean extends BaseData {
public long startTime;
//预计用车时间:预约单=下单时的预约用车时间;即时单=派单成功的时间+预估的达到上车点的时间
public long bookingTime;
-
+ //乘客手机号
+ public String passengerPhone;
+ //订单多少乘客
+ public String passengerCount;
// !!!接口中暂无此字段,仅用于本地实现逻辑使用:起始站目的站距离km
diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCheckPhoneCallback.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCheckPhoneCallback.java
new file mode 100644
index 0000000000..40cecf0a30
--- /dev/null
+++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/callback/ITaxiPassengerCheckPhoneCallback.java
@@ -0,0 +1,6 @@
+package com.mogo.och.taxi.passenger.callback;
+
+public interface ITaxiPassengerCheckPhoneCallback {
+ //验证手机号并流转状态
+ void onCheckPhoneAndUpdateOrderStatus(String phoneTail);
+}
diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java
index e3266028cc..3ad46fa372 100644
--- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java
+++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/model/TaxiPassengerModel.java
@@ -26,10 +26,12 @@ import com.mogo.eagle.core.utilcode.mogo.AppIdentityModeUtils;
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger;
import com.mogo.eagle.core.utilcode.mogo.storage.SharedPrefsMgr;
import com.mogo.eagle.core.utilcode.util.NetworkUtils;
+import com.mogo.eagle.core.utilcode.util.ToastUtils;
import com.mogo.eagle.core.utilcode.util.UiThreadHandler;
import com.mogo.map.navi.IMogoCarLocationChangedListener2;
import com.mogo.module.common.MogoApisHandler;
import com.mogo.och.common.module.utils.CoordinateCalculateRouteUtil;
+import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrdersInServiceQueryRespBean;
@@ -673,6 +675,28 @@ public class TaxiPassengerModel implements IOCHTaxiPassengerNaviChangedCallback
SharedPrefsMgr.getInstance(mContext).putInt(TaxiPassengerConst.SP_KEY_ORDER_SUM_DIS,(int) sumLength);
}
+ public void checkPhoneAndUpdateStatus(String phoneTail) {
+ if (mCurrentOCHOrder == null) return;
+ CallerLogger.INSTANCE.d(M_TAXI_P + TAG, "--route--- checkPhoneAndUpdateStatus");
+ TaxiPassengerServiceManager.getInstance().checkPhoneAndUpdateOrderStatus(mContext, mCurrentOCHOrder.orderNo,
+ phoneTail, new TaxiPassengerServiceCallback() {
+ @Override
+ public void onSuccess(TaxiPassengerBaseRespBean data) {
+ ToastUtils.showLong("success");
+ }
+
+ @Override
+ public void onError() {
+ ToastUtils.showLong("当前网络异常,请重新验证;若始终异常,请您在手机端取消行程,给您带来不便,十分抱歉!");
+ }
+
+ @Override
+ public void onFail(int code, String msg) {
+ ToastUtils.showLong("onFail"+code+msg);
+ }
+ });
+ }
+
private void runOnUIThread(Runnable executor) {
if (executor == null) {
return;
diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java
index 7e3d423755..7703a2bf14 100644
--- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java
+++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceApi.java
@@ -1,4 +1,6 @@
package com.mogo.och.taxi.passenger.network;
+import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean;
+import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean;
@@ -63,4 +65,14 @@ interface TaxiPassengerServiceApi {
// @GET( "/autopilot-car-hailing/api/v1/driver/serviceStatus/query" )
@GET( "/autopilot-car-hailing/order/v2/driver/taxi/passenger/orderRoute" )
Observable queryOrderRoute(@Header ("appId") String appId, @Header("ticket") String ticket, @Query("orderNo") String orderNo);
+
+ /**
+ * 通过orderNo查询订单信息(用于本地已经有orderNo时)
+ * @param data
+ * @return
+ */
+ @Headers( {"Content-type:application/json;charset=UTF-8"} )
+ @POST( "/autopilot-car-hailing/passenger/v2/vehicle/taxi/verification/phone" )
+ Observable checkPhoneAndUpdateOrderStatus(@Header ("appId") String appId, @Header("ticket") String ticket, @Body TaxiPassengerCheckPhoneUpdateOrderReqBean data);
+
}
diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java
index d1e111635d..099aebd508 100644
--- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java
+++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/network/TaxiPassengerServiceManager.java
@@ -12,6 +12,8 @@ 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.module.common.MogoApisHandler;
+import com.mogo.och.taxi.passenger.bean.TaxiPassengerBaseRespBean;
+import com.mogo.och.taxi.passenger.bean.TaxiPassengerCheckPhoneUpdateOrderReqBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRemainingResp;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryReqBean;
import com.mogo.och.taxi.passenger.bean.TaxiPassengerOrderQueryRespBean;
@@ -141,4 +143,15 @@ public class TaxiPassengerServiceManager {
}
};
}
+
+ public void checkPhoneAndUpdateOrderStatus(Context context, String orderNo,String phone ,TaxiPassengerServiceCallback callback){
+
+ mOCHTaxiServiceApi.checkPhoneAndUpdateOrderStatus(
+ MoGoAiCloudClientConfig.getInstance().getServiceAppId()
+ ,MoGoAiCloudClientConfig.getInstance().getToken()
+ ,new TaxiPassengerCheckPhoneUpdateOrderReqBean(getDriverAppSn(),orderNo,phone))
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(getSubscribeImpl(context, callback, "checkPhoneAndUpdateOrderStatus"));
+ }
}
diff --git a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java
index fd1d8ef13a..ff968bba03 100644
--- a/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java
+++ b/OCH/mogo-och-taxi-passenger/src/main/java/com/mogo/och/taxi/passenger/presenter/BaseTaxiPassengerPresenter.java
@@ -149,6 +149,11 @@ public class BaseTaxiPassengerPresenter extends Presenter mView.showOrHidePressengerCheckPager(true, order.startSiteAddr,
+ order.endSiteAddr, order.passengerCount, order.carNumber, order.passengerPhone));
+ return;
+ }
if (TaxiPassengerOrderStatusEnum.ArriveAtStart.getCode() == order.orderStatus
|| TaxiPassengerOrderStatusEnum.OnTheWayToEnd.getCode() == order.orderStatus){
runOnUIThread(() -> mView.showOrHideServingOrderFragment(true));
@@ -174,4 +179,8 @@ public class BaseTaxiPassengerPresenter extends Presenter getPresenter().checkAndUpdateStatus(phoneTail));
}
/**
@@ -253,4 +262,22 @@ public class TaxiPassengerBaseFragment extends MvpFragment(4)
+ private val numSelectTextView = arrayOfNulls(4)
+
+ private fun initView(context: Context) {
+ d(SceneConstant.M_TAXI_P + TAG, "initView")
+ LayoutInflater.from(context).inflate(R.layout.taxi_p_passenger_check_panel, this, true)
+ tvPassengerCount = findViewById(R.id.tv_passenger_count)
+ tvPassengerStart = findViewById(R.id.tv_passenger_start)
+ tvPassengerEnd = findViewById(R.id.tv_passenger_end)
+ tvTaxiNumber = findViewById(R.id.tv_taxi_number)
+ tvTaxiPassengerNumberfirst = findViewById(R.id.tv_taxi_passenger_number_first)
+ tvTaxiPassengerNumberSecond = findViewById(R.id.tv_taxi_passenger_number_second)
+ tvTaxiPassengerNumberThird = findViewById(R.id.tv_taxi_passenger_number_third)
+ tvTaxiPassengerNumberFourth = findViewById(R.id.tv_taxi_passenger_number_fourth)
+ keyBoardLogic()
+ numSelectTextView[0] = tvTaxiPassengerNumberfirst
+ numSelectTextView[1] = tvTaxiPassengerNumberSecond
+ numSelectTextView[2] = tvTaxiPassengerNumberThird
+ numSelectTextView[3] = tvTaxiPassengerNumberFourth
+ }
+
+ private fun keyBoardLogic() {
+ findViewById(R.id.tv_taxi_passenger_number_one).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_two).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_three).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_four).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_five).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_six).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_seven).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_eight).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_nine).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_zero).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_back).setOnClickListener(this)
+ findViewById(R.id.tv_taxi_passenger_number_submit).setOnClickListener(this)
+
+ tvTaxiPassengerNumberfirst.setOnClickListener(this)
+ tvTaxiPassengerNumberSecond.setOnClickListener(this)
+ tvTaxiPassengerNumberThird.setOnClickListener(this)
+ tvTaxiPassengerNumberFourth.setOnClickListener(this)
+ }
+
+ override fun onClick(v: View?) {
+ when (v?.id) {
+ R.id.tv_taxi_passenger_number_one -> {showNumver(1)}
+ R.id.tv_taxi_passenger_number_two -> {showNumver(2)}
+ R.id.tv_taxi_passenger_number_three-> {showNumver(3)}
+ R.id.tv_taxi_passenger_number_four-> {showNumver(4)}
+ R.id.tv_taxi_passenger_number_five -> {showNumver(5)}
+ R.id.tv_taxi_passenger_number_six -> {showNumver(6)}
+ R.id.tv_taxi_passenger_number_seven -> {showNumver(7)}
+ R.id.tv_taxi_passenger_number_eight -> {showNumver(8)}
+ R.id.tv_taxi_passenger_number_nine -> {showNumver(9)}
+ R.id.tv_taxi_passenger_number_zero -> {showNumver(0)}
+ R.id.tv_taxi_passenger_number_back -> {deleteNumver()}
+ R.id.tv_taxi_passenger_number_first -> {selectIndex(0)}
+ R.id.tv_taxi_passenger_number_second -> {selectIndex(1)}
+ R.id.tv_taxi_passenger_number_third -> {selectIndex(2)}
+ R.id.tv_taxi_passenger_number_fourth -> {selectIndex(3)}
+ R.id.tv_taxi_passenger_number_submit -> {checkAndCommit()}
+ else -> {}
+ }
+ }
+
+ private fun checkAndCommit() {
+ val numberStr = "${numSelect[0]}${numSelect[1]}${numSelect[2]}${numSelect[3]}"
+ if(!phone.endsWith(numberStr)){
+ ToastUtils.showLong("请输入正确的手机尾号")
+ return
+ }
+ onCheckPhoneAndUpdateStatusListener?.onCheckPhoneAndUpdateOrderStatus(numberStr)
+ }
+
+ private fun selectIndex(i: Int) {
+ index = i
+ changeStyle()
+ }
+
+ private fun showNumver(number: Int) {
+ if (index in 0..3) {
+ numSelect[index] = number
+ numSelectTextView[index]!!.text = number.toString()
+ if(index!=3){
+ index++
+ }
+ changeStyle()
+ }
+ }
+
+ private fun deleteNumver() {
+ if (index in 0..3) {
+ if(numSelect[index]==null){
+ if(index!=0){
+ index--
+ }
+ changeStyle()
+ return
+ }
+ numSelect[index] = null
+ numSelectTextView[index]!!.text = ""
+ }
+ }
+
+ private fun changeStyle() {
+ numSelectTextView.forEachIndexed { indexIn, textView ->
+ if(indexIn==index){
+ numSelectTextView[index]!!.setBackgroundResource(R.drawable.bg_taxi_p_checked_input_background)
+ numSelectTextView[index]!!.setTextColor(resources.getColor(R.color.taxi_p_check_keyboard_input_field_checked))
+ numSelectTextView[index]!!.setShadowLayer(0f,0f,0f,
+ resources.getColor(R.color.taxi_p_check_keyboard_input_field_checked_text_shadow))
+ }else{
+ numSelectTextView[indexIn]!!.setBackgroundResource(R.drawable.bg_taxi_p_check_input_background)
+ numSelectTextView[indexIn]!!.setTextColor(resources.getColor(R.color.taxi_p_check_keyboard_input_field))
+ numSelectTextView[indexIn]!!.setShadowLayer(20f,0f,2f,
+ resources.getColor(R.color.taxi_p_check_keyboard_input_field_checked_text_shadow))
+ }
+ }
+
+ }
+
+ fun setData(
+ startSiteAddr: String?,
+ endSiteAddr: String?,
+ passengerCount: String? = "1",
+ carNumber: String?,
+ phone: String?
+ ) {
+ this.phone = phone?:""
+ val sb = SpannableStringBuilder("乘客数:$passengerCount 位") // 包装字体内容
+ sb.setSpan(
+ TextAppearanceSpan("default",
+ Typeface.NORMAL,100,
+ resources.getColorStateList(R.color.taxi_p_check_passenger_number) ,null ),
+ 4, 5, Spannable.SPAN_INCLUSIVE_INCLUSIVE)
+ tvPassengerCount.text = sb
+ tvPassengerStart.text = "起 点 : $startSiteAddr"
+ tvPassengerEnd.text = "终 点 : $endSiteAddr"
+ tvTaxiNumber.text = "蘑菇 " + carNumber + "为您服务"
+ }
+
+ companion object {
+ const val TAG = "TaxiPassengerCheckView"
+ }
+
+ init {
+ try {
+ initView(context)
+ } catch (e: Exception) {
+ e.printStackTrace()
+ }
+ }
+}
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/bg_taxi_p_checked_input_background.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/bg_taxi_p_checked_input_background.png
new file mode 100644
index 0000000000..ec58d028f2
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/bg_taxi_p_checked_input_background.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_end_boll.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_end_boll.png
new file mode 100644
index 0000000000..97644d1c3d
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_end_boll.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_logo.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_logo.png
new file mode 100644
index 0000000000..328da8bc90
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_logo.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_panel_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_panel_bg.png
new file mode 100755
index 0000000000..49567f10c2
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_panel_bg.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_robot.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_robot.png
new file mode 100644
index 0000000000..156a3d1526
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_robot.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_boll.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_boll.png
new file mode 100644
index 0000000000..c6a019187a
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_boll.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_end_line.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_end_line.png
new file mode 100644
index 0000000000..14c0e5fa19
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi-2560x1440/taxi_p_passenger_check_start_end_line.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/bg_taxi_p_checked_input_background.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/bg_taxi_p_checked_input_background.png
new file mode 100644
index 0000000000..ec58d028f2
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/bg_taxi_p_checked_input_background.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_end_boll.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_end_boll.png
new file mode 100644
index 0000000000..97644d1c3d
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_end_boll.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_logo.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_logo.png
new file mode 100644
index 0000000000..328da8bc90
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_logo.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_panel_bg.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_panel_bg.png
new file mode 100755
index 0000000000..49567f10c2
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_panel_bg.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_robot.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_robot.png
new file mode 100644
index 0000000000..156a3d1526
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_robot.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_boll.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_boll.png
new file mode 100644
index 0000000000..c6a019187a
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_boll.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_end_line.png b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_end_line.png
new file mode 100644
index 0000000000..14c0e5fa19
Binary files /dev/null and b/OCH/mogo-och-taxi-passenger/src/main/res/drawable-xhdpi/taxi_p_passenger_check_start_end_line.png differ
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_check_input_background.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_check_input_background.xml
new file mode 100644
index 0000000000..a60d36d074
--- /dev/null
+++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_check_input_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_background.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_background.xml
new file mode 100644
index 0000000000..8476da3706
--- /dev/null
+++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_submit_background.xml b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_submit_background.xml
new file mode 100644
index 0000000000..b29276965c
--- /dev/null
+++ b/OCH/mogo-och-taxi-passenger/src/main/res/drawable/bg_taxi_p_keyboard_submit_background.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml
new file mode 100644
index 0000000000..ee2e0a4365
--- /dev/null
+++ b/OCH/mogo-och-taxi-passenger/src/main/res/layout/taxi_p_passenger_check_panel.xml
@@ -0,0 +1,370 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml
index 24d1125213..343e9577d5 100644
--- a/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml
+++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/colors.xml
@@ -38,4 +38,17 @@
#00000000
+
+ #FFFFC836
+ #FF282F62
+ #FFFFFF
+ #FFFFFF
+
+ #7020466F
+ #8039388E
+ #B630347D
+ #151937
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml
index 9be34f07d0..9f66fe500a 100644
--- a/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml
+++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/strings.xml
@@ -24,4 +24,10 @@
已达到目的地,请从右侧下车,感谢乘坐\'蘑菇车联\'无人驾驶车
已到达
感谢您使用蘑菇车联自动驾驶出行服务,期待下次与您相遇
+
+
+ 欢迎体验MOGO自动驾驶出租车
+ Hello,您好
+ 请输出手机号后4位:
+ 小蘑菇
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml
index 59da5d765c..860407628e 100644
--- a/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml
+++ b/OCH/mogo-och-taxi-passenger/src/main/res/values/styles.xml
@@ -11,4 +11,29 @@
- 32px
+
+
+
+
+
\ No newline at end of file
diff --git a/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml b/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml
index da7aa36c9d..d268b79352 100644
--- a/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml
+++ b/OCH/mogo-och-taxi/src/main/res/layout/taxi_being_order.xml
@@ -236,6 +236,7 @@
android:text="@string/module_och_taxi_order_server_start"
android:textColor="#4DFFFFFF"
android:textSize="24sp"
+ app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent" />
diff --git a/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml b/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml
index 55b3e86c7b..317cae330d 100644
--- a/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml
+++ b/modules/mogo-module-common/src/main/res/values-xhdpi/dimens.xml
@@ -1051,7 +1051,10 @@
38px
40px
42px
+ 46px
48px
+ 76px
+ 120px
-10px
10px
34px