Browse Source

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

王鹏鹏 2 years ago
parent
commit
f6e20c23d5

+ 1 - 0
.idea/misc.xml

@@ -622,6 +622,7 @@
         <entry key="..\:/workspace/hcp-pads/workbenches/src/main/res/layout/activity_service_package.xml" value="0.3953084274543875" />
         <entry key="..\:/workspace/hcp-pads/workbenches/src/main/res/layout/activity_train_content_details.xml" value="0.23697916666666666" />
         <entry key="..\:/workspace/hcp-pads/workbenches/src/main/res/layout/activity_train_data.xml" value="0.23697916666666666" />
+        <entry key="..\:/workspace/hcp-pads/workbenches/src/main/res/layout/dialog_purchase_services.xml" value="0.6" />
         <entry key="..\:/workspace/hcp-pads/workbenches/src/main/res/layout/fragment_brain_ability.xml" value="0.176" />
         <entry key="..\:/workspace/hcp-pads/workbenches/src/main/res/layout/fragment_data_monitor.xml" value="0.8800000000000001" />
         <entry key="..\:/workspace/hcp-pads/workbenches/src/main/res/layout/fragment_train_content.xml" value="0.23697916666666666" />

+ 44 - 3
workbenches/src/main/java/com/yingyang/workbenches/dialog/PurchaseServicesDialog.kt

@@ -12,7 +12,9 @@ import android.view.View
 import android.view.ViewGroup
 import android.widget.Button
 import android.widget.TextView
+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
@@ -30,6 +32,7 @@ import com.yingyangfly.baselib.net.BaseObserver
 import com.yingyangfly.baselib.net.MyRxScheduler
 import com.yingyangfly.baselib.net.XUtils
 import com.yingyangfly.baselib.utils.GsonUtil
+import com.yingyangfly.baselib.utils.RxTimer
 import com.yingyangfly.baselib.utils.ViewTool
 import io.reactivex.schedulers.Schedulers
 
