Pārlūkot izejas kodu

1.支付页面添加倒计时取消支付功能

王鹏鹏 2 gadi atpakaļ
vecāks
revīzija
eff2897cbf

+ 1 - 0
.idea/misc.xml

@@ -527,6 +527,7 @@
         <entry key="..\:/workspace/hcp-pads/healthconsultation/src/main/res/layout/activity_doctor_details.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/healthconsultation/src/main/res/layout/activity_health_consultation.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/healthconsultation/src/main/res/layout/activity_payment.xml" value="0.4744525547445255" />
+        <entry key="..\:/workspace/hcp-pads/healthconsultation/src/main/res/layout/dialog_payment_qr_code.xml" value="0.6" />
         <entry key="..\:/workspace/hcp-pads/healthconsultation/src/main/res/layout/item_consultation_record.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/healthconsultation/src/main/res/layout/item_recommend_doctor.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/home/src/main/res/drawable/bg_results_content.xml" value="0.151" />

+ 38 - 2
healthconsultation/src/main/java/com/yingyang/healthconsultation/dialog/PaymentQrCodeDialog.kt

@@ -8,6 +8,7 @@ import android.view.ViewGroup
 import androidx.appcompat.widget.AppCompatButton
 import androidx.appcompat.widget.AppCompatImageView
 import androidx.appcompat.widget.AppCompatTextView
+import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.fragment.app.DialogFragment
 import com.bumptech.glide.Glide
 import com.google.zxing.common.BitmapUtils
@@ -16,9 +17,11 @@ import com.gyf.immersionbar.ktx.immersionBar
 import com.yingyang.healthconsultation.R
 import com.yingyang.healthconsultation.net.HealthConsultationsServiceFactory
 import com.yingyangfly.baselib.ext.setOnSingleClickListener
+import com.yingyangfly.baselib.ext.show
 import com.yingyangfly.baselib.ext.toast
 import com.yingyangfly.baselib.net.BaseObserver
 import com.yingyangfly.baselib.net.MyRxScheduler
+import com.yingyangfly.baselib.utils.RxTimer
 import com.yingyangfly.baselib.utils.ViewTool
 import gorden.rxbus2.RxBus
 import io.reactivex.schedulers.Schedulers
