Merge branch 'hotfix/1.1.2'
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 20791e7..0db3e42 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,7 +15,6 @@
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
@@ -43,13 +42,12 @@
private var payQueryConfirm = false
var isFixMode = false
private var thread: Thread? = null
- private var cardBean: CardBean? = null
+ private var cardBean = CardBean()
/**
* 防止定额连续消费
*/
private val lastPayBean = LastPayBean()
- private val lock = ReentrantLock()
@Volatile
private var operation = false
@@ -75,32 +73,24 @@
}
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()
+ clickStat = ClickStat.PAY
}
fun clickToReverse(amount: Int) {
- lock.lock()
- clickStat = ClickStat.REVERSE
this.amount = amount
- lock.unlock()
+ clickStat = ClickStat.REVERSE
}
fun clickToInterrupt() {
- lock.lock()
clickStat = ClickStat.INIT
this.amount = 0
payQueryConfirm = false
- lock.unlock()
}
fun resetOperationTime() {
@@ -112,7 +102,6 @@
private lateinit var onlRvsRecord: TransdtlOnlineRecord
private lateinit var offRecord: TransdtlOfflineRecord
private lateinit var offRvsRecord: TransdtlOfflineRecord
- private var oldcardphyid: String? = null
private var onlineBalance = false
private var curLinkStatus = false
private var lastShowTime: Long = 0
@@ -130,19 +119,13 @@
try {
val cardphyid = Cardlib.instance.requestCard()
iConsumeView.cardPayingStatus(true)
- if (oldcardphyid != cardphyid) {
- readCard()
- cardBean!!.cardphyid = cardphyid
- oldcardphyid = cardphyid
- operation = true
- }
+ readCard()
+ cardBean.cardphyid = cardphyid
+ cardBean.amount = amount
+ operation = true
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))
@@ -155,17 +138,11 @@
+ "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(
@@ -179,10 +156,8 @@
+ "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) {
@@ -211,24 +186,24 @@
private fun getAccountInfoByCard() {
val resp = consumeApi.accQuery(
pos.getConfigPara()!!.devphyid!!,
- cardBean!!.cardphyid!!,
- cardBean!!.cardNo!!
+ cardBean.cardphyid!!,
+ cardBean.cardNo!!
)
if (resp != null && resp.retcode == HttpStatus.SC_OK) {
try {
val retBean =
GsonUtil.GsonToBean(resp.retjson!!, CardAccountRetBean::class.java)
if (retBean.retcode == PublicDef.SUCCESS) {
- cardBean!!.username = retBean.username
- cardBean!!.userid = retBean.userid
- cardBean!!.balance = retBean.balance
+ cardBean.username = retBean.username
+ cardBean.userid = retBean.userid
+ cardBean.balance = retBean.balance
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
+ "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) {
@@ -305,31 +280,31 @@
private fun showCardUserInfo() {
val info = CardUserInfoBean(PublicDef.SUCCESS, "账户信息")
- if (cardBean!!.username != cardBean!!.cardNo) {
- info.username = cardBean!!.username
+ if (cardBean.username != cardBean.cardNo) {
+ info.username = cardBean.username
}
- info.cardno = cardBean!!.cardNo
- info.cardstatus = cardBean!!.cardstatus
+ info.cardno = cardBean.cardNo
+ info.cardstatus = cardBean.cardstatus
sendMsg(PublicDef.MSG_USER_INFO_SHOW, info)
}
private fun readCard() {
val cardinfo = Cardlib.instance.readCard()
cardBean = CardBean()
- cardBean!!.cardNo = cardinfo.cardNo
- cardBean!!.idCard = cardinfo.idCard
- cardBean!!.expireDate = cardinfo.expireDate
- cardBean!!.amount = amount
- cardBean!!.datetime = DateUtil.getNowDateTimeFormat()
+ cardBean.cardNo = cardinfo.cardNo
+ cardBean.idCard = cardinfo.idCard
+ cardBean.expireDate = cardinfo.expireDate
+ cardBean.amount = amount
+ cardBean.datetime = DateUtil.getNowDateTimeFormat()
/**
* 用户名默认用卡号代替,在线查询更新为用户名
*/
- cardBean!!.username = cardBean!!.cardNo
+ cardBean.username = cardBean.cardNo
}
private fun doConsume() {
if (isFixMode) {
- if (lastPayBean.cardphyid == cardBean!!.cardphyid) {
+ if (lastPayBean.cardphyid == cardBean.cardphyid) {
val gap = (pos.getSysPara()?.fixpayGap ?: 10).toLong()
if (System.currentTimeMillis() - lastPayBean.suctime < gap * 1000) {
throw CardPayFailError("${gap}s内不能连续消费")
@@ -409,7 +384,7 @@
unionRecord: TransdtlUnionRecord,
record: TransdtlOnlineRecord
) {
- if (record.cardphyid != cardBean!!.cardphyid) {
+ if (record.cardphyid != cardBean.cardphyid) {
throw CardPayCancelFailError("该卡不是最后消费")
}
if (unionRecord.transdate != record.transdate ||
@@ -438,7 +413,7 @@
unionRecord: TransdtlUnionRecord,
record: TransdtlOfflineRecord
) {
- if (record.cardphyid != cardBean!!.cardphyid) {
+ if (record.cardphyid != cardBean.cardphyid) {
throw CardPayCancelFailError("该卡不是最后消费")
}
if (unionRecord.transdate != record.transdate ||
@@ -565,12 +540,12 @@
seqno = pos.getDynamicPara()?.onlineseqno ?: 0
}
onlRecord.devphyid = pos.getConfigPara()!!.devphyid
- onlRecord.transdate = cardBean!!.datetime!!.substring(0, 8)
- onlRecord.transtime = cardBean!!.datetime!!.substring(8)
+ onlRecord.transdate = cardBean.datetime!!.substring(0, 8)
+ onlRecord.transtime = cardBean.datetime!!.substring(8)
onlRecord.devseqno = seqno + 1
- onlRecord.cardno = cardBean!!.cardNo
- onlRecord.cardphyid = cardBean!!.cardphyid
- onlRecord.payamt = cardBean!!.amount
+ onlRecord.cardno = cardBean.cardNo
+ onlRecord.cardphyid = cardBean.cardphyid
+ onlRecord.payamt = cardBean.amount
onlRecord.reversalflag = ReversalFlag.NONE
onlRecord.extraamt = 0
onlRecord.transtype = "card"
@@ -644,12 +619,12 @@
seqno = pos.getDynamicPara()?.offlineseqno ?: 0
}
offRecord.devphyid = pos.getConfigPara()!!.devphyid
- offRecord.transdate = cardBean!!.datetime!!.substring(0, 8)
- offRecord.transtime = cardBean!!.datetime!!.substring(8)
+ offRecord.transdate = cardBean.datetime!!.substring(0, 8)
+ offRecord.transtime = cardBean.datetime!!.substring(8)
offRecord.devseqno = seqno + 1
- offRecord.cardno = cardBean!!.cardNo
- offRecord.cardphyid = cardBean!!.cardphyid
- offRecord.payamt = cardBean!!.amount
+ offRecord.cardno = cardBean.cardNo
+ offRecord.cardphyid = cardBean.cardphyid
+ offRecord.payamt = cardBean.amount
offRecord.reversalflag = ReversalFlag.NONE
offRecord.extraamt = 0
offRecord.managefeetype = "none"
@@ -674,7 +649,7 @@
}
private fun showOnlSucInfo() {
- lastPayBean.cardphyid = cardBean!!.cardphyid
+ lastPayBean.cardphyid = cardBean.cardphyid
lastPayBean.suctime = System.currentTimeMillis()
val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
info.showtime = pos.getSysPara()!!.sucShowtime
@@ -691,7 +666,7 @@
}
private fun showOffSucInfo() {
- lastPayBean.cardphyid = cardBean!!.cardphyid
+ lastPayBean.cardphyid = cardBean.cardphyid
lastPayBean.suctime = System.currentTimeMillis()
val info = CardUserInfoBean(PublicDef.SUCCESS, "消费成功")
info.showtime = pos.getSysPara()!!.sucShowtime
@@ -760,7 +735,6 @@
}
private fun doClear() {
- oldcardphyid = null
onlineBalance = false
val curtime = System.currentTimeMillis()
if (curtime < lastShowTime ||