消费状态切换加锁
diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
index 5ce1f02..2b2575c 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -457,7 +457,7 @@
     }

 

     private fun parsePeriodFixPay() {

-        val nowtime = DateUtil.getNowTimeNoFormat().substring(0, 4)

+        val nowtime = DateUtil.getTimeHHmm()

         periodFixPayList?.forEach {

             if (it.beginTime!! <= nowtime && nowtime < it.endTime!!) {

                 if (payMode != PayMode.FIXPAY || amount != it.amount) {

@@ -698,7 +698,8 @@
         return try {

             CommonUtil.YuanToFen(

                 java.lang.Double.parseDouble(

-                    amountTxt.text.toString().trim { it <= ' ' })

+                    amountTxt.text.toString()

+                )

             )

         } catch (ex: Exception) {

             ex.printStackTrace()

@@ -718,7 +719,7 @@
             }

         } else {

             //限制消费金额<10000

-            if (str.length < 4) {

+            if (str.length < 5) {

                 amountTxt.text = "$str$value"

             }

         }

diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
index f89263d..20791e7 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CardPayService.kt
@@ -15,6 +15,7 @@
 import com.supwisdom.service.EpayApiImpl

 import com.supwisdom.utils.*

 import org.apache.http.HttpStatus

+import java.util.concurrent.locks.ReentrantLock

 

 /**

  ** create by zzq on 2019/7/25

@@ -48,6 +49,7 @@
      * 防止定额连续消费

      */

     private val lastPayBean = LastPayBean()

+    private val lock = ReentrantLock()

 

     @Volatile

     private var operation = false

@@ -73,23 +75,32 @@
     }

 

     fun clickNoPay() {

+        lock.lock()

         clickStat = ClickStat.INIT

         amount = 0

+        lock.unlock()

     }

 

     fun clickToPay(amount: Int) {

+        lock.lock()

         clickStat = ClickStat.PAY

         this.amount = amount

+        lock.unlock()

     }

 

     fun clickToReverse(amount: Int) {

+        lock.lock()

         clickStat = ClickStat.REVERSE

         this.amount = amount

+        lock.unlock()

     }

 

     fun clickToInterrupt() {

+        lock.lock()

         clickStat = ClickStat.INIT

+        this.amount = 0

         payQueryConfirm = false

+        lock.unlock()

     }

 

     fun resetOperationTime() {

@@ -128,6 +139,10 @@
                     when (clickStat) {

                         ClickStat.PAY -> {

                             try {

+                                lock.lock()

+                                if (clickStat != ClickStat.PAY) {

+                                    throw CardPayInterruptError("支付状态已改变")

+                                }

                                 doConsume()

                             } catch (ex: CardPayFailError) {

                                 sendMsg(PublicDef.MSG_CARD_PAY_FAIL, getErrorInfo(ex.message))

@@ -140,11 +155,17 @@
                                             + "exception=${CommonUtil.getExceptionStack(ex)}"

                                 )

                                 sendMsg(PublicDef.MSG_CARD_PAY_FAIL, getErrorInfo("程序异常"))

+                            } finally {

+                                clickStat = ClickStat.INIT

+                                lock.unlock()

                             }

-                            clickStat = ClickStat.INIT

                         }

                         ClickStat.REVERSE -> {

                             try {

+                                lock.lock()

+                                if (clickStat != ClickStat.REVERSE) {

+                                    throw CardPayInterruptError("支付状态已改变")

+                                }

                                 doReverse()

                             } catch (ex: CardPayCancelFailError) {

                                 sendMsg(

@@ -158,8 +179,10 @@
                                             + "exception=${CommonUtil.getExceptionStack(ex)}"

                                 )

                                 sendMsg(PublicDef.MSG_CARD_REVERSE_FAIL, getRvsErrorInfo("程序异常"))

+                            } finally {

+                                clickStat = ClickStat.INIT

+                                lock.unlock()

                             }

-                            clickStat = ClickStat.INIT

                         }

                         ClickStat.INIT -> {

                             if (SPApplication.getInstance().isOnline() && !onlineBalance) {

@@ -199,13 +222,13 @@
                         cardBean!!.username = retBean.username

                         cardBean!!.userid = retBean.userid

                         cardBean!!.balance = retBean.balance

-                        when {

-                            "normal" == retBean.status -> cardBean!!.cardstatus = CardStatus.NORMAL

-                            "expire" == retBean.status -> cardBean!!.cardstatus = CardStatus.EXPIRE

-                            "lost" == retBean.status -> cardBean!!.cardstatus = CardStatus.LOCK

-                            "logout" == retBean.status -> cardBean!!.cardstatus = CardStatus.LOGOUT

-                            "frozen" == retBean.status -> cardBean!!.cardstatus = CardStatus.FROZEN

-                            "lock" == retBean.status -> cardBean!!.cardstatus = CardStatus.LOST

+                        when (retBean.status) {

+                            "normal" -> cardBean!!.cardstatus = CardStatus.NORMAL

+                            "expire" -> cardBean!!.cardstatus = CardStatus.EXPIRE

+                            "lost" -> cardBean!!.cardstatus = CardStatus.LOCK

+                            "logout" -> cardBean!!.cardstatus = CardStatus.LOGOUT

+                            "frozen" -> cardBean!!.cardstatus = CardStatus.FROZEN

+                            "lock" -> cardBean!!.cardstatus = CardStatus.LOST

                         }

                     }

                 } catch (ex: Exception) {

diff --git a/app/src/main/java/com/supwisdom/utils/DateUtil.kt b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
index 0430400..c8a358d 100644
--- a/app/src/main/java/com/supwisdom/utils/DateUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/DateUtil.kt
@@ -16,6 +16,7 @@
     private val FORMAT_yyMMddHHmmss2 =

         org.apache.commons.lang3.time.FastDateFormat.getInstance("yy-MM-dd HH:mm:ss")

     private val FORMAT_HHmmss = org.apache.commons.lang3.time.FastDateFormat.getInstance("HHmmss")

+    private val FORMAT_HHmm = org.apache.commons.lang3.time.FastDateFormat.getInstance("HHmm")

     private val FORMAT_MMdd = org.apache.commons.lang3.time.FastDateFormat.getInstance("MMdd")

     private val FORMAT_MM_dd = org.apache.commons.lang3.time.FastDateFormat.getInstance("MM-dd")

     private val FORMAT_yyyyMMddHHmmss =

@@ -111,16 +112,15 @@
         }

     }

 

+    fun getTimeHHmm(): String {

+        return FORMAT_HHmm.format(Date())

+    }

+

     /**

      * @return MM-dd

      */

     fun getDate_MMdd(): String? {

-        try {

-            return FORMAT_MM_dd.format(Date())

-        } catch (e: Exception) {

-            e.printStackTrace()

-        }

-        return null

+        return FORMAT_MM_dd.format(Date())

     }

 

     /**

@@ -149,12 +149,7 @@
      * @return

      */

     fun getNowDateTime(dateStr: String): Date? {

-        try {

-            return FORMAT_yyyy_MM_dd.parse(dateStr)

-        } catch (e: ParseException) {

-            e.printStackTrace()

-        }

-        return null

+        return FORMAT_yyyy_MM_dd.parse(dateStr)

     }

 

     /**

@@ -206,12 +201,7 @@
      * @return yyyyMMdd

      */

     fun getNowDateNoFormat(date: Date): String? {

-        try {

-            return FORMAT_yyyyMMdd.format(date)

-        } catch (e: Exception) {

-            e.printStackTrace()

-        }

-        return null

+        return FORMAT_yyyyMMdd.format(date)

     }

 

     /**