Browse Source

增加取消订单以及去支付

zk 1 year ago
parent
commit
cb551802e4

+ 4 - 0
app/src/main/java/com/datarecovery/master/data/api/AtmobApi.java

@@ -8,6 +8,7 @@ import com.datarecovery.master.data.api.request.LoginRequest;
 import com.datarecovery.master.data.api.request.MemberDetailRequest;
 import com.datarecovery.master.data.api.request.MemberDetailRequest;
 import com.datarecovery.master.data.api.request.MemberPayRequest;
 import com.datarecovery.master.data.api.request.MemberPayRequest;
 import com.datarecovery.master.data.api.request.OrderPageRequest;
 import com.datarecovery.master.data.api.request.OrderPageRequest;
+import com.datarecovery.master.data.api.request.OrderRequest;
 import com.datarecovery.master.data.api.request.PaymentStatusRequest;
 import com.datarecovery.master.data.api.request.PaymentStatusRequest;
 import com.datarecovery.master.data.api.request.SendCodeRequest;
 import com.datarecovery.master.data.api.request.SendCodeRequest;
 import com.datarecovery.master.data.api.response.FindOrderResponse;
 import com.datarecovery.master.data.api.response.FindOrderResponse;
@@ -53,6 +54,9 @@ public interface AtmobApi {
     @POST("/project/recover/v1/order/find")
     @POST("/project/recover/v1/order/find")
     Single<BaseResponse<FindOrderResponse>> findOrder(@Body FindOrderRequest request);
     Single<BaseResponse<FindOrderResponse>> findOrder(@Body FindOrderRequest request);
 
 
+    @POST("/project/recover/v1/order/cancel")
+    Single<BaseResponse<Object>> cancelOrder(@Body OrderRequest request);
+
     @POST("/project/recover/v1/user/case/list")
     @POST("/project/recover/v1/user/case/list")
     Single<BaseResponse<UserCaseResponse>> userCaseList(@Body BaseRequest request);
     Single<BaseResponse<UserCaseResponse>> userCaseList(@Body BaseRequest request);
 }
 }

+ 35 - 0
app/src/main/java/com/datarecovery/master/data/api/bean/OrderBean.java

@@ -1,9 +1,13 @@
 package com.datarecovery.master.data.api.bean;
 package com.datarecovery.master.data.api.bean;
 
 
+import androidx.annotation.IntDef;
+
 import com.datarecovery.master.module.member.MemberType;
 import com.datarecovery.master.module.member.MemberType;
 import com.datarecovery.master.utils.DateUtil;
 import com.datarecovery.master.utils.DateUtil;
 import com.google.gson.annotations.SerializedName;
 import com.google.gson.annotations.SerializedName;
 
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.Objects;
 import java.util.Objects;
 
 
 public class OrderBean {
 public class OrderBean {
@@ -30,6 +34,36 @@ public class OrderBean {
     @SerializedName("tutorialUrl")
     @SerializedName("tutorialUrl")
     private String tutorialLink;
     private String tutorialLink;
 
 
+    @SerializedName("payMethod")
+    private int payMethod;
+
+    @SerializedName("payPlatform")
+    private int payPlatform;
+
+    @OrderStatus
+    @SerializedName("status")
+    private int status;
+
+    @IntDef({OrderStatus.SUCCESS, OrderStatus.TODO})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface OrderStatus {
+        int SUCCESS = 0;
+        int TODO = 2;
+    }
+
+
+    public int getPayMethod() {
+        return payMethod;
+    }
+
+    public int getPayPlatform() {
+        return payPlatform;
+    }
+
+    public int getStatus() {
+        return status;
+    }
+
     public String getTutorialLink() {
     public String getTutorialLink() {
         return tutorialLink;
         return tutorialLink;
     }
     }
@@ -46,6 +80,7 @@ public class OrderBean {
         }
         }
     }
     }
 
 
+
     public String getItemName() {
     public String getItemName() {
         return itemName;
         return itemName;
     }
     }

+ 13 - 0
app/src/main/java/com/datarecovery/master/data/api/request/OrderRequest.java

@@ -0,0 +1,13 @@
+package com.datarecovery.master.data.api.request;
+
+import com.google.gson.annotations.SerializedName;
+
+public class OrderRequest extends BaseRequest {
+
+    @SerializedName("id")
+    private int id;
+
+    public OrderRequest(int id) {
+        this.id = id;
+    }
+}

