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 f3b9eb2..5ce1f02 100644
--- a/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
+++ b/app/src/main/java/com/supwisdom/activities/consume/ConsumeActivity.kt
@@ -23,10 +23,7 @@
 import com.supwisdom.entity.PeriodFixPayRecord
 import com.supwisdom.entity.ReversalFlag
 import com.supwisdom.entity.TransdtlUnionRecord
-import com.supwisdom.utils.CommonUtil
-import com.supwisdom.utils.DateUtil
-import com.supwisdom.utils.PublicDef
-import com.supwisdom.utils.SoundUtil
+import com.supwisdom.utils.*
 import com.supwisdom.view.DialogPurchase
 import java.util.*
 import java.util.concurrent.locks.ReentrantLock
@@ -39,6 +36,7 @@
 @Suppress("DEPRECATION")
 @SuppressLint("NewApi")
 class ConsumeActivity : BaseActivity(), IConsumeView {
+    private val TAG = "ConsumeActivity"
     private lateinit var amountTxt: TextView
     private lateinit var presenter: ConsumePresenter
     private lateinit var vLinkstat: TextView
@@ -194,6 +192,7 @@
                 //F2 连续按重启app
                 val tt = System.currentTimeMillis()
                 if (tt - appreboottime < PublicDef.APP_REBOOT_GAP) {
+                    LogUtil.i(TAG, "设备双击F2,待机界面重启APP!!")
                     CommonUtil.restartAPP(this)
                 } else {
                     appreboottime = tt
diff --git a/app/src/main/java/com/supwisdom/service/SynoCodeService.kt b/app/src/main/java/com/supwisdom/service/SynoCodeService.kt
index c39bb27..4eae1ef 100644
--- a/app/src/main/java/com/supwisdom/service/SynoCodeService.kt
+++ b/app/src/main/java/com/supwisdom/service/SynoCodeService.kt
@@ -33,7 +33,7 @@
         val posid = CommonUtil.getSerialNumber()
         var resp = getRegisterStatus(posid) ?: return BaseResp(PublicDef.ERROR, "获取设备注册状态超时")
         if (resp.retcode != HttpURLConnection.HTTP_OK) {
-            return BaseResp(resp.retcode, resp.retmsg)
+            return BaseResp(resp.retcode, "获取注册状态失败:${resp.retcode},${resp.retmsg}")
         }
         val registerStatusRetBean =
             GsonUtil.GsonToBean(resp.retjson!!, EpaySynoRegisterStatusRetBean::class.java)
@@ -42,7 +42,7 @@
                 resp = registerDevice(posid, PublicDef.SCHOOL_NO)
                     ?: return BaseResp(PublicDef.ERROR, "注册设备超时")
                 if (resp.retcode != HttpURLConnection.HTTP_OK) {
-                    return BaseResp(resp.retcode, resp.retmsg)
+                    return BaseResp(resp.retcode, "注册失败:${resp.retcode},${resp.retmsg}")
                 }
                 return BaseResp(PublicDef.ERROR, "等待后台授权")
             }
@@ -53,7 +53,7 @@
             "activated" -> {
                 resp = getActiveStatus(posid) ?: return BaseResp(PublicDef.ERROR, "下载激活文件超时")
                 if (resp.retcode != HttpURLConnection.HTTP_OK) {
-                    return BaseResp(resp.retcode, resp.retmsg)
+                    return BaseResp(resp.retcode, "下载激活文件失败:${resp.retcode},${resp.retmsg}")
                 }
                 val activeRetBean =
                     GsonUtil.GsonToBean(resp.retjson!!, EpaySynoActiveRetBean::class.java)
@@ -85,7 +85,7 @@
         val resp = activeDevice(CommonUtil.getSerialNumber(), UrlBase64.encode(licenseByte))
             ?: return BaseResp(PublicDef.ERROR, "上传激活文件超时")
         if (resp.retcode != HttpURLConnection.HTTP_OK) {
-            return BaseResp(PublicDef.ERROR, resp.retmsg)
+            return BaseResp(PublicDef.ERROR, "上传激活文件失败:${resp.retcode},${resp.retmsg}")
         }
         return BaseResp(PublicDef.SUCCESS, "上传激活文件成功")
     }
diff --git a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
index d46891b..0e7cc2e 100644
--- a/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
+++ b/app/src/main/java/com/supwisdom/utils/CommonUtil.kt
@@ -327,10 +327,10 @@
      * @param context
      */
     fun restartAPP(context: Context) {
-        val intent = Intent(context, SplashActivity::class.java)
-        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
-        context.startActivity(intent)
-        Process.killProcess(Process.myPid())
+//        val intent = Intent(context, SplashActivity::class.java)
+//        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+//        context.startActivity(intent)
+//        Process.killProcess(Process.myPid())
     }
 
     /**
diff --git a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
index b536dd1..874260e 100644
--- a/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
+++ b/app/src/main/java/com/supwisdom/view/DialogPurchase.kt
@@ -176,6 +176,7 @@
                 //F2 连续按重启app
                 val tt = System.currentTimeMillis()
                 if (tt - appreboottime < PublicDef.APP_REBOOT_GAP) {
+                    LogUtil.i(TAG, "设备双击F2,支付界面重启APP!!")
                     CommonUtil.restartAPP(context)
                 } else {
                     appreboottime = tt
