diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 301359f..ed48cb0 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -86,6 +86,7 @@
         <activity
                 android:name=".activities.init.InitActivity"
                 android:label="@string/title_activity_consume"
+                android:windowSoftInputMode="stateHidden"
                 android:launchMode="singleTask"/>
         <activity
                 android:name=".activities.cardlib.CardlibActivity"
@@ -123,6 +124,30 @@
                 android:name=".activities.communicate.CommunicateActivity"
                 android:label="@string/title_activity_consume"
                 android:launchMode="singleTask"/>
+        <activity
+                android:name=".activities.checkShoppwd.CheckShoppwdActivity"
+                android:label="@string/title_activity_consume"
+                android:launchMode="singleTask"/>
+        <activity
+                android:name=".activities.checkMngpwd.CheckMngpwdActivity"
+                android:label="@string/title_activity_consume"
+                android:launchMode="singleTask"/>
+        <activity
+                android:name=".activities.consumeMode.ConsumeModeActivity"
+                android:label="@string/title_activity_consume"
+                android:launchMode="singleTask"/>
+        <activity
+                android:name=".activities.passwd.PasswdActivity"
+                android:label="@string/title_activity_consume"
+                android:launchMode="singleTask"/>
+        <activity
+                android:name=".activities.revenue.RevenueActivity"
+                android:label="@string/title_activity_consume"
+                android:launchMode="singleTask"/>
+        <activity
+                android:name=".activities.syspara.SysparaActivity"
+                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/YktSession.kt b/app/src/main/java/com/supwisdom/activities/YktSession.kt
index 54d8dc7..5119798 100644
--- a/app/src/main/java/com/supwisdom/activities/YktSession.kt
+++ b/app/src/main/java/com/supwisdom/activities/YktSession.kt
@@ -25,6 +25,7 @@
                 synchronized(YktSession::class.java) {
                     if (null == yktSession) {
                         yktSession = YktSession()
+                        mSession = WebAPISession()
                     }
                 }
             }
@@ -45,7 +46,7 @@
         } else {
             sb.append("http://").append(epayIP)
         }
-        sb.append(":").append(epayPort).append("/").append(uri).append("/services")
+        sb.append(":").append(epayPort).append("/").append(uri)
 
         mSession!!.setEpayurl(sb.toString())
         NetworkHandler.getInstance().setCommTime(commTime)
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 216dfcd..268a67f 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumePresenter.kt
@@ -5,8 +5,10 @@
 import android.os.Message
 import com.supwisdom.activities.consume.bean.CardUserInfoBean
 import com.supwisdom.activities.consume.mode.CardPayService
+import com.supwisdom.activities.consume.mode.CodePayService
 import com.supwisdom.utils.LogUtil
 import com.supwisdom.utils.PublicDef
+import com.supwisdom.utils.ThreadPool
 
 /**
  ** create by zzq on 2019/7/25
@@ -15,12 +17,19 @@
 class ConsumePresenter constructor(iConsumeView: IConsumeView) {
     private val TAG = "ConsumePresenter"
     private val iConsumeView = iConsumeView
+    private val codePayRunnable = CodePayRunnable()
     private lateinit var handler: Handler
     private var cardPayService: CardPayService
+    private var codePayService: CodePayService
+    @Volatile
+    private var code: String? = null
+    @Volatile
+    private var amount: Int = 0
 
     init {
         createHandler()
         cardPayService = CardPayService(iConsumeView, handler)
+        codePayService = CodePayService(iConsumeView, handler)
     }
 
     private fun createHandler() {
@@ -68,4 +77,26 @@
     fun clickToReverse(amount: Int) {
         cardPayService.clickToReverse(amount)
     }
+
+    fun codeToPay(code: String, amount: Int) {
+        this.code = code
+        this.amount = amount
+        ThreadPool.getShortPool().execute(codePayRunnable)
+    }
+
+    fun interruptCodePay() {
+        code = null
+        amount = 0
+        /**
+         *不能暴力取消工作线程,可能存在后台已消费而本地未收到答复
+         */
+//        ThreadPool.getShortPool().cancel(scanRunnable)
+        codePayService.interruptPay()
+    }
+
+    private inner class CodePayRunnable : Runnable {
+        override fun run() {
+            codePayService.pay(code!!, amount)
+        }
+    }
 }
