优化刷卡扫码互斥
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