init
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 78ca339..2b2b54c 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -103,6 +103,26 @@
android:name=".activities.upgrade.UpgradeAcvitity"
android:label="@string/title_activity_consume"
android:launchMode="singleTask"/>
+ <activity
+ android:name=".activities.control.ControlActivity"
+ android:label="@string/title_activity_consume"
+ android:launchMode="singleTask"/>
+ <activity
+ android:name=".activities.manage.ManageActivity"
+ android:label="@string/title_activity_consume"
+ android:launchMode="singleTask"/>
+ <activity
+ android:name=".activities.menu.MenuActivity"
+ android:label="@string/title_activity_consume"
+ android:launchMode="singleTask"/>
+ <activity
+ android:name=".activities.transdtl.TransdtlActivity"
+ android:label="@string/title_activity_consume"
+ android:launchMode="singleTask"/>
+ <activity
+ android:name=".activities.communicate.CommunicateActivity"
+ android:label="@string/title_activity_consume"
+ android:launchMode="singleTask"/>
</application>
</manifest>
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/cardlib/CardlibActivity.kt b/app/src/main/java/com/supwisdom/activities/cardlib/CardlibActivity.kt
index a85fbc5..ea4b1c3 100644
--- a/app/src/main/java/com/supwisdom/activities/cardlib/CardlibActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/cardlib/CardlibActivity.kt
@@ -1,11 +1,126 @@
package com.supwisdom.activities.cardlib
+import android.os.Bundle
+import android.view.KeyEvent
+import android.view.View
+import android.view.Window
+import android.widget.ProgressBar
+import android.widget.TextView
+import com.supwisdom.R
import com.supwisdom.activities.BaseActivity
+import com.supwisdom.activities.SPApplication
+import com.supwisdom.activities.init.InitActivity
+import com.supwisdom.activities.load.LoadActivity
+import com.supwisdom.auxscreen.AuxScreenController
+import com.supwisdom.utils.AppExitUtil
+import com.supwisdom.utils.DateUtil
+import com.supwisdom.utils.PublicDef
+import com.supwisdom.view.BigProgressDialog
/**
** create by zzq on 2019/7/25
** @desc
**/
-class CardlibActivity : BaseActivity() {
+@Suppress("DEPRECATION")
+class CardlibActivity : BaseActivity(), ICardlibView {
+ private var vResult: TextView? = null
+ private var vProgressBar: ProgressBar? = null
+ private var presenter: CardlibPresenter? = null
+ @Volatile
+ private var isLoading = false
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ //在窗口标题上显示带进度的横向进度条
+ requestWindowFeature(Window.FEATURE_PROGRESS)
+ //显示不带进度的进度条
+ requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS)
+
+ setContentView(R.layout.activity_cardlib)
+ initView()
+ initData()
+ }
+
+ private fun initData() {
+ presenter = CardlibPresenter(this)
+ }
+
+ private fun initView() {
+ vProgressBar = this.findViewById(R.id.cardlib_bar) as ProgressBar
+ vResult = this.findViewById(R.id.cardlib_result) as TextView
+ }
+
+ override fun showProgress(progress: Int) {
+ vProgressBar!!.progress = progress
+ }
+
+ override fun onResume() {
+ super.onResume()
+ if (!isLoading) {
+ isLoading = true
+ refresh()
+ presenter!!.doInitCardlib(this)
+ }
+ }
+
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (isLoading) {
+ return false
+ }
+ when (event.keyCode) {
+ KeyEvent.KEYCODE_DEL -> {
+ AppExitUtil.exit()
+ }
+ }
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ private fun refresh() {
+ AuxScreenController.getInstance().refreshTitle("卡库初始化")
+ AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+ AuxScreenController.getInstance().refreshContent(listOf("加载硬件驱动", "请稍等..."))
+ }
+
+ override fun showInitCardlibResult(issuccess: Boolean, msg: String) {
+ if (issuccess) {
+ val ctlRecord = SPApplication.getInstance().getPos().getControlPara(PublicDef.CONTROL_HAS_REGISTER)
+ if (ctlRecord == null) {
+ jumpActivity(InitActivity::class.java)
+ } else {
+ val record = SPApplication.getInstance().getPos().getConfigPara()
+ if (record != null && record.initOK) {
+ jumpActivity(LoadActivity::class.java)
+ } else {
+ jumpActivity(InitActivity::class.java)
+ }
+ }
+ } else {
+ vResult!!.text = msg
+ vResult!!.visibility = View.VISIBLE
+ AuxScreenController.getInstance().refreshTitle("卡库初始化")
+ AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDate())
+ AuxScreenController.getInstance().refreshContent(listOf("请联系管理员", "加载驱动失败", "原因:", msg))
+ }
+ isLoading = false
+ }
+
+ private var dialogProgress: BigProgressDialog? = null
+
+ override fun showProgressDialog(msg: String) {
+ if (dialogProgress == null) {
+ dialogProgress = BigProgressDialog(this, msg, false)
+ }
+ dialogProgress!!.setMsg(msg)
+ dialogProgress!!.show()
+ }
+
+ override fun closeProgressDialog() {
+ dialogProgress?.dismiss()
+ }
+
+ override fun onDestroy() {
+ super.onDestroy()
+ }
}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/cardlib/CardlibPresenter.kt b/app/src/main/java/com/supwisdom/activities/cardlib/CardlibPresenter.kt
new file mode 100644
index 0000000..241072e
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/cardlib/CardlibPresenter.kt
@@ -0,0 +1,98 @@
+package com.supwisdom.activities.cardlib
+
+import android.app.Activity
+import android.os.AsyncTask
+import android.os.Handler
+import android.os.Looper
+import android.os.Message
+import com.supwisdom.epaycard.Cardlib
+import com.supwisdom.exception.CardlibInitError
+import com.supwisdom.utils.CommonUtil
+import com.supwisdom.utils.ThreadPool
+
+/**
+ * Created by zzq on 2017/11/7.
+ */
+class CardlibPresenter constructor(iCardlibView: ICardlibView) {
+ private val iCardlibView = iCardlibView
+ private val handler: Handler
+ @Volatile
+ private var cardlibStat = CardLibStatus.INIT
+ private var cardlibResult: String? = null
+
+ init {
+ handler = object : Handler(Looper.getMainLooper()) {
+ override fun handleMessage(msg: Message?) {
+ when (msg!!.what) {
+ 1 ->
+ iCardlibView.showProgress(msg.obj as Int)
+ 2 -> {
+ if (CardLibStatus.SUCCESS == cardlibStat) {
+ iCardlibView.showInitCardlibResult(true, cardlibResult!!)
+ } else {
+ iCardlibView.showInitCardlibResult(false, cardlibResult!!)
+ }
+ }
+ }
+ }
+ }
+ }
+
+ fun doInitCardlib(acy: Activity) {
+ doProgressBar()
+ AsyncInitCardlib().execute(acy)
+ }
+
+ private inner class AsyncInitCardlib : AsyncTask<Activity, Unit, CardlibInitError?>() {
+ override fun onPostExecute(result: CardlibInitError?) {
+ if (result != null) {
+ cardlibStat = CardLibStatus.FAIL
+ cardlibResult = result.toString()
+ } else {
+ cardlibStat = CardLibStatus.SUCCESS
+ cardlibResult = "加载读卡库成功"
+ }
+ }
+
+ override fun doInBackground(vararg p0: Activity?): CardlibInitError? {
+ return try {
+ Cardlib.instance.init()
+ null
+ } catch (ex: CardlibInitError) {
+ ex
+ }
+ }
+ }
+
+ private fun doProgressBar() {
+ ThreadPool.getShortPool().execute(Runnable {
+ var i = 0
+ while (cardlibStat == CardLibStatus.INIT) {
+ CommonUtil.doSleep(500)
+ i++
+ if (i > 100) {
+ i = 100
+ }
+ sendMsg(1, i)
+ }
+ while (i < 100) {
+ CommonUtil.doSleep(20)
+ sendMsg(1, i++)
+ }
+ sendMsg(2, 100)
+ })
+ }
+
+ private fun sendMsg(retcode: Int, retmsg: Any) {
+ val msg = Message()
+ msg.what = retcode
+ msg.obj = retmsg
+ handler.sendMessage(msg)
+ }
+}
+
+private enum class CardLibStatus(num: Int) {
+ INIT(0),
+ SUCCESS(1),
+ FAIL(2)
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/activities/cardlib/ICardlibView.kt b/app/src/main/java/com/supwisdom/activities/cardlib/ICardlibView.kt
new file mode 100644
index 0000000..bdb8c6c
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/activities/cardlib/ICardlibView.kt
@@ -0,0 +1,14 @@
+package com.supwisdom.activities.cardlib
+
+/**
+ * Created by zzq on 2017/11/7.
+ */
+interface ICardlibView {
+ fun showProgressDialog(msg: String)
+
+ fun closeProgressDialog()
+
+ fun showInitCardlibResult(issuccess: Boolean, msg: String)
+
+ fun showProgress(progress: Int)
+}
\ No newline at end of file
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 f3203a1..47c6bdc 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -25,6 +25,7 @@
import com.supwisdom.utils.DateUtil
import com.supwisdom.utils.PublicDef
import com.supwisdom.utils.SoundUtil
+import com.supwisdom.view.DialogPurchase
import java.util.*
/**
@@ -55,8 +56,10 @@
@Volatile
private var isBackRuning = false
private var addAmount: Int = 0
+ private var amount: Int = 0
private var counter: LastPayShowTimer? = null
private var lastPayInfo: CardUserInfoBean? = null
+ private var dialogPurchase: DialogPurchase? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@@ -69,26 +72,31 @@
private fun initData() {
presenter = ConsumePresenter(this)
presenter.start()
+ dialogPurchase = DialogPurchase(this, object : DialogPurchase.ICallBack {
+ override fun callback(isManualCancel: Boolean) {
+ presenter.clickNoPay()
+ }
+ })
}
private fun initView() {
- vShopname = findViewById<TextView>(R.id.consume_shopname)
- vLinkLogo = findViewById<ImageView>(R.id.consume_linklogo)
- vLinkstat = findViewById<TextView>(R.id.consume_linkstat)
- amountTxt = findViewById<TextView>(R.id.consume_amt)
- vCustname = findViewById<TextView>(R.id.consume_custname)
- vStuempno = findViewById<TextView>(R.id.consume_stuempno)
- vCardstatus = findViewById<TextView>(R.id.consume_cardstatus)
- vBalance = findViewById<TextView>(R.id.consume_balance)
- vTime = findViewById<TextView>(R.id.consume_time)
- vLastResult = findViewById<TextView>(R.id.consume_last_result)
- vLastPayamt = findViewById<TextView>(R.id.consume_last_payamt)
- vLastPayway = findViewById<TextView>(R.id.consume_last_payway)
- vLastPayday = findViewById<TextView>(R.id.consume_last_payday)
- vLastPaytime = findViewById<TextView>(R.id.consume_last_paytime)
- vLastPayFailreason = findViewById<TextView>(R.id.consume_last_failreason)
- vLastPayFailll = findViewById<LinearLayout>(R.id.ll_consume_last_failreason)
- vLastPayamtll = findViewById<LinearLayout>(R.id.ll_consume_last_payamt)
+ vShopname = this.findViewById<TextView>(R.id.consume_shopname)
+ vLinkLogo = this.findViewById<ImageView>(R.id.consume_linklogo)
+ vLinkstat = this.findViewById<TextView>(R.id.consume_linkstat)
+ amountTxt = this.findViewById<TextView>(R.id.consume_amt)
+ vCustname = this.findViewById<TextView>(R.id.consume_custname)
+ vStuempno = this.findViewById<TextView>(R.id.consume_stuempno)
+ vCardstatus = this.findViewById<TextView>(R.id.consume_cardstatus)
+ vBalance = this.findViewById<TextView>(R.id.consume_balance)
+ vTime = this.findViewById<TextView>(R.id.consume_time)
+ vLastResult = this.findViewById<TextView>(R.id.consume_last_result)
+ vLastPayamt = this.findViewById<TextView>(R.id.consume_last_payamt)
+ vLastPayway = this.findViewById<TextView>(R.id.consume_last_payway)
+ vLastPayday = this.findViewById<TextView>(R.id.consume_last_payday)
+ vLastPaytime = this.findViewById<TextView>(R.id.consume_last_paytime)
+ vLastPayFailreason = this.findViewById<TextView>(R.id.consume_last_failreason)
+ vLastPayFailll = this.findViewById<LinearLayout>(R.id.ll_consume_last_failreason)
+ vLastPayamtll = this.findViewById<LinearLayout>(R.id.ll_consume_last_payamt)
}
private fun delValueToEdit() {
@@ -108,10 +116,11 @@
}
private fun checkAmtToPay() {
- val amt = getCurAmount() + addAmount
- if (amt > 0) {
- amountTxt.text = String.format("%.02f", amt / 100.0f)
- jumpToPay(amt)
+ amount = getCurAmount() + addAmount
+ if (amount > 0) {
+ amountTxt.text = String.format("%.02f", amount / 100.0f)
+ presenter.clickToPay(amount)
+ dialogPurchase!!.showProcess("请刷卡", CommonUtil.showFormatAmount("金额", amount))
} else {
AuxScreenController.getInstance().refreshContent(Arrays.asList("请先输入金额:", "金额不能为0"))
}
@@ -126,24 +135,6 @@
}
}
- private fun jumpToPay(amount: Int) {
-// val intent = Intent()
-// intent.putExtra("datetime", CommonUtil.getSystemMills())
-// intent.putExtra("amount", amount.toString())
-// intent.putExtra("consumeType", PublicDef.CONSUME_TYPE_PAY)
-// intent.setClass(this@WaitActivity, PayActivity::class.java)
-// startActivity(intent)
- }
-
- private fun jumpToFixpay(amount: Int) {
-// val intent = Intent()
-// intent.putExtra("datetime", CommonUtil.getSystemMills())
-// intent.putExtra("amount", amount.toString())
-// intent.putExtra("consumeType", PublicDef.CONSUME_TYPE_FIXPAY)
-// intent.setClass(this@WaitActivity, PayActivity::class.java)
-// startActivity(intent)
- }
-
private fun addValueToEdit(value: Int) {
var str = amountTxt.text.toString()
if ("0" == str) {
@@ -205,7 +196,7 @@
super.onResume()
isBackRuning = false
refresh()
- refreshRecentDtl()
+ refreshRecentDtl(lastPayInfo)
}
override fun onNewIntent(intent: Intent) {
@@ -233,9 +224,10 @@
val record = SPApplication.getInstance().getPos().getControlPara(PublicDef.CONTROL_FIXAMT)
if (record != null && PublicDef.CONTROL_NO_FIXPAY_FLAG != record.paraval) {
try {
- val amount = Integer.parseInt(record.paraval)
+ amount = Integer.parseInt(record.paraval)
amountTxt.text = String.format("%.02f", amount / 100.0f)
- jumpToFixpay(amount)
+ presenter.clickToPay(amount)
+ dialogPurchase!!.showProcess("请刷卡", CommonUtil.showFormatAmount("金额", amount))
} catch (ex: Exception) {
ex.printStackTrace()
}
@@ -257,29 +249,54 @@
}
override fun showConsumeSuc(info: CardUserInfoBean) {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ dialogPurchase!!.showPaySuccess(info)
+ val auxList = ArrayList<String>()
+ auxList.add(info.retmsg!!)
+ auxList.add(CommonUtil.showFormatAmount("金额", info.payamt))
+ when {
+ info.amount > info.payamt -> {
+ auxList.add(CommonUtil.showFormatAmount("折扣", info.amount - info.payamt))
+ }
+ info.amount < info.payamt -> {
+ auxList.add(CommonUtil.showFormatAmount("搭伙", info.payamt - info.amount))
+ }
+ }
+ if (info.balance != null) {
+ auxList.add(CommonUtil.showFormatAmount("余额", info.balance!!))
+ }
+ AuxScreenController.getInstance().refreshContent(auxList)
+ SoundUtil.playMusic(applicationContext, R.raw.consume_suc)
}
override fun showConsumeHint(hint: String) {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ val amountStr = CommonUtil.showFormatAmount("金额", amount)
+ dialogPurchase!!.showProcess(hint, amountStr)
+ AuxScreenController.getInstance().refreshContent(Arrays.asList(hint, amountStr))
}
override fun showConsumeFail(info: CardUserInfoBean) {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ dialogPurchase!!.showPayFail(info)
+ SoundUtil.playMusic(applicationContext, R.raw.consume_fail)
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("消费失败", "原因:", info.retmsg))
}
override fun showReverseSuc(info: CardUserInfoBean) {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ dialogPurchase!!.showReverseSuccess(info)
+ AuxScreenController.getInstance()
+ .refreshContent(Arrays.asList<String>(info.retmsg, CommonUtil.showFormatAmount("金额", info.payamt)))
+ SoundUtil.playMusic(applicationContext, R.raw.reversal_suc)
}
override fun showReverseFail(info: CardUserInfoBean) {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ dialogPurchase!!.showReverseFail(info)
+ SoundUtil.playMusic(applicationContext, R.raw.reversal_fail)
+ AuxScreenController.getInstance().refreshContent(Arrays.asList<String>("冲正失败", "原因:", info.retmsg))
}
private var lastShowRecentDatetime: String? = null
- private fun refreshRecentDtl() {
- val info = lastPayInfo
+ private fun refreshRecentDtl(info: CardUserInfoBean?) {
if (info != null) {
+ lastPayInfo = info
//已显示过不在显示
if (lastShowRecentDatetime == info.datetime) {
return
@@ -442,7 +459,7 @@
info.status = record.status
info.payway = record.payway
info.reversalFlag = record.reversalflag
- refreshRecentDtl()
+ refreshRecentDtl(info)
}
}
diff --git a/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt b/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt
index 10acf25..ebaf647 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/bean/CardUserInfoBean.kt
@@ -13,6 +13,7 @@
var showtime: Int = 3
var balance: Int? = null
var cardstatus: Int = 0
+ var amount: Int = 0
var payamt: Int = 0
var status: PayStatus? = null
var reversalFlag: ReversalFlag? = null
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 71f7899..29b489c 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
@@ -25,6 +25,7 @@
** @desc
**/
class CardPayService constructor(iConsumeView: IConsumeView, handler: Handler) {
+ private val TAG = "CardPayService"
private val iConsumeView = iConsumeView
private val handler = handler
private val pos = SPApplication.getInstance().getPos()
diff --git a/app/src/main/java/com/supwisdom/bean/HeartBeatRetBean.kt b/app/src/main/java/com/supwisdom/bean/HeartBeatRetBean.kt
new file mode 100644
index 0000000..2c68992
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/bean/HeartBeatRetBean.kt
@@ -0,0 +1,12 @@
+package com.supwisdom.bean
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class HeartBeatRetBean : BaseResp() {
+ var systime: String? = null
+ var paragroupid: Int = 0
+ var paraverno: Int = 0
+ var cardverno: String? = null
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/bean/SystemParaItemBean.kt b/app/src/main/java/com/supwisdom/bean/SystemParaItemBean.kt
new file mode 100644
index 0000000..09beb47
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/bean/SystemParaItemBean.kt
@@ -0,0 +1,10 @@
+package com.supwisdom.bean
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class SystemParaItemBean {
+ var paraname: String? = null
+ var paraval: String? = null
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/bean/SystemParaRetBean.kt b/app/src/main/java/com/supwisdom/bean/SystemParaRetBean.kt
new file mode 100644
index 0000000..16ed4e0
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/bean/SystemParaRetBean.kt
@@ -0,0 +1,11 @@
+package com.supwisdom.bean
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class SystemParaRetBean : BaseResp() {
+ var paragroupid: Int = 0
+ var paraverno: Int = 0
+ var syspara: List<SystemParaItemBean>? = null
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/bean/TransdtlRetBean.kt b/app/src/main/java/com/supwisdom/bean/TransdtlRetBean.kt
new file mode 100644
index 0000000..2aded07
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/bean/TransdtlRetBean.kt
@@ -0,0 +1,9 @@
+package com.supwisdom.bean
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class TransdtlRetBean : BaseResp() {
+ var termseqno: Int = 0
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/bean/WhiteListItemBean.kt b/app/src/main/java/com/supwisdom/bean/WhiteListItemBean.kt
new file mode 100644
index 0000000..9297ac8
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/bean/WhiteListItemBean.kt
@@ -0,0 +1,11 @@
+package com.supwisdom.bean
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class WhiteListItemBean {
+ var cardno: String? = null
+ var flag: Int = 0
+ var balance: Int = 0
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/bean/WhiteListRetBean.kt b/app/src/main/java/com/supwisdom/bean/WhiteListRetBean.kt
new file mode 100644
index 0000000..3ce0ec9
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/bean/WhiteListRetBean.kt
@@ -0,0 +1,11 @@
+package com.supwisdom.bean
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc
+ **/
+class WhiteListRetBean : BaseResp() {
+ var cardverno: String? = null
+ var maxcount: Int = 0
+ var whitelist: List<WhiteListItemBean>? = null
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/epaycard/EpayCardlib.kt b/app/src/main/java/com/supwisdom/epaycard/EpayCardlib.kt
index 6c68cb9..65c313d 100644
--- a/app/src/main/java/com/supwisdom/epaycard/EpayCardlib.kt
+++ b/app/src/main/java/com/supwisdom/epaycard/EpayCardlib.kt
@@ -11,10 +11,14 @@
**/
class EpayCardlib {
private var reader = DaliReader()
+ private var hasInit = false
@Throws(CardlibInitError::class)
fun init() {
- reader.init()
+ if (!hasInit) {
+ reader.init()
+ hasInit = true
+ }
}
@Throws(CardNotFoundError::class)
diff --git a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
index 5891662..ccd03aa 100644
--- a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
@@ -73,6 +73,10 @@
(context as Activity).startActivityForResult(intent, 0)
}
+ fun showFormatAmount(preHint: String, amount: Int): String {
+ return String.format("%s: %.02f元", preHint, amount / 100.0f)
+ }
+
/*优化a811扫码*/
fun writeLinnuuxParams() {
try {
diff --git a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
new file mode 100644
index 0000000..8ae1fc0
--- /dev/null
+++ b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
@@ -0,0 +1,143 @@
+package com.supwisdom.view
+
+import android.content.Context
+import android.graphics.Color
+import android.os.CountDownTimer
+import android.view.KeyEvent
+import android.view.View
+import android.widget.TextView
+import com.supwisdom.R
+import com.supwisdom.activities.consume.bean.CardUserInfoBean
+import com.supwisdom.utils.CommonUtil
+
+/**
+ ** create by zzq on 2019/7/26
+ ** @desc 消费弹窗
+ **/
+class DialogPurchase constructor(context: Context, callBack: ICallBack) : DialogBase(context) {
+ private val callBack = callBack
+ private var vCount: TextView
+ private var vPayhint: TextView
+ private var vPayamt: TextView
+ private var vBalance: TextView
+ private val waitTime = 60
+ var qrcodePayingNoCancelEnable = false
+ var barcodePaying = false
+
+ init {
+ setContentView(R.layout.dialog_purchase)
+
+ vCount = this.findViewById(R.id.tv_close_count) as TextView
+ vPayhint = this.findViewById(R.id.tv_pay_hint) as TextView
+ vPayamt = this.findViewById(R.id.tv_pay_amount) as TextView
+ vBalance = this.findViewById(R.id.tv_pay_balance) as TextView
+ }
+
+ override fun dispatchKeyEvent(event: KeyEvent): Boolean {
+ if (event.action == KeyEvent.ACTION_DOWN) {
+ if (qrcodePayingNoCancelEnable) {
+ return super.dispatchKeyEvent(event)
+ }
+ when (event.keyCode) {
+ KeyEvent.KEYCODE_DEL -> {
+ finish(true)
+ }
+ }
+ }
+ return super.dispatchKeyEvent(event)
+ }
+
+ fun showProcess(hint: String, amount: String) {
+ vPayhint.text = hint
+ vPayhint.setTextColor(Color.BLACK)
+ vPayamt.text = amount
+ vPayamt.visibility = View.VISIBLE
+
+ vBalance.visibility = View.GONE
+ show()
+ resetCounter(waitTime)
+ }
+
+ fun showPaySuccess(info: CardUserInfoBean) {
+ vPayhint.text = info.retmsg
+ vPayhint.setTextColor(Color.GREEN)
+ vPayamt.text = CommonUtil.showFormatAmount("金额", info.payamt)
+ vPayamt.visibility = View.VISIBLE
+ if (info.balance == null) {
+ vBalance.visibility = View.GONE
+ } else {
+ vBalance.text = CommonUtil.showFormatAmount("余额", info.balance!!)
+ vBalance.visibility = View.VISIBLE
+ }
+ show()
+ resetCounter(info.showtime)
+ }
+
+ fun showPayFail(info: CardUserInfoBean) {
+ vPayhint.text = "消费失败"
+ vPayhint.setTextColor(Color.RED)
+ vPayamt.text = info.retmsg
+ vPayamt.visibility = View.VISIBLE
+ vBalance.visibility = View.GONE
+ show()
+ resetCounter(info.showtime)
+ }
+
+ fun showReverseSuccess(info: CardUserInfoBean) {
+ vPayhint.text = info.retmsg
+ vPayhint.setTextColor(Color.GREEN)
+ vPayamt.text = CommonUtil.showFormatAmount("金额", info.amount)
+ vPayamt.visibility = View.VISIBLE
+ vBalance.visibility = View.GONE
+ show()
+ resetCounter(info.showtime)
+ }
+
+ fun showReverseFail(info: CardUserInfoBean) {
+ vPayhint.text = "冲正失败"
+ vPayhint.setTextColor(Color.RED)
+ vPayamt.text = info.retmsg
+ vPayamt.visibility = View.VISIBLE
+ vBalance.visibility = View.GONE
+ show()
+ resetCounter(info.showtime)
+ }
+
+ private fun finish(isManualCancel: Boolean) {
+ barcodePaying = false
+ qrcodePayingNoCancelEnable = false
+ dismiss()
+ callBack.callback(isManualCancel)
+ }
+
+ private var counter: ConsumeHintCount? = null
+
+ private fun resetCounter(times: Int) {
+ counter?.cancel()
+ counter = ConsumeHintCount((times * 1000).toLong(), 200)
+ counter?.start()
+ }
+
+ private inner class ConsumeHintCount
+ /**
+ * @param millisInFuture The number of millis in the future from the call
+ * to [.login] until the countdown is done and [.onFinish]
+ * is called.
+ * @param countDownInterval The interval along the way to receive
+ * [.onTick] callbacks.
+ */
+ (millisInFuture: Long, countDownInterval: Long) : CountDownTimer(millisInFuture, countDownInterval) {
+
+ override fun onTick(millisUntilFinished: Long) {
+ vCount.text = "${millisUntilFinished / 1000}s"
+ }
+
+ override fun onFinish() {
+ finish(false)
+ }
+ }
+
+ interface ICallBack {
+ fun callback(isManualCancel: Boolean)
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable-xxhdpi/bar_progress_style.xml b/app/src/main/res/drawable-xxhdpi/bar_progress_style.xml
new file mode 100644
index 0000000..82dcdae
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/bar_progress_style.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
+ <!-- 设置背景色(蓝色) -->
+ <item android:id="@android:id/background">
+ <shape>
+ <corners android:radius="6dp" />
+ <gradient
+ android:endColor="@color/light_gray"
+ android:startColor="@color/light_gray" />
+ </shape>
+ </item>
+
+ <!-- 设置进度条颜色(红色) -->
+ <item android:id="@android:id/progress">
+ <clip>
+ <shape>
+ <corners android:radius="6dp" />
+ <gradient
+ android:endColor="@color/light_green2"
+ android:startColor="@color/light_green2" />
+ </shape>
+ </clip>
+ </item>
+</layer-list>
\ No newline at end of file
diff --git a/app/src/main/res/drawable-xxhdpi/numbers/1.png b/app/src/main/res/drawable-xxhdpi/numbers/1.png
new file mode 100644
index 0000000..b1bb49f
--- /dev/null
+++ b/app/src/main/res/drawable-xxhdpi/numbers/1.png
Binary files differ
diff --git a/app/src/main/res/layout/activity_cardlib.xml b/app/src/main/res/layout/activity_cardlib.xml
new file mode 100644
index 0000000..f15e962
--- /dev/null
+++ b/app/src/main/res/layout/activity_cardlib.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ style="@style/head_title_out_style">
+
+ <LinearLayout style="@style/head_title_inner_style">
+
+ <TextView
+ style="@style/head_title_text_style"
+ android:text="欢迎使用智能设备" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="30dp"
+ android:gravity="center"
+ android:text="加载卡库资源"
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp"
+ android:visibility="visible" />
+
+ <TextView
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:gravity="center"
+ android:text="请耐心等待..."
+ android:textAppearance="?android:attr/textAppearanceMedium"
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp" />
+
+ <ProgressBar
+ android:id="@+id/cardlib_bar"
+ style="?android:attr/progressBarStyleHorizontal"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="10dp"
+ android:layout_marginRight="10dp"
+ android:layout_marginTop="10dp"
+ android:max="100"
+ android:progress="5"
+ android:progressDrawable="@drawable/bar_progress_style" />
+
+ <TextView
+ android:id="@+id/cardlib_result"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="30dp"
+ android:gravity="center"
+ android:text="加载失败:原因"
+ android:textColor="@color/light_blue2"
+ android:textSize="30sp"
+ android:visibility="gone" />
+
+ </LinearLayout>
+
+</LinearLayout>
diff --git a/app/src/main/res/layout/dialog_purchase.xml b/app/src/main/res/layout/dialog_purchase.xml
new file mode 100644
index 0000000..e43ef15
--- /dev/null
+++ b/app/src/main/res/layout/dialog_purchase.xml
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="utf-8"?>
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="450dp"
+ android:layout_height="300dp"
+ android:background="@color/light_blue2"
+ android:layout_gravity="center"
+ android:orientation="vertical">
+ <RelativeLayout android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_gravity="center"
+ android:layout_margin="10dp"
+ android:background="@drawable/corner_bg_white"
+ android:gravity="center_horizontal"
+ android:orientation="vertical">
+ <!--倒计时-->
+ <TextView
+ android:id="@+id/tv_close_count"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginLeft="15dp"
+ android:layout_marginTop="10dp"
+ android:gravity="start|center"
+ android:text="30s"
+ android:textColor="@color/blue"
+ android:textSize="30sp"/>
+ <LinearLayout
+ style="@style/purchase_ll_text_style"
+ android:layout_below="@+id/tv_close_count">
+
+ <TextView
+ android:id="@+id/tv_pay_hint"
+ style="@style/purchase_tv_text_hint_style"
+ android:text="消费成功"
+ android:textColor="@color/light_green"/>
+
+ <TextView
+ android:id="@+id/tv_pay_amount"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_marginTop="10dp"
+ android:text="金额: 10.00元"
+ android:textColor="@color/black"
+ android:textSize="@dimen/ordinary_consume_text_size"/>
+
+ <TextView
+ android:id="@+id/tv_pay_balance"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:text="余额: 123.00元"
+ android:textColor="@color/black"
+ android:textSize="@dimen/ordinary_consume_text_size"/>
+
+ </LinearLayout>
+ </RelativeLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 7f993f9..d16cba1 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -495,4 +495,17 @@
<item name="android:layout_marginLeft">10dp</item>
<item name="android:padding">10dp</item>
</style>
+ <style name="purchase_ll_text_style">
+ <item name="android:layout_width">match_parent</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:layout_marginLeft">80dp</item>
+ <item name="android:layout_marginTop">10dp</item>
+ <item name="android:orientation">vertical</item>
+ </style>
+ <style name="purchase_tv_text_hint_style">
+ <item name="android:layout_width">wrap_content</item>
+ <item name="android:layout_height">wrap_content</item>
+ <item name="android:textSize">50sp</item>
+ <item name="android:textStyle">bold</item>
+ </style>
</resources>