+ 8 - 0
app/src/main/java/com/datarecovery/master/data/repositories/PayRepository.java

@@ -9,6 +9,7 @@ import com.datarecovery.master.data.api.AtmobApi;
 import com.datarecovery.master.data.api.bean.OrderBean;
 import com.datarecovery.master.data.api.bean.OrderBean;
 import com.datarecovery.master.data.api.request.FindOrderRequest;
 import com.datarecovery.master.data.api.request.FindOrderRequest;
 import com.datarecovery.master.data.api.request.OrderPageRequest;
 import com.datarecovery.master.data.api.request.OrderPageRequest;
+import com.datarecovery.master.data.api.request.OrderRequest;
 import com.datarecovery.master.data.api.response.FindOrderResponse;
 import com.datarecovery.master.data.api.response.FindOrderResponse;
 import com.datarecovery.master.data.api.response.OrderPageResponse;
 import com.datarecovery.master.data.api.response.OrderPageResponse;
 import com.datarecovery.master.utils.RxHttpHandler;
 import com.datarecovery.master.utils.RxHttpHandler;
@@ -18,6 +19,7 @@ import java.util.List;
 import javax.inject.Inject;
 import javax.inject.Inject;
 import javax.inject.Singleton;
 import javax.inject.Singleton;
 
 
+import atmob.reactivex.rxjava3.core.Completable;
 import atmob.reactivex.rxjava3.core.Single;
 import atmob.reactivex.rxjava3.core.Single;
 import atmob.rxjava.utils.RxJavaUtil;
 import atmob.rxjava.utils.RxJavaUtil;
 
 
@@ -58,4 +60,10 @@ public class PayRepository {
     public void clearOderList() {
     public void clearOderList() {
         orderList.setValue(null);
         orderList.setValue(null);
     }
     }
+
+    public Single<Object> cancelOrder(int id) {
+        return atmobApi.cancelOrder(new OrderRequest(id))
+                .compose(RxHttpHandler.handle(true))
+                .compose(RxJavaUtil.SingleSchedule.io2Main());
+    }
 }
 }

+ 24 - 3
app/src/main/java/com/datarecovery/master/module/order/OrderItemAdapter.java

@@ -25,6 +25,7 @@ public class OrderItemAdapter extends RecyclerView.Adapter<OrderItemAdapter.View
 
 
     private final AsyncListDiffer<OrderBean> listDiffer;
     private final AsyncListDiffer<OrderBean> listDiffer;
     private final LifecycleOwner lifecycleOwner;
     private final LifecycleOwner lifecycleOwner;
+    private OrderActionHandler orderActionHandler;
 
 
     public OrderItemAdapter(LifecycleOwner lifecycleOwner) {
     public OrderItemAdapter(LifecycleOwner lifecycleOwner) {
         this.lifecycleOwner = lifecycleOwner;
         this.lifecycleOwner = lifecycleOwner;
@@ -60,6 +61,10 @@ public class OrderItemAdapter extends RecyclerView.Adapter<OrderItemAdapter.View
 
 
     }
     }
 
 
+    public void setOrderActionHandler(OrderActionHandler orderActionHandler) {
+        this.orderActionHandler = orderActionHandler;
+    }
+
     @NonNull
     @NonNull
     @Override
     @Override
     public OrderItemAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
     public OrderItemAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
@@ -89,22 +94,32 @@ public class OrderItemAdapter extends RecyclerView.Adapter<OrderItemAdapter.View
             super(binding.getRoot());
             super(binding.getRoot());
             this.binding = binding;
             this.binding = binding;
             binding.setLifecycleOwner(lifecycleOwner);
             binding.setLifecycleOwner(lifecycleOwner);
-            binding.tvCopyOrder.setOnClickListener(v -> {
+            binding.setCopyOrderClick(v -> {
                 OrderBean orderBean = binding.getOrderBean();
                 OrderBean orderBean = binding.getOrderBean();
                 ClipboardUtil.copy(orderBean.getOutTradeNo());
                 ClipboardUtil.copy(orderBean.getOutTradeNo());
                 ToastUtil.show(R.string.copy_success, ToastUtil.LENGTH_SHORT);
                 ToastUtil.show(R.string.copy_success, ToastUtil.LENGTH_SHORT);
             });
             });
