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 7febabd..0e959eb 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -58,11 +58,11 @@
     private var beepManager: BeepManager? = null
     private val scanLock = ReentrantLock()
     @Volatile
-    private var codeSwitchEnable = false
+    private var cardPaying = false
     @Volatile
     private var payStatusEnable = false
     @Volatile
-    private var isBackRuning = false
+    private var isBackRunning = false
     private var addAmount: Int = 0
     @Volatile
     private var amount: Int = 0
@@ -106,16 +106,12 @@
             }
 
             override fun callback(code: String) {
-                //扫码和寻卡消费互斥
-                if (!codeSwitchEnable) {
-                    return
-                }
                 if (!scanLock.tryLock()) {
                     return
                 }
                 try {
                     //正在扣款
-                    if (dialogPurchase!!.codePaying) {
+                    if (someWayPaying()) {
                         return
                     }
                     //已扣款
@@ -136,6 +132,13 @@
         presenter.loadLastTransdtl()
     }
 
+    private fun someWayPaying(): Boolean {
+        if (cardPaying || dialogPurchase!!.codePaying || isBackRunning) {
+            return true
+        }
+        return false
+    }
+
     private fun initView() {
         vShopname = this.findViewById<TextView>(R.id.tv_shopname)
         vLinkLogo = this.findViewById<ImageView>(R.id.tv_linklogo)
@@ -157,7 +160,7 @@
 
     override fun onStop() {
         super.onStop()
-        isBackRuning = true
+        isBackRunning = true
     }
 
     override fun onDestroy() {
@@ -183,7 +186,7 @@
         when (keyCode) {
             KeyEvent.KEYCODE_DPAD_LEFT -> {
                 //'F1'
-                isBackRuning = true
+                isBackRunning = true
                 jumpActivity(MenuActivity::class.java)
             }
             KeyEvent.KEYCODE_DPAD_RIGHT -> {
@@ -218,7 +221,7 @@
             }
             KeyEvent.KEYCODE_DPAD_LEFT -> {
                 //'F1'
-                isBackRuning = true
+                isBackRunning = true
                 jumpActivity(MenuActivity::class.java)
             }
             KeyEvent.KEYCODE_DPAD_RIGHT -> {
@@ -263,7 +266,7 @@
             }
             KeyEvent.KEYCODE_DPAD_LEFT -> {
                 //'F1'
-                isBackRuning = true
+                isBackRunning = true
                 jumpActivity(MenuActivity::class.java)
             }
 //                KeyEvent.KEYCODE_DPAD_UP ->
@@ -304,7 +307,7 @@
 
     private var lastshowtime: String? = null
     override fun clearUserInfo(datetime: String) {
-        if (!isBackRuning) {
+        if (!isBackRunning) {
             vCitizenName.text = null
             vCitizenCardno.text = null
             vCardstatus.text = null
@@ -325,7 +328,7 @@
 
     override fun onResume() {
         super.onResume()
-        isBackRuning = false
+        isBackRunning = false
         beepManager!!.updatePrefs()
         dealIntent()
         refresh()
@@ -643,8 +646,8 @@
         return this
     }
 
-    override fun isBackRuning(): Boolean {
-        return isBackRuning
+    override fun isBackRunning(): Boolean {
+        return isBackRunning
     }
 
     override fun showRecentDtl(record: TransdtlUnionRecord?) {
@@ -662,8 +665,8 @@
         }
     }
 
-    override fun codeScannerEnable(enable: Boolean) {
-        codeSwitchEnable = enable
+    override fun cardPayingStatus(isPaying: Boolean) {
+        cardPaying = isPaying
     }
 
     private fun resetPayShowCounter(timems: Long) {
diff --git a/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt b/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
index 43b5ed2..6c5d277 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
@@ -16,10 +16,9 @@
  ** create by zzq on 2019/7/25
  ** @desc
  **/
-class ConsumePresenter constructor(iConsumeView: IConsumeView) {
+class ConsumePresenter constructor(private val iConsumeView: IConsumeView) {
     private val TAG = "ConsumePresenter"
     private val pos = SPApplication.getInstance().getPos()
-    private val iConsumeView = iConsumeView
     private val codePayRunnable = CodePayRunnable()
     private lateinit var handler: Handler
     private var cardPayService: CardPayService
diff --git a/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt b/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
index 608ff3f..3ac4df7 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/IConsumeView.kt
@@ -11,7 +11,7 @@
 interface IConsumeView {
     fun getActivity(): Activity
 
-    fun isBackRuning(): Boolean
+    fun isBackRunning(): Boolean
 
     fun showConsumeSuc(info: CardUserInfoBean)
 
@@ -34,6 +34,8 @@
     fun refreshLinkStatus(isOnline: Boolean)
 
     fun showRecentDtl(record: TransdtlUnionRecord?)
-
-    fun codeScannerEnable(enable: Boolean)
+    /**
+     * 是否正在刷卡支付
+     */
+    fun cardPayingStatus(isPaying: Boolean)
 }
\ No newline at end of file
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 b83cdfa..b00585f 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
@@ -88,16 +88,16 @@
         private var curLinkRefreshTime: Long = 0
         override fun run() {
             while (!isExist) {
-                if (iConsumeView.isBackRuning()) {
+                iConsumeView.cardPayingStatus(false)
+                if (iConsumeView.isBackRunning()) {
                     CommonUtil.doSleep(1000)
                     doClear()
                     continue
                 }
-                iConsumeView.codeScannerEnable(true)
                 CommonUtil.doSleep(100)
                 try {
                     val cardphyid = Cardlib.instance.requestCard()
-                    iConsumeView.codeScannerEnable(false)
+                    iConsumeView.cardPayingStatus(true)
                     if (oldcardphyid != cardphyid) {
                         readCard()
                         cardBean!!.cardphyid = cardphyid
@@ -215,7 +215,7 @@
         private fun doConsume() {
             if (isFixMode) {
                 if (lastPayBean.cardphyid == cardBean!!.cardphyid) {
-                    val gap = pos.getSysPara()?.fixpayGap ?: 10
+                    val gap = (pos.getSysPara()?.fixpayGap ?: 10).toLong()
                     if (System.currentTimeMillis() - lastPayBean.suctime < gap * 1000) {
                         throw CardPayFailError("${gap}s内不能连续消费")
                     }
@@ -363,7 +363,10 @@
 
         private fun doOnlineConsumeQuery(): Boolean {
             var queryCnt = 1
-            LogUtil.e(TAG, "pay timeout and query result,cardphyid=[${onlRecord.cardphyid}],billno=[${onlRecord.billno}]")
+            LogUtil.e(
+                TAG,
+                "pay timeout and query result,cardphyid=[${onlRecord.cardphyid}],billno=[${onlRecord.billno}]"
+            )
             sleepWithCancel(1000)
             while (payQueryConfirm) {
                 sendMsg(PublicDef.MSG_CARD_PAY_QUERY, "消费确认中[$queryCnt]")
diff --git a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
index 529e355..989ef92 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/mode/CodePayService.kt
@@ -45,7 +45,7 @@
         try {
             if (isFixMode) {
                 if (lastPayBean.code == code) {
-                    val gap = pos.getSysPara()?.fixpayGap ?: 10
+                    val gap = (pos.getSysPara()?.fixpayGap ?: 10).toLong()
                     if (System.currentTimeMillis() - lastPayBean.suctime < gap * 1000) {
                         throw CardPayFailError("${gap}s内不能连续消费")
                     }
diff --git a/app/src/main/java/com/supwisdom/entity/SysParaRecord.kt b/app/src/main/java/com/supwisdom/entity/SysParaRecord.kt
index 6ddb373..8829b75 100644
--- a/app/src/main/java/com/supwisdom/entity/SysParaRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/SysParaRecord.kt
@@ -17,5 +17,5 @@
     /**
      * 定额消费同卡消费间隔(s)
      */
-    var fixpayGap: Long = 0
+    var fixpayGap: Int = 0
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
index 5e3f70c..8765a41 100644
--- a/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
+++ b/app/src/main/java/com/supwisdom/okhttp/NetworkHandler.kt
@@ -35,7 +35,7 @@
     private var clientLong: OkHttpClient
     private val JSON = MediaType.parse("application/json; charset=utf-8")
     private val FORM_ENCODE = MediaType.parse("application/x-www-form-urlencoded;charset=utf-8")
-    private var commTime = 2
+    private var commTime = 5
     private var clientId: String? = null
     private var jwt: String? = null
 
