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 ||