-            binding.tvCopyLink.setOnClickListener(v -> {
+            binding.setCopyLinkClick(v -> {
                 OrderBean orderBean = binding.getOrderBean();
                 OrderBean orderBean = binding.getOrderBean();
                 ClipboardUtil.copy(orderBean.getTutorialLink());
                 ClipboardUtil.copy(orderBean.getTutorialLink());
                 ToastUtil.show(R.string.copy_success, ToastUtil.LENGTH_SHORT);
                 ToastUtil.show(R.string.copy_success, ToastUtil.LENGTH_SHORT);
                 EventHelper.report(EventId.hf1001129);
                 EventHelper.report(EventId.hf1001129);
             });
             });
-            binding.tvAuthCodeCopy.setOnClickListener(v -> {
+            binding.setCopyAuthCodeClick(v -> {
                 OrderBean orderBean = binding.getOrderBean();
                 OrderBean orderBean = binding.getOrderBean();
                 ClipboardUtil.copy(orderBean.getAuthCode());
                 ClipboardUtil.copy(orderBean.getAuthCode());
                 ToastUtil.show(R.string.copy_success, ToastUtil.LENGTH_SHORT);
                 ToastUtil.show(R.string.copy_success, ToastUtil.LENGTH_SHORT);
             });
             });
+            binding.setCancelOrderClick(v -> {
+                if (orderActionHandler != null) {
+                    orderActionHandler.cancel(binding.getOrderBean());
+                }
+            });
+            binding.setPayOrderClick(v -> {
+                if (orderActionHandler != null) {
+                    orderActionHandler.payOrder(binding.getOrderBean());
+                }
+            });
         }
         }
 
 
         public void bind(OrderBean orderBean) {
         public void bind(OrderBean orderBean) {
@@ -113,4 +128,10 @@ public class OrderItemAdapter extends RecyclerView.Adapter<OrderItemAdapter.View
     }
     }
 
 
 
 
+    public interface OrderActionHandler {
+        void cancel(OrderBean orderBean);
+
+        void payOrder(OrderBean orderBean);
+    }
+
 }
 }

+ 2 - 1
app/src/main/java/com/datarecovery/master/utils/RxHttpHandler.java

@@ -11,6 +11,7 @@ import com.atmob.app.lib.base.BaseResponse;
 import com.atmob.common.runtime.ContextUtil;
 import com.atmob.common.runtime.ContextUtil;
 import com.atmob.common.runtime.ProcessUtil;
 import com.atmob.common.runtime.ProcessUtil;
 import com.datarecovery.master.data.consts.Constants;
 import com.datarecovery.master.data.consts.Constants;
