优化热键模式
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 c754d51..7febabd 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -379,8 +379,9 @@
                     hotkeyPayList.clear()
                     SPApplication.getInstance().getPos().getHotkeyPay()?.forEach {
                         hotkeyPayMap[it.key] = it.amount
-                        hotkeyPayList.add(String.format("%d-%.02f", it.key, it.amount / 100.0f))
+                        hotkeyPayList.add(String.format("按键%d - %.02f元", it.key, it.amount / 100.0f))
                     }
+                    AuxScreenController.getInstance().refreshContent(hotkeyPayList)
                 }
                 mode.paraval == PayMode.NORMAL.desc -> {
                     presenter.setFixMode(false)
diff --git a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
index a31c8ef..3daaf82 100644
--- a/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consumeMode/ConsumeModeActivity.kt
@@ -53,9 +53,16 @@
             val item = View.inflate(this, R.layout.item_hotkey_pay, null)
             item.findViewById<TextView>(R.id.tv_hot_del).setOnClickListener {
                 llHotList.removeView(item)
+                for (loop in 0 until llHotList.childCount) {
+                    val item = llHotList.getChildAt(loop)
+                    val key = item.findViewById<TextView>(R.id.tv_hot_key)
+                    key.text = "${(loop + 1)}"
+                }
             }
             val key = item.findViewById<TextView>(R.id.tv_hot_key)
             key.text = "${llHotList.childCount + 1}"
+            val amt = item.findViewById<TextView>(R.id.tv_hot_amount)
+            amt.text = String.format("%.02f", it.amount / 100.0f)
             llHotList.addView(item)
         }
     }
@@ -299,7 +306,7 @@
     }
 
     private fun screenShowAmt() {
-        AuxScreenController.getInstance().refreshTitle("消费模式设置   F1-热键")
+        AuxScreenController.getInstance().refreshTitle("消费模式设置       F1-热键模式")
         AuxScreenController.getInstance().refreshBottom(DateUtil.getNowDateTime())
         AuxScreenController.getInstance().refreshContent(
             Arrays.asList<String>(
diff --git a/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt b/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
index f6d0578..05a0365 100644
--- a/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
@@ -29,7 +29,7 @@
     private val LOAD_SUCCESS = 1
     private val JUMP_TO_UNREGISTER = 2
     private val LOAD_PROGRESS = 3
-    private val LOAD_DONE = 3
+    private val LOAD_DONE = 4
 
     private var hasInit: Boolean = false
     @Volatile
diff --git a/app/src/main/java/com/supwisdom/bean/HeartBeatRetBean.kt b/app/src/main/java/com/supwisdom/bean/HeartBeatRetBean.kt
index 2c68992..da5a8f2 100644
--- a/app/src/main/java/com/supwisdom/bean/HeartBeatRetBean.kt
+++ b/app/src/main/java/com/supwisdom/bean/HeartBeatRetBean.kt
@@ -9,4 +9,5 @@
     var paragroupid: Int = 0
     var paraverno: Int = 0
     var cardverno: String? = null
+    var whitelistid: Int = 0
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
index f94037d..1c90e59 100644
--- a/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
+++ b/app/src/main/java/com/supwisdom/db/BeanPropEnum.kt
@@ -42,6 +42,7 @@
         offlineseqno,
         paraverno,
         paragroupid,
+        whitelistid,
         cardverno,
         jwt,
         jwtexpire,
diff --git a/app/src/main/java/com/supwisdom/db/DBParaHelper.kt b/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
index c8e37aa..4862731 100644
--- a/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
+++ b/app/src/main/java/com/supwisdom/db/DBParaHelper.kt
@@ -13,7 +13,7 @@
 class DBParaHelper private constructor(context: Context) : SQLiteOpenHelper(context, DB_NAME, null, VERSION) {
     companion object {
         private val DB_NAME = "db_para"
-        private val VERSION = 3
+        private val VERSION = 1
 
         val TABLE_NAME_SYSPARA = "tb_syspara"
         val TABLE_NAME_DYNAMICPARA = "tb_dynamicpara"
@@ -67,6 +67,7 @@
             + BeanPropEnum.DynamicPara.offlineseqno + " integer, "
             + BeanPropEnum.DynamicPara.paraverno + " integer, "
             + BeanPropEnum.DynamicPara.paragroupid + " integer, "
+            + BeanPropEnum.DynamicPara.whitelistid + " integer, "
             + BeanPropEnum.DynamicPara.cardverno + " varchar(32),"
             + BeanPropEnum.DynamicPara.jwt + " varchar(254),"
             + BeanPropEnum.DynamicPara.jwtexpire + " varchar(16),"
@@ -103,10 +104,7 @@
     override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
         if (oldVersion < newVersion) {
             if (oldVersion < 2 && newVersion >= 2) {
-                db.execSQL("alter table $TABLE_NAME_SYSPARA add column ${BeanPropEnum.Syspara.maxDayOfflineAmt} integer")
-            }
-            if (oldVersion < 3 && newVersion >= 3) {
-                db.execSQL(CREATE_TABLE_NAME_HOTKEY)
+//                db.execSQL("alter table $TABLE_NAME_SYSPARA add column ${BeanPropEnum.Syspara.maxDayOfflineAmt} integer")
             }
         }
     }
diff --git a/app/src/main/java/com/supwisdom/db/DynamicParaDao.kt b/app/src/main/java/com/supwisdom/db/DynamicParaDao.kt
index 5c6b0fb..a0fc815 100644
--- a/app/src/main/java/com/supwisdom/db/DynamicParaDao.kt
+++ b/app/src/main/java/com/supwisdom/db/DynamicParaDao.kt
@@ -91,6 +91,7 @@
         record.offlineseqno = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.DynamicPara.offlineseqno.toString()))
         record.paraverno = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.DynamicPara.paraverno.toString()))
         record.paragroupid = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.DynamicPara.paragroupid.toString()))
