消费状态切换加锁
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)
}
/**