@@ -43,14 +46,18 @@ class PurchaseServicesDialog : DialogFragment() {
     private var payMoney = ""
     private var packageName = ""
     private var packageType = ""
+    private lateinit var rxTimer: RxTimer
+    var time: Long = 0
 
+    private var tvCountdown: AppCompatTextView? = null
     private var tvPackageMoney: TextView? = null
     private var tvPay: TextView? = null
     private var weChatLayout: ConstraintLayout? = null
     private var alipayLayout: ConstraintLayout? = null
     private var payImage: AppCompatImageView? = null
     private var paySuccessBtn: Button? = null
-    private var purchaseServicesBtn: Button? = null
+    private var purchaseServicesLayout: ConstraintLayout? = null
+    private var purchaseServicesBtn: AppCompatButton? = null
 
     fun setPackageBean(
         packageId: String,
@@ -98,6 +105,8 @@ class PurchaseServicesDialog : DialogFragment() {
 
     @SuppressLint("SetTextI18n")
     private fun findId(rootView: View) {
+        purchaseServicesLayout = rootView.findViewById(R.id.purchaseServicesLayout)
+        tvCountdown = rootView.findViewById(R.id.tvCountdown)
         tvPackageMoney = rootView.findViewById(R.id.tvPackageMoney)
         tvPay = rootView.findViewById(R.id.tvPay)
         weChatLayout = rootView.findViewById(R.id.weChatLayout)
@@ -153,7 +162,35 @@ class PurchaseServicesDialog : DialogFragment() {
     }
 
     private fun init() {
+        rxTimer = RxTimer()
+    }
 
+    /**
+     * 开始倒计时
+     */
+    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 秒消"
+                }
+            }
+        }
     }
 
     /**
@@ -168,12 +205,16 @@ class PurchaseServicesDialog : DialogFragment() {
             .subscribe(object : BaseObserver<PayImageBean>() {
                 override fun onSuccess(t: PayImageBean?) {
                     t?.let {
+                        purchaseServicesLayout?.show(true)
+                        purchaseServicesBtn?.show(false)
+                        tvCountdown?.show(true)
+                        startTimer()
                         orderNo = it.orderNo
                         if (TextUtils.equals("1", bean.payMethod)) {
-                            purchaseServicesBtn?.setBackgroundResource(R.drawable.bg_purchase_services_wechatpay)
+                            purchaseServicesLayout?.setBackgroundResource(R.drawable.bg_purchase_services_wechatpay)
                             paySuccessBtn?.setBackgroundResource(R.drawable.bg_purchase_services_wechatpay_btn)
                         } else {
-                            purchaseServicesBtn?.setBackgroundResource(R.drawable.bg_purchase_services_alipay)
+                            purchaseServicesLayout?.setBackgroundResource(R.drawable.bg_purchase_services_alipay)
                             paySuccessBtn?.setBackgroundResource(R.drawable.bg_work_benches_btn)
                         }
                         val bitmap = BitmapUtils.create2DCode(it.qrCode)

+ 56 - 15
workbenches/src/main/res/layout/dialog_purchase_services.xml

@@ -23,23 +23,64 @@
             android:layout_height="@dimen/divider_597px"
             android:background="@drawable/bg_purchase_services"
             app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent">
 
-            <Button
+            <androidx.appcompat.widget.AppCompatButton
                 android:id="@+id/purchaseServicesBtn"
                 android:layout_width="match_parent"
                 android:layout_height="@dimen/divider_120px"
                 android:background="@drawable/bg_purchase_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_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
 
+            <androidx.constraintlayout.widget.ConstraintLayout
+                android:id="@+id/purchaseServicesLayout"
+                android:layout_width="match_parent"
+                android:layout_height="@dimen/divider_120px"
+                android:background="@drawable/bg_purchase_services_alipay"
+                android:visibility="gone"
+                app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/purchaseServicesBtn">
+
+                <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:text="@string/pay_countdown"
+                    android:textColor="@android:color/white"
+                    android:textSize="@dimen/divider_24px"
+                    android:visibility="gone"
+                    app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
+                    app:layout_constraintTop_toBottomOf="@+id/tvTitle" />
+
+            </androidx.constraintlayout.widget.ConstraintLayout>
+
             <TextView
                 android:id="@+id/tvPackageMoney"
                 android:layout_width="wrap_content"
@@ -48,9 +89,9 @@
                 android:textColor="@color/color_FF333333"
                 android:textSize="@dimen/divider_32px"
                 android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/purchaseServicesBtn" />
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/purchaseServicesLayout" />
 
             <TextView
                 android:id="@+id/tvPay"
@@ -61,8 +102,8 @@
                 android:textColor="@color/color_FF333333"
                 android:textSize="@dimen/divider_32px"
                 android:textStyle="bold"
-                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/tvPackageMoney" />
 
             <androidx.constraintlayout.widget.ConstraintLayout
@@ -71,9 +112,9 @@
                 android:layout_height="0dp"
                 android:layout_marginTop="@dimen/divider_76px"
                 app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toStartOf="@id/alipayLayout"
                 app:layout_constraintHorizontal_weight="1"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintEnd_toStartOf="@id/alipayLayout"
                 app:layout_constraintTop_toBottomOf="@+id/tvPay">
 
                 <androidx.appcompat.widget.AppCompatImageView
@@ -81,8 +122,8 @@
                     android:layout_width="@dimen/divider_106px"
                     android:layout_height="@dimen/divider_88px"
                     android:background="@mipmap/icon_wechat"
-                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toTopOf="parent" />
 
                 <androidx.appcompat.widget.AppCompatTextView
@@ -92,8 +133,8 @@
                     android:text="@string/wechat_payment"
                     android:textColor="@color/color_FF333333"
                     android:textSize="@dimen/divider_28px"
-                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/imageWeChat" />
 
             </androidx.constraintlayout.widget.ConstraintLayout>
@@ -104,9 +145,9 @@
                 android:layout_height="0dp"
                 android:layout_marginTop="@dimen/divider_76px"
                 app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintHorizontal_weight="1"
                 app:layout_constraintStart_toEndOf="@id/weChatLayout"
-                app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/tvPay">
 
                 <androidx.appcompat.widget.AppCompatImageView
@@ -114,8 +155,8 @@
                     android:layout_width="@dimen/divider_90px"
                     android:layout_height="@dimen/divider_90px"
                     android:background="@mipmap/icon_alipay"
-                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toTopOf="parent" />
 
                 <androidx.appcompat.widget.AppCompatTextView
@@ -125,8 +166,8 @@
                     android:text="@string/alipay_payment"
                     android:textColor="@color/color_FF333333"
                     android:textSize="@dimen/divider_28px"
-                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintEnd_toEndOf="parent"
+                    app:layout_constraintStart_toStartOf="parent"
                     app:layout_constraintTop_toBottomOf="@+id/imageAlipay" />
 
             </androidx.constraintlayout.widget.ConstraintLayout>
@@ -136,9 +177,9 @@
                 android:layout_width="@dimen/divider_230px"
                 android:layout_height="@dimen/divider_230px"
                 android:visibility="gone"
-                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/purchaseServicesBtn" />
+                app:layout_constraintStart_toStartOf="parent"
+                app:layout_constraintTop_toBottomOf="@+id/purchaseServicesLayout" />
 
             <Button
                 android:id="@+id/paySuccessBtn"
@@ -151,8 +192,8 @@
                 android:text="@string/payment_completed"
                 android:textColor="@android:color/white"
                 android:textSize="@dimen/divider_28px"
-                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintEnd_toEndOf="parent"
+                app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/payImage" />
 
         </androidx.constraintlayout.widget.ConstraintLayout>

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

@@ -57,4 +57,5 @@
     <string name="status" tools:ignore="ResourceName">状态</string>
     <string name="exclusive_training" tools:ignore="ResourceName">专属训练</string>
     <string name="trends_changes_primary_brain_abilities" tools:ignore="ResourceName">一级脑能力变化趋势</string>
+    <string name="pay_countdown" tools:ignore="ResourceName">支付倒计时:15分钟</string>
 </resources>