+import com.datarecovery.master.data.consts.ErrorCode;
 import com.datarecovery.master.data.repositories.AccountRepository;
 import com.datarecovery.master.data.repositories.AccountRepository;
 
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.Constructor;
@@ -82,7 +83,7 @@ public class RxHttpHandler {
         }
         }
         ServerErrorException serverErrorException = throwable instanceof ServerErrorException ? ((ServerErrorException) throwable) : null;
         ServerErrorException serverErrorException = throwable instanceof ServerErrorException ? ((ServerErrorException) throwable) : null;
         if (serverErrorException != null) {
         if (serverErrorException != null) {
-            if (serverErrorException.getCode() == Constants.ERROR_CODE_NO_LOGIN_ERROR) {
+            if (serverErrorException.getCode() == ErrorCode.ERROR_CODE_NO_LOGIN_ERROR) {
                 Application application = ContextUtil.getApplication();
                 Application application = ContextUtil.getApplication();
                 EntryPointAccessors.fromApplication(application, RxHttpHandlerEntryPoint.class)
                 EntryPointAccessors.fromApplication(application, RxHttpHandlerEntryPoint.class)
                         .accountRepository()
                         .accountRepository()

+ 5 - 0
app/src/main/res/drawable/bg_order_cancel.xml

@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android">
+    <corners android:radius="8dp" />
+    <solid android:color="#F4F5F7" />
+</shape>

+ 72 - 11
app/src/main/res/layout/item_order.xml

@@ -9,7 +9,29 @@
             name="orderBean"
             name="orderBean"
             type="com.datarecovery.master.data.api.bean.OrderBean" />
             type="com.datarecovery.master.data.api.bean.OrderBean" />
 
 
+        <variable
+            name="copyOrderClick"
+            type="android.view.View.OnClickListener" />
+
+        <variable
+            name="copyLinkClick"
+            type="android.view.View.OnClickListener" />
+
+        <variable
+            name="copyAuthCodeClick"
+            type="android.view.View.OnClickListener" />
+
+        <variable
+            name="cancelOrderClick"
+            type="android.view.View.OnClickListener" />
+
+        <variable
+            name="payOrderClick"
+            type="android.view.View.OnClickListener" />
+
+
         <import type="com.datarecovery.master.utils.DateUtil" />
         <import type="com.datarecovery.master.utils.DateUtil" />
+
     </data>
     </data>
 
 
     <androidx.constraintlayout.widget.ConstraintLayout
     <androidx.constraintlayout.widget.ConstraintLayout
@@ -57,6 +79,7 @@
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginEnd="12dp"
             android:layout_marginEnd="12dp"
             android:background="@drawable/bg_order_copy"
             android:background="@drawable/bg_order_copy"
+            android:onClick="@{copyOrderClick}"
             android:paddingHorizontal="10dp"
             android:paddingHorizontal="10dp"
             android:paddingVertical="2dp"
             android:paddingVertical="2dp"
             android:text="@string/order_copy"
             android:text="@string/order_copy"
@@ -102,9 +125,9 @@
 
 
 
 
         <TextView
         <TextView
-            isGone="@{!orderBean.isShowLink}"
             android:id="@+id/tv_auth_code_title"
             android:id="@+id/tv_auth_code_title"
             style="@style/Order_List_Content_Txt"
             style="@style/Order_List_Content_Txt"
+            isGone="@{!orderBean.isShowLink}"
             android:layout_width="wrap_content"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
             android:text="@string/order_auth_code"
             android:text="@string/order_auth_code"
@@ -113,14 +136,14 @@
 
 
 
 
         <TextView
         <TextView
-            android:singleLine="true"
-            android:maxWidth="100dp"
-            android:text="@{orderBean.authCode}"
-            isGone="@{!orderBean.isShowLink}"
             android:id="@+id/tv_auth_code"
             android:id="@+id/tv_auth_code"
+            isGone="@{!orderBean.isShowLink}"
             android:layout_width="wrap_content"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginStart="16dp"
             android:layout_marginStart="16dp"
+            android:maxWidth="100dp"
+            android:singleLine="true"
+            android:text="@{orderBean.authCode}"
             android:textColor="@color/colorPrimary"
             android:textColor="@color/colorPrimary"
             android:textSize="14sp"
             android:textSize="14sp"
             android:textStyle="bold"
             android:textStyle="bold"
@@ -131,21 +154,22 @@
         <TextView
         <TextView
             android:id="@+id/tv_auth_code_copy"
             android:id="@+id/tv_auth_code_copy"
             isGone="@{!orderBean.isShowLink}"
             isGone="@{!orderBean.isShowLink}"
-            android:background="@drawable/bg_order_auth_copy"
-            android:layout_marginStart="6dp"
-            app:layout_constraintStart_toEndOf="@+id/tv_auth_code"
             android:layout_width="wrap_content"
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_height="wrap_content"
+            android:layout_marginStart="6dp"
+            android:background="@drawable/bg_order_auth_copy"
+            android:onClick="@{copyAuthCodeClick}"
             android:paddingHorizontal="8dp"
             android:paddingHorizontal="8dp"
             android:paddingVertical="1dp"
             android:paddingVertical="1dp"
             android:text="@string/order_copy"
             android:text="@string/order_copy"
             android:textColor="#404040"
             android:textColor="#404040"
             android:textSize="12sp"
             android:textSize="12sp"
-            app:layout_constraintBaseline_toBaselineOf="@+id/tv_auth_code" />
+            app:layout_constraintBaseline_toBaselineOf="@+id/tv_auth_code"
+            app:layout_constraintStart_toEndOf="@+id/tv_auth_code" />
 
 
         <Space
         <Space
-            isGone="@{!orderBean.isShowLink}"
             android:id="@+id/space_auth_code"
             android:id="@+id/space_auth_code"
+            isGone="@{!orderBean.isShowLink}"
             android:layout_width="match_parent"
             android:layout_width="match_parent"
             android:layout_height="0dp"
             android:layout_height="0dp"
             app:layout_constraintDimensionRatio="360:8"
             app:layout_constraintDimensionRatio="360:8"
@@ -233,6 +257,41 @@
             app:layout_constraintTop_toBottomOf="@+id/space5"
             app:layout_constraintTop_toBottomOf="@+id/space5"
             tools:text="金额:¥66" />
             tools:text="金额:¥66" />
 
 
+        <TextView
+            android:id="@+id/tv_cancel_order"
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            android:layout_marginEnd="12dp"
+            android:background="@drawable/bg_order_cancel"
+            android:gravity="center"
+            android:onClick="@{cancelOrderClick}"
+            android:text="@string/order_cancel_order"
+            android:textColor="#AAAAAA"
+            android:textSize="14sp"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toTopOf="@+id/space6"
+            app:layout_constraintDimensionRatio="88:36"
+            app:layout_constraintEnd_toStartOf="@+id/tv_pay"
+            app:layout_constraintTop_toBottomOf="@+id/space5"
+            app:layout_constraintWidth_percent="0.2444444444444444" />
+
+        <TextView
+            android:onClick="@{payOrderClick}"
+            android:id="@+id/tv_pay"
+            android:layout_width="0dp"
+            android:layout_height="0dp"
+            android:layout_marginEnd="12dp"
+            android:background="@drawable/bg_common_btn"
+            android:gravity="center"
+            android:text="@string/order_pay"
+            android:textColor="@color/white"
+            android:textSize="14sp"
+            android:textStyle="bold"
+            app:layout_constraintBottom_toTopOf="@+id/space6"
+            app:layout_constraintDimensionRatio="88:36"
+            app:layout_constraintEnd_toEndOf="@+id/order_header"
+            app:layout_constraintTop_toBottomOf="@+id/space5"
+            app:layout_constraintWidth_percent="0.2444444444444444" />
 
 
         <TextView
         <TextView
             android:id="@+id/tv_copy_link"
             android:id="@+id/tv_copy_link"
@@ -242,6 +301,7 @@
             android:layout_marginEnd="12dp"
             android:layout_marginEnd="12dp"
             android:background="@drawable/bg_common_btn"
             android:background="@drawable/bg_common_btn"
             android:gravity="center"
             android:gravity="center"
+            android:onClick="@{copyLinkClick}"
             android:text="@string/order_copy_link"
             android:text="@string/order_copy_link"
             android:textColor="@color/white"
             android:textColor="@color/white"
             android:textSize="14sp"
             android:textSize="14sp"
@@ -250,7 +310,8 @@
             app:layout_constraintDimensionRatio="120:36"
             app:layout_constraintDimensionRatio="120:36"
             app:layout_constraintEnd_toEndOf="@+id/order_header"
             app:layout_constraintEnd_toEndOf="@+id/order_header"
             app:layout_constraintTop_toBottomOf="@+id/space5"
             app:layout_constraintTop_toBottomOf="@+id/space5"
-            app:layout_constraintWidth_percent="0.3333333333333333" />
+            app:layout_constraintWidth_percent="0.3333333333333333"
+            tools:visibility="gone" />
 
 
         <Space
         <Space
             android:id="@+id/space7"
             android:id="@+id/space7"

+ 3 - 0
app/src/main/res/values/strings.xml

@@ -201,4 +201,7 @@
     <string name="mine_appeal">申诉/退款</string>
     <string name="mine_appeal">申诉/退款</string>
     <string name="scanning_progress">已扫描%d%%</string>
     <string name="scanning_progress">已扫描%d%%</string>
     <string name="trial_scanning_finish_content">目前只扫描到%d%%,您如需要开放「深层扫描」查看全部数据,请点击去「去恢复」按钮。</string>
     <string name="trial_scanning_finish_content">目前只扫描到%d%%,您如需要开放「深层扫描」查看全部数据,请点击去「去恢复」按钮。</string>
+    <string name="order_cancel_order">取消订单</string>
+    <string name="order_pay">去支付</string>
+    <string name="order_cancel_order_success">取消成功</string>
 </resources>
 </resources>