Browse Source

fix:点击订单时防抖,避免重复扣款

Zhenghanjv 12 giờ trước cách đây
mục cha
commit
71c6ea23fe

+ 6 - 0
.idea/AndroidProjectSystem.xml

@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="AndroidProjectSystem">
+    <option name="providerId" value="com.android.tools.idea.GradleProjectSystem" />
+  </component>
+</project>

+ 17 - 0
.idea/runConfigurations.xml

@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+  <component name="RunConfigurationProducerService">
+    <option name="ignoredProducers">
+      <set>
+        <option value="com.intellij.execution.junit.AbstractAllInDirectoryConfigurationProducer" />
+        <option value="com.intellij.execution.junit.AllInPackageConfigurationProducer" />
+        <option value="com.intellij.execution.junit.PatternConfigurationProducer" />
+        <option value="com.intellij.execution.junit.TestInClassConfigurationProducer" />
+        <option value="com.intellij.execution.junit.UniqueIdConfigurationProducer" />
+        <option value="com.intellij.execution.junit.testDiscovery.JUnitTestDiscoveryConfigurationProducer" />
+        <option value="org.jetbrains.kotlin.idea.junit.KotlinJUnitRunConfigurationProducer" />
+        <option value="org.jetbrains.kotlin.idea.junit.KotlinPatternConfigurationProducer" />
+      </set>
+    </option>
+  </component>
+</project>

+ 2 - 2
app/build.gradle

@@ -21,8 +21,8 @@ android {
         applicationId "com.doverfuelingsolutions.issp"
         minSdkVersion 22
         targetSdkVersion 26
-        versionCode 23
-        versionName "1.2.10"
+        versionCode 24
+        versionName "1.2.11"
         archivesBaseName = versionName + "." + getTime()
 
         testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"

+ 2 - 0
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentNozzle.kt

@@ -20,6 +20,7 @@ import com.doverfuelingsolutions.issp.utils.sp.SPUtil
 import com.doverfuelingsolutions.issp.view.MainActivity
 import com.doverfuelingsolutions.issp.view.adapter.ChooseListAdapter
 import com.doverfuelingsolutions.issp.view.fragment.callback.RefreshNozzle
+import com.doverfuelingsolutions.issp.view.util.ClickUtils
 import com.scwang.smart.refresh.header.ClassicsHeader
 import kotlinx.coroutines.GlobalScope
 import kotlinx.coroutines.async
@@ -82,6 +83,7 @@ class FragmentNozzle private constructor() : FragmentBasic(),RefreshNozzle{
     }
 
     private fun select(physicalId: String) {
+        if (ClickUtils.isFastClick()) return
         if (GlobalData.paymentId.get() == -1) {
             DFSToastUtil.fail(R.string.fail_get_pay_param_retry)
             GlobalScope.launch {

+ 3 - 1
app/src/main/java/com/doverfuelingsolutions/issp/view/fragment/FragmentOrderList.kt

@@ -25,6 +25,7 @@ import com.doverfuelingsolutions.issp.view.MainActivity
 import com.doverfuelingsolutions.issp.view.adapter.ChooseListAdapter
 import com.doverfuelingsolutions.issp.view.adapter.OrderListAdapter
 import com.doverfuelingsolutions.issp.view.fragment.callback.RefreshOrder
+import com.doverfuelingsolutions.issp.view.util.ClickUtils
 import com.scwang.smart.refresh.header.ClassicsHeader
 import com.wayne.www.waynelib.fdc.message.DeviceClass
 import com.wayne.www.waynelib.util.log.DFSLog
@@ -112,6 +113,7 @@ class FragmentOrderList private constructor() : FragmentBasic(),RefreshOrder {
 //    }
 
     private fun selectOrder(dc: DeviceClass, type: Int, position: Int) {
+        if (ClickUtils.isFastClick()) return
         lifecycleScope.launchWhenStarted {
             when {
                 dc.releaseTokenElement == null || dc.releaseTokenAttribute == null -> {
@@ -253,7 +255,6 @@ class FragmentOrderList private constructor() : FragmentBasic(),RefreshOrder {
                     // 锁定订单
                     if (posTrx == null) return@launchWhenStarted
                     val resultLock = FusionManager.lockOrder(dc, true)
-                    dialog.dismiss()
                     (requireActivity() as MainActivity).fragmentRouter.resumeFragmentToolbarTimer()
                     if (resultLock.success) {
                         dc.state = "Locked"
@@ -262,6 +263,7 @@ class FragmentOrderList private constructor() : FragmentBasic(),RefreshOrder {
                     } else {
                         DFSToastUtil.fail(StringUtil.get(R.string.fail_behave_reason, StringUtil.get(R.string.lock_order), resultLock.message))
                     }
+                    dialog.dismiss()
                 }
             } else {
                 dialog.dismiss()

+ 15 - 0
app/src/main/java/com/doverfuelingsolutions/issp/view/util/ClickUtils.kt

@@ -0,0 +1,15 @@
+package com.doverfuelingsolutions.issp.view.util
+
+object ClickUtils {
+    private var lastClickTime:Long = 0L
+    private val SINGLECLICKTIME:Long = 1000L
+
+
+    fun isFastClick():Boolean{
+        val clickTime = System.currentTimeMillis()
+        if (clickTime - lastClickTime < SINGLECLICKTIME) return true
+
+        lastClickTime = clickTime
+        return false
+    }
+}