+        record.whitelistid = cursor.getInt(cursor.getColumnIndex(BeanPropEnum.DynamicPara.whitelistid.toString()))
         record.cardverno = cursor.getString(cursor.getColumnIndex(BeanPropEnum.DynamicPara.cardverno.toString()))
         record.jwt = cursor.getString(cursor.getColumnIndex(BeanPropEnum.DynamicPara.jwt.toString()))
         record.jwtExpire = cursor.getString(cursor.getColumnIndex(BeanPropEnum.DynamicPara.jwtexpire.toString()))
@@ -110,6 +111,7 @@
         values.put(BeanPropEnum.DynamicPara.offlineseqno.toString(), record.offlineseqno)
         values.put(BeanPropEnum.DynamicPara.paraverno.toString(), record.paraverno)
         values.put(BeanPropEnum.DynamicPara.paragroupid.toString(), record.paragroupid)
+        values.put(BeanPropEnum.DynamicPara.whitelistid.toString(), record.whitelistid)
         values.put(BeanPropEnum.DynamicPara.cardverno.toString(), record.cardverno)
         values.put(BeanPropEnum.DynamicPara.jwt.toString(), record.jwt)
         values.put(BeanPropEnum.DynamicPara.token.toString(), record.token)
diff --git a/app/src/main/java/com/supwisdom/entity/DynamicParaRecord.kt b/app/src/main/java/com/supwisdom/entity/DynamicParaRecord.kt
index bee1dbe..9780e62 100644
--- a/app/src/main/java/com/supwisdom/entity/DynamicParaRecord.kt
+++ b/app/src/main/java/com/supwisdom/entity/DynamicParaRecord.kt
@@ -12,6 +12,7 @@
     var shopname: String? = null //商户名
     var paraverno: Int = 0//参数版本
     var paragroupid: Int = 0//参数组id
+    var whitelistid: Int = 0 //白名单组id
     var onlineseqno: Int = 0 //后台最大联机流水号
     var offlineseqno: Int = 0 //后台最大离线流水号
     var cardverno: String? = null // 黑名单版本号 12byte
diff --git a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
index 75a91ab..e523f80 100644
--- a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
+++ b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
@@ -27,7 +27,7 @@
     @Throws(HeartBeatError::class)
     override fun heartBeat() {
         val dyRecord = pos.getDynamicPara()
-        val cardverno = dyRecord!!.cardverno ?: "0"
+        var cardverno = dyRecord!!.cardverno ?: "0"
         val params = WebParams()
         params.setParameter("devphyid", pos.getConfigPara()!!.devphyid)
             .setParameter("termdate", DateUtil.getNowDateNoFormat())
@@ -48,13 +48,6 @@
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw HeartBeatError(retBean.getErrorMsg())
         }
-        if (cardverno < retBean.cardverno!!) {
-            try {
-                downloadWhitelist(retBean.cardverno!!)
-            } catch (ex: WhiteListError) {
-                throw HeartBeatError(ex.message ?: "null")
-            }
-        }
         if (dyRecord.paraverno != retBean.paraverno) {
             try {
                 downloadSyspara(retBean.paragroupid, retBean.paraverno)
@@ -63,6 +56,27 @@
             }
         }
         /**
+         * 白名单组ID变化清空本地白名单重新下载
+         */
+        if (dyRecord.whitelistid != retBean.whitelistid) {
+            if (!pos.clearWhiteList()) {
+                throw HeartBeatError("清空白名单失败")
+            }
+            val dyRecord = pos.getDynamicPara()
+            dyRecord!!.whitelistid = retBean.whitelistid
+            if (!pos.replaceDynamicPara(dyRecord)) {
+                throw HeartBeatError("保存参数失败")
+            }
+            cardverno = "0"
+        }
+        if (cardverno < retBean.cardverno!!) {
+            try {
+                downloadWhitelist(retBean.cardverno!!)
+            } catch (ex: WhiteListError) {
+                throw HeartBeatError(ex.message ?: "null")
+            }
+        }
+        /**
          * 时钟校准
          */
         NtpClient().startCalibrateTime(retBean.systime!!)
@@ -127,6 +141,12 @@
         if (!pos.replaceSysPara(record)) {
             throw SysParaError("保存参数失败")
         }
+        val dyRecord = pos.getDynamicPara()
+        dyRecord!!.paraverno = paraverno
+        dyRecord.paragroupid = paragroupid
+        if (!pos.replaceDynamicPara(dyRecord)) {
+            throw SysParaError("保存参数失败")
+        }
     }
 
     @Throws(WhiteListError::class)