@@ -28,8 +31,10 @@ class PaymentQrCodeDialog : DialogFragment() {
     private var orderNo = ""
     private var qrCode = ""
     private var method = ""
-
-    private var purchaseServicesBtn: AppCompatTextView? = null
+    private lateinit var rxTimer: RxTimer
+    var time: Long = 0
+    private var tvCountdown: AppCompatTextView? = null
+    private var purchaseServicesBtn: ConstraintLayout? = null
     private var payImage: AppCompatImageView? = null
     private var paySuccessBtn: AppCompatButton? = null
     private var imageClose: AppCompatImageView? = null
@@ -76,6 +81,7 @@ class PaymentQrCodeDialog : DialogFragment() {
 
     private fun findId(rootView: View) {
         purchaseServicesBtn = rootView.findViewById(R.id.purchaseServicesBtn)
+        tvCountdown = rootView.findViewById(R.id.tvCountdown)
         payImage = rootView.findViewById(R.id.payImage)
         paySuccessBtn = rootView.findViewById(R.id.paySuccessBtn)
         imageClose = rootView.findViewById(R.id.imageClose)
@@ -101,12 +107,42 @@ class PaymentQrCodeDialog : DialogFragment() {
     }
 
     private fun init() {
+        rxTimer = RxTimer()
         if (qrCode.isEmpty().not()) {
             val bitmap = BitmapUtils.create2DCode(qrCode)
             if (bitmap != null) {
                 Glide.with(this).load(bitmap).into(payImage!!)
             }
         }
+        startTimer()
+    }
+
+    /**
+     * 开始倒计时
+     */
+    private fun startTimer() {
+        val m: Long = 1000
+        rxTimer.interval(m) {
+            time = 60 * 15 * 1 - it - 1
+            val minutes = time / 60
+            val seconds = time % 60
+            if (it == time - 1) {
+                rxTimer.cancel()
+                tvCountdown?.show(false)
+                delPayOrder()
+            } else {
+                tvCountdown?.show(true)
+                tvCountdown?.text = if (minutes > 0) {
+                    if (seconds > 0) {
+                        "支付倒计时:$minutes 分钟 $seconds 秒"
+                    } else {
+                        "支付倒计时:$minutes 分钟"
+                    }
+                } else {
+                    "支付倒计时:$seconds 秒消"
+                }
+            }
+        }
     }
 
     /**

+ 18 - 2
healthconsultation/src/main/res/layout/activity_payment.xml

@@ -75,18 +75,34 @@
                 android:layout_width="match_parent"
                 android:layout_height="match_parent">
 
+                <androidx.appcompat.widget.AppCompatTextView
+                    android:id="@+id/tvTime"
+                    android:layout_width="match_parent"
+                    android:layout_height="@dimen/divider_54px"
+                    android:layout_marginStart="@dimen/divider_36px"
+                    android:layout_marginTop="@dimen/divider_17px"
+                    android:layout_marginEnd="@dimen/divider_36px"
+                    android:background="@drawable/bg_payment_timing"
+                    android:gravity="center"
+                    android:text="@string/please_complete_payment_within_minutes_any_delay_cancelle"
+                    android:textColor="@android:color/white"
+                    android:textSize="@dimen/divider_24px"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toTopOf="parent" />
+
                 <androidx.appcompat.widget.AppCompatTextView
                     android:id="@+id/tvGraphicConsultation"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_marginStart="@dimen/divider_41px"
-                    android:layout_marginTop="@dimen/divider_22px"
+                    android:layout_marginTop="@dimen/divider_16px"
                     android:text="@string/inquiries_consultation"
                     android:textColor="@color/color_FF333333"
                     android:textSize="@dimen/divider_28px"
                     android:textStyle="bold"
                     app:layout_constraintStart_toStartOf="parent"
-                    app:layout_constraintTop_toTopOf="parent" />
+                    app:layout_constraintTop_toBottomOf="@+id/tvTime" />
 
                 <androidx.appcompat.widget.AppCompatTextView
                     android:id="@+id/tvDocotrName"

+ 31 - 8
healthconsultation/src/main/res/layout/dialog_payment_qr_code.xml

@@ -25,19 +25,42 @@
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toTopOf="parent">
 
-        <androidx.appcompat.widget.AppCompatTextView
+        <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/purchaseServicesBtn"
             android:layout_width="match_parent"
             android:layout_height="@dimen/divider_120px"
             android:background="@drawable/bg_payment_services_alipay"
-            android:gravity="center"
-            android:text="@string/order_payment"
-            android:textColor="@android:color/white"
-            android:textSize="@dimen/divider_34px"
-            android:textStyle="bold"
-            app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toStartOf="parent"
-            app:layout_constraintTop_toTopOf="parent" />
+            app:layout_constraintTop_toTopOf="parent">
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvTitle"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/divider_20px"
+                android:gravity="center"
+                android:text="@string/order_payment"
+                android:textColor="@android:color/white"
+                android:textSize="@dimen/divider_34px"
+                android:textStyle="bold"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toTopOf="parent" />
+
+            <androidx.appcompat.widget.AppCompatTextView
+                android:id="@+id/tvCountdown"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="@dimen/divider_8px"
+                android:gravity="center"
+                android:textColor="@android:color/white"
+                android:textSize="@dimen/divider_24px"
+                android:text="@string/pay_countdown"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/tvTitle" />
+
+        </androidx.constraintlayout.widget.ConstraintLayout>
 
         <androidx.appcompat.widget.AppCompatImageView
             android:id="@+id/payImage"

+ 1 - 0
healthconsultation/src/main/res/values/strings.xml

@@ -62,4 +62,5 @@
     <string name="complete" tools:ignore="ResourceName">完成</string>
     <string name="consultation" tools:ignore="ResourceName">问诊</string>
     <string name="payment" tools:ignore="ResourceName">支付</string>
+    <string name="pay_countdown" tools:ignore="ResourceName">支付倒计时:15分钟</string>
 </resources>