\ No newline at end of file
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 6ea5ced..46c0d15 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
@@ -33,7 +33,12 @@
     @Volatile
     private var interruptedPay: Boolean = false
 
+    fun interruptPay() {
+        interruptedPay = true
+    }
+
     fun pay(code: String, amount: Int) {
+        interruptedPay = false
         try {
             initTransdtlOnline(code, amount)
             var resp = consumeApi.payInit(codeRecord)
diff --git a/app/src/main/java/com/supwisdom/activities/load/LoadActivity.kt b/app/src/main/java/com/supwisdom/activities/load/LoadActivity.kt
index 7bd5b13..b05cea5 100644
--- a/app/src/main/java/com/supwisdom/activities/load/LoadActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/load/LoadActivity.kt
@@ -69,7 +69,9 @@
         procontent.append("\n").append(hint)
         vLoadPro.text = procontent.toString()
         if (clearlast) {
-            auxList.removeAt(auxList.size - 1)
+            if (auxList.size > 0) {
+                auxList.removeAt(auxList.size - 1)
+            }
         }
         auxList.add(hint)
         AuxScreenController.getInstance().refreshContent(showFormatAux())
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 03fc13b..1bcbc99 100644
--- a/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
+++ b/app/src/main/java/com/supwisdom/activities/load/LoadPresenter.kt
@@ -5,6 +5,8 @@
 import android.os.Message
 import com.supwisdom.activities.SPApplication
 import com.supwisdom.activities.YktSession
+import com.supwisdom.bean.AuthRetBean
+import com.supwisdom.exception.AuthEpayError
 import com.supwisdom.service.AuthEpay
 import com.supwisdom.service.EpayApiImpl
 import com.supwisdom.utils.CommonUtil
@@ -52,12 +54,16 @@
 
         ThreadPool.getShortPool().execute(Runnable {
             sendMessage(LOAD_PROGRESS, "正在系统签到...")
-            val bean = AuthEpay().login()
+            val bean = try {
+                AuthEpay().login()
+            } catch (ex: AuthEpayError) {
+                AuthRetBean(PublicDef.ERROR, ex.message ?: "null")
+            }
             if (bean.retcode != PublicDef.SUCCESS) {
                 sendMessage(LOAD_DONE, bean.retmsg!!)
                 loading = false
                 if (!hasInit) {
-                    sendMessage(JUMP_TO_UNREGISTER, "签到错误:${bean.retcode},${bean.retmsg}")
+                    sendMessage(JUMP_TO_UNREGISTER, "签到失败:${bean.retmsg}")
                     return@Runnable
                 }
             } else {
@@ -68,7 +74,7 @@
                 dyRecord.onlineseqno = bean.onlineseqno
                 dyRecord.offlineseqno = bean.offlineseqno
                 dyRecord.paragroupid = bean.paragroupid
-                pos.replaceConfigPara(cfgRecord!!)
+                pos.replaceDynamicPara(dyRecord)
 
                 SPApplication.getInstance().setEpayLinking(true)
                 sendMessage(LOAD_DONE, "系统签到成功")
diff --git a/app/src/main/java/com/supwisdom/exception/AuthEpayError.kt b/app/src/main/java/com/supwisdom/exception/AuthEpayError.kt
index 7afb7cc..70cab0a 100644
--- a/app/src/main/java/com/supwisdom/exception/AuthEpayError.kt
+++ b/app/src/main/java/com/supwisdom/exception/AuthEpayError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class AuthEpayError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/exception/CardNotFoundError.kt b/app/src/main/java/com/supwisdom/exception/CardNotFoundError.kt
index 43d882c..151ec03 100644
--- a/app/src/main/java/com/supwisdom/exception/CardNotFoundError.kt
+++ b/app/src/main/java/com/supwisdom/exception/CardNotFoundError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class CardNotFoundError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/exception/CardPayCancelFailError.kt b/app/src/main/java/com/supwisdom/exception/CardPayCancelFailError.kt
index 4ab662e..5c34275 100644
--- a/app/src/main/java/com/supwisdom/exception/CardPayCancelFailError.kt
+++ b/app/src/main/java/com/supwisdom/exception/CardPayCancelFailError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class CardPayCancelFailError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/exception/CardPayFailError.kt b/app/src/main/java/com/supwisdom/exception/CardPayFailError.kt
index 558562b..82e3c07 100644
--- a/app/src/main/java/com/supwisdom/exception/CardPayFailError.kt
+++ b/app/src/main/java/com/supwisdom/exception/CardPayFailError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class CardPayFailError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/exception/CardlibInitError.kt b/app/src/main/java/com/supwisdom/exception/CardlibInitError.kt
index 7404615..188df3b 100644
--- a/app/src/main/java/com/supwisdom/exception/CardlibInitError.kt
+++ b/app/src/main/java/com/supwisdom/exception/CardlibInitError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class CardlibInitError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/exception/CardlibValueError.kt b/app/src/main/java/com/supwisdom/exception/CardlibValueError.kt
index b069e0b..09e239e 100644
--- a/app/src/main/java/com/supwisdom/exception/CardlibValueError.kt
+++ b/app/src/main/java/com/supwisdom/exception/CardlibValueError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class CardlibValueError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/exception/HeartBeatError.kt b/app/src/main/java/com/supwisdom/exception/HeartBeatError.kt
index b1b4852..dcaa874 100644
--- a/app/src/main/java/com/supwisdom/exception/HeartBeatError.kt
+++ b/app/src/main/java/com/supwisdom/exception/HeartBeatError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class HeartBeatError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/exception/SysParaError.kt b/app/src/main/java/com/supwisdom/exception/SysParaError.kt
index 3d3c073..1cdceb3 100644
--- a/app/src/main/java/com/supwisdom/exception/SysParaError.kt
+++ b/app/src/main/java/com/supwisdom/exception/SysParaError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class SysParaError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/exception/TransdtlUploadError.kt b/app/src/main/java/com/supwisdom/exception/TransdtlUploadError.kt
index 4064c79..ce3e7ef 100644
--- a/app/src/main/java/com/supwisdom/exception/TransdtlUploadError.kt
+++ b/app/src/main/java/com/supwisdom/exception/TransdtlUploadError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class TransdtlUploadError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/exception/WhiteListError.kt b/app/src/main/java/com/supwisdom/exception/WhiteListError.kt
index 5204298..9c9033a 100644
--- a/app/src/main/java/com/supwisdom/exception/WhiteListError.kt
+++ b/app/src/main/java/com/supwisdom/exception/WhiteListError.kt
@@ -5,15 +5,9 @@
  ** @desc
  **/
 class WhiteListError : Exception {
-    constructor(message: String, ex: Exception) {
-        Exception(message + ex.message)
-    }
+    constructor(message: String, ex: Exception) : super(message + ex.message)
 
-    constructor(message: String) {
-        Exception(message)
-    }
+    constructor(message: String) : super(message)
 
-    constructor(ex: Exception) {
-        Exception(ex.message)
-    }
+    constructor(ex: Exception) : super(ex.message)
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/supwisdom/service/AuthEpay.kt b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
index 319c217..29549fd 100644
--- a/app/src/main/java/com/supwisdom/service/AuthEpay.kt
+++ b/app/src/main/java/com/supwisdom/service/AuthEpay.kt
@@ -13,6 +13,7 @@
 import com.supwisdom.utils.DateUtil
 import com.supwisdom.utils.GsonUtil
 import com.supwisdom.utils.PublicDef
+import org.apache.http.HttpStatus
 
 /**
  ** create by zzq on 2019/7/23
@@ -37,6 +38,9 @@
             .append("/api/auth/refresh/").append(record.devphyid)
         val resp = NetworkHandler.getInstance().get(url.toString(), null)
             ?: throw AuthEpayError("jwt刷新请求超时")
+        if (resp.retcode != HttpStatus.SC_OK) {
+            throw AuthEpayError("jwt刷新错误码=${resp.retcode}")
+        }
         val retBean = GsonUtil.GsonToBean(resp.retjson!!, AuthJwtRetBean::class.java)
         dealSession(retBean)
     }
@@ -52,6 +56,9 @@
 
         val resp = NetworkHandler.getInstance().get(url.toString(), null)
             ?: throw AuthEpayError("token请求超时")
+        if (resp.retcode != HttpStatus.SC_OK) {
+            throw AuthEpayError("token错误码=${resp.retcode}")
+        }
         val retBean = GsonUtil.GsonToBean(resp.retjson!!, AuthTokenRetBean::class.java)
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw AuthEpayError(retBean.retmsg!!)
@@ -76,6 +83,9 @@
 
         val resp = NetworkHandler.getInstance().get(url.toString(), params)
             ?: throw AuthEpayError("jwt请求超时")
+        if (resp.retcode != HttpStatus.SC_OK) {
+            throw AuthEpayError("jwt错误码=${resp.retcode}")
+        }
         val retBean = GsonUtil.GsonToBean(resp.retjson!!, AuthJwtRetBean::class.java)
         dealSession(retBean)
     }
@@ -92,6 +102,9 @@
 
         val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/login", "", params)
             ?: throw AuthEpayError("请求超时")
+        if (resp.retcode != HttpStatus.SC_OK) {
+            throw AuthEpayError("错误码=${resp.retcode}")
+        }
         val retBean = GsonUtil.GsonToBean(resp.retjson!!, AuthRetBean::class.java)
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw AuthEpayError(retBean.retmsg!!)
diff --git a/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt b/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
index b1362e9..8a7c9f7 100644
--- a/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
+++ b/app/src/main/java/com/supwisdom/service/BackgroundTaskService.kt
@@ -2,6 +2,7 @@
 
 import com.supwisdom.activities.SPApplication
 import com.supwisdom.entity.SysParaRecord
+import com.supwisdom.exception.AuthEpayError
 import com.supwisdom.exception.HeartBeatError
 import com.supwisdom.exception.TransdtlUploadError
 import com.supwisdom.utils.CommonUtil
@@ -26,9 +27,17 @@
 
     override fun run() {
         var heartgap = 0
+        CommonUtil.doSleep(60 * 1000)
+        while (true) {
+            val hasInit = pos.getConfigPara()?.initOK ?: false
+            if (hasInit) {
+                break
+            }
+            CommonUtil.doSleep(1000)
+        }
         while (true) {
             //做一卡通心跳和流水上传
-            doYktHeartAndTransdtl()
+            heartAndTransdtl()
             //清除流水
             clearTransdtl()
             sysRecord = pos.getSysPara()
@@ -52,15 +61,13 @@
         }
     }
 
-    private fun doYktHeartAndTransdtl() {
+    private fun heartAndTransdtl() {
         //做一卡通的心跳以及流水上传
         try {
             apiInterface!!.heartBeat()
             SPApplication.getInstance().setEpayLinking(true)
-//        /*自动签到*/
-//        if (SPApplication.getInstance().getAuthStatus() > 2 && SPApplication.getInstance().getAuthStatus() < 5) {
-//            autoAuth()
-//        }
+//        /*更新通讯jwt*/
+            refreshJwt()
             uploadTransdtl()
         } catch (ex: HeartBeatError) {
             SPApplication.getInstance().setEpayLinking(false)
@@ -84,13 +91,31 @@
         }
     }
 
+    private fun refreshJwt() {
+        try {
+            val jwtExpire = pos.getDynamicPara()?.jwtExpire ?: "0"
+            if (jwtExpire < DateUtil.getNowDateTimeNoFormat()) {
+                autoAuth()
+            } else {
+                AuthEpay().refresh()
+            }
+            SPApplication.getInstance().setEpayLinking(true)
+        } catch (ex: AuthEpayError) {
+            ex.printStackTrace()
+            SPApplication.getInstance().setEpayLinking(false)
+        }
+    }
+
     private fun autoAuth() {
-//        val bean = AuthEpay().login()
-//        if (bean != null && bean!!.getRetcode() == PublicDef.SUCCESS) {
-//            SPApplication.getInstance().setLoginEpayLinking(true)
-//        } else {
-//            SPApplication.getInstance().setLoginEpayLinking(false)
-//        }
+        val bean = AuthEpay().login()
+        val dyRecord = pos.getDynamicPara()
+        dyRecord!!.deviceid = bean.deviceid
+        dyRecord.merchaccno = bean.merchaccno
+        dyRecord.shopname = bean.shopname
+        dyRecord.onlineseqno = bean.onlineseqno
+        dyRecord.offlineseqno = bean.offlineseqno
+        dyRecord.paragroupid = bean.paragroupid
+        pos.replaceDynamicPara(dyRecord)
     }
 
     private fun clearTransdtl() {
diff --git a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
index 473225e..446fab4 100644
--- a/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
+++ b/app/src/main/java/com/supwisdom/service/EpayApiImpl.kt
@@ -15,6 +15,7 @@
 import com.supwisdom.utils.DateUtil
 import com.supwisdom.utils.GsonUtil
 import com.supwisdom.utils.PublicDef
+import org.apache.http.HttpStatus
 
 /**
  ** create by zzq on 2019/7/23
@@ -36,6 +37,9 @@
 
         val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/heartbeat", "", params)
             ?: throw HeartBeatError("请求超时")
+        if (resp.retcode != HttpStatus.SC_OK) {
+            throw HeartBeatError("错误码=${resp.retcode}")
+        }
         val retBean = GsonUtil.GsonToBean(resp.retjson!!, HeartBeatRetBean::class.java)
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw HeartBeatError(retBean.retmsg!!)
@@ -75,6 +79,9 @@
 
         val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/systempara", "", params)
             ?: throw SysParaError("请求超时")
+        if (resp.retcode != HttpStatus.SC_OK) {
+            throw SysParaError("错误码=${resp.retcode}")
+        }
         val retBean = GsonUtil.GsonToBean(resp.retjson!!, SystemParaRetBean::class.java)
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw SysParaError(retBean.retmsg!!)
@@ -108,6 +115,9 @@
 
             val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/whitelist", "", params)
                 ?: throw WhiteListError("请求超时")
+            if (resp.retcode != HttpStatus.SC_OK) {
+                throw WhiteListError("错误码=${resp.retcode}")
+            }
             val retBean = GsonUtil.GsonToBean(resp.retjson!!, WhiteListRetBean::class.java)
             if (retBean.retcode != PublicDef.SUCCESS) {
                 throw WhiteListError(retBean.retmsg!!)
@@ -159,6 +169,9 @@
             .setParameter("status", record.status.toString())
         val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/paycancel", "", params)
             ?: throw TransdtlUploadError("请求超时")
+        if (resp.retcode != HttpStatus.SC_OK) {
+            throw TransdtlUploadError("错误码=${resp.retcode}")
+        }
         val retBean = GsonUtil.GsonToBean(resp.retjson!!, TransdtlRetBean::class.java)
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw TransdtlUploadError(retBean.retmsg!!)
@@ -194,6 +207,9 @@
 
         val resp = YktSession.getInstance().sendYktRequestPost("/api/pos/offlinetransdtl", "", params)
             ?: throw TransdtlUploadError("请求超时")
+        if (resp.retcode != HttpStatus.SC_OK) {
+            throw TransdtlUploadError("错误码=${resp.retcode}")
+        }
         val retBean = GsonUtil.GsonToBean(resp.retjson!!, TransdtlRetBean::class.java)
         if (retBean.retcode != PublicDef.SUCCESS) {
             throw TransdtlUploadError(retBean.retmsg!!)
diff --git a/app/src/main/java/com/supwisdom/utils/FileUtil.kt b/app/src/main/java/com/supwisdom/utils/FileUtil.kt
index bf18ee0..103d889 100644
--- a/app/src/main/java/com/supwisdom/utils/FileUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/FileUtil.kt
@@ -8,7 +8,7 @@
  ** @desc
  **/
 object FileUtil {
-    private val ROOT_DIR = "/YueXiao/pos/"
+    private val ROOT_DIR = "/a711/pos/"
     private val ROOT_PRIVATE_DIR = "/supwisdom/"
     private val CACHE_FILE_DIR = ROOT_DIR + "cache/"
     private val CRASH_FILE_DIR = ROOT_DIR + "crash/"
diff --git a/app/src/main/res/layout/toast_util.xml b/app/src/main/res/layout/toast_util.xml
index 0524e5b..765f9cd 100644
--- a/app/src/main/res/layout/toast_util.xml
+++ b/app/src/main/res/layout/toast_util.xml
@@ -5,13 +5,13 @@
               android:orientation="vertical">
 
     <TextView
-        android:id="@+id/toasttext"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:background="@drawable/corner_bg"
-        android:padding="30dp"
-        android:text="测试"
-        android:textColor="@color/black"
-        android:textSize="200dp"
-        android:textStyle="bold"/>
+            android:id="@+id/toasttext"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:background="@drawable/corner_bg"
+            android:padding="30dp"
+            android:text="测试"
+            android:textColor="@color/black"
+            android:textSize="35sp"
+            android:textStyle="bold"/>
 </LinearLayout>
\ No newline at end of file
