diff --git a/backend/src/main/java/com/supwisdom/dlpay/portal/util/PortalConstant.java b/backend/src/main/java/com/supwisdom/dlpay/portal/util/PortalConstant.java
index f9f21e0..5506ef4 100644
--- a/backend/src/main/java/com/supwisdom/dlpay/portal/util/PortalConstant.java
+++ b/backend/src/main/java/com/supwisdom/dlpay/portal/util/PortalConstant.java
@@ -20,6 +20,11 @@
   public static final String SYSPARA_PORTAL_AMAPURL = "portal.amapurl";
   public static final String SYSPARA_PORTAL_EMAIL_ADDRESS = "portal.email.address";
   public static final String SYSPARA_PORTAL_EMAIL_PWD = "portal.email.pwd";
+  public static final String SYSPARA_PORTAL_APP_PROMPT = "portal.app.prompt";
+  /**
+   * 版本名称和版本号之间用##分隔
+   */
+  public static final String SYSPARA_PORTAL_APP_VERSION = "portal.app.version";
   public static final String SYSPARA_MEDICAL_URL = "medical.url";
   public static final String SYSPARA_MEDICAL_SHOPACCNO = "medical.shopaccno";
   public static final String SYSPARA_MEDICAL_SAVEJSON = "medical.savejson";
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/medical/service/MedicalService.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/medical/service/MedicalService.kt
index 4da3230..464dddd 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/medical/service/MedicalService.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/medical/service/MedicalService.kt
@@ -1,6 +1,5 @@
 package com.supwisdom.dlpay.medical.service
 
-import com.supwisdom.dlpay.api.bean.JsonResult
 import com.supwisdom.dlpay.framework.jpa.page.Pagination
 import com.supwisdom.dlpay.medical.bean.*
 import com.supwisdom.dlpay.medical.domain.TBMedicalCard
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index 0e3605b..743bb7b 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -24,7 +24,6 @@
 import com.supwisdom.dlpay.portal.bean.FeedbackSearchBean
 import com.supwisdom.dlpay.portal.bean.UserSecurityRequestBean
 import com.supwisdom.dlpay.portal.domain.TBFeedback
-import com.supwisdom.dlpay.portal.domain.TBUserSecurity
 import com.supwisdom.dlpay.portal.service.*
 import com.supwisdom.dlpay.portal.util.PortalConstant
 import com.supwisdom.dlpay.system.service.DictionaryProxy
@@ -480,6 +479,9 @@
                         ?: return JsonResult.error("用户不存在")
             }
             val data = secretSecurityService.getSecretSecurityList(user.uid)
+            if (data.isNullOrEmpty()) {
+                return JsonResult.error("用户未设置密保问题")
+            }
             JsonResult.ok().put("data", data)
         } catch (e: Exception) {
             if (e is PortalBusinessException) {
@@ -493,7 +495,7 @@
     /**
      * 校验密保答案
      */
-    @RequestMapping(value = ["/security/check"], method = [RequestMethod.GET])
+    @RequestMapping(value = ["/security/check"], method = [RequestMethod.POST])
     fun checkUserSecurity(@RequestBody bean: UserSecurityRequestBean): JsonResult? {
         return try {
             val user = mobileApiService.findUserByPhone(bean.phone)
@@ -545,6 +547,30 @@
         }
     }
 
+    /**
+     * app打开提示信息
+     */
+    @RequestMapping(value = ["/app/prompt"], method = [RequestMethod.GET])
+    fun appPrompt(vername: String, verno: String): JsonResult? {
+        try {
+            val prompt = systemUtilService.getBusinessValue(PortalConstant.SYSPARA_PORTAL_APP_PROMPT)
+            if (prompt.isNullOrEmpty()) {
+                val version = systemUtilService.getBusinessValue(PortalConstant.SYSPARA_PORTAL_APP_VERSION)
+                if (!version.isNullOrEmpty()) {
+                    val split = version.split("##")
+                    if (split[1] > verno) {
+                        return JsonResult.ok().put("prompt", "您当前使用的应用不是最新版本，如要升级请至应用商店更新")
+                    }
+                }
+                return JsonResult.ok().put("prompt", null)
+            }
+            return JsonResult.ok().put("prompt", prompt)
+        } catch (e: Exception) {
+            logger.error("获取app提示信息异常", e)
+            return JsonResult.ok().put("prompt", null)
+        }
+    }
+
 }
 
 
@@ -1301,7 +1327,7 @@
      * 解除绑定
      * */
     @RequestMapping("/unbindcard")
-    fun unbindcard(paypwd: String): JsonResult {
+    fun unBindCard(paypwd: String): JsonResult {
         val p = SecurityContextHolder.getContext().authentication
         val user = mobileApiService.findUserById(p.name)
                 ?: return JsonResult.error("用户不存在，请注册")
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/UserSecurityDao.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/UserSecurityDao.kt
index a635f5d..02985d4 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/UserSecurityDao.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/dao/UserSecurityDao.kt
@@ -4,7 +4,6 @@
 import org.springframework.data.jpa.repository.JpaRepository
 
 interface UserSecurityDao : JpaRepository<TBUserSecurity, String> {
-    fun deleteByUid(uid: String)
     fun findByUidAndSsid(uid: String, ssid: String): TBUserSecurity?
     fun findByUid(uis: String): List<TBUserSecurity>
 }
\ No newline at end of file
diff --git a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/SecretSecurityServiceImpl.kt b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/SecretSecurityServiceImpl.kt
index c03aae0..83940d1 100644
--- a/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/SecretSecurityServiceImpl.kt
+++ b/backend/src/main/kotlin/com/supwisdom/dlpay/portal/service/Impl/SecretSecurityServiceImpl.kt
@@ -31,7 +31,10 @@
             throw PortalBusinessException("密保问题至少设置三个")
         }
         // 先删除用户之前所有的问题再保存
-        userSecurityDao.deleteByUid(bean.uid)
+        val list = userSecurityDao.findByUid(bean.uid)
+        if (!list.isNullOrEmpty()) {
+            userSecurityDao.deleteAll(list)
+        }
         answers.forEach {
             if (it.answer.isNullOrEmpty()) {
                 throw PortalBusinessException("密保答案不能为空")
diff --git a/backend/src/main/resources/data-postgresql.sql b/backend/src/main/resources/data-postgresql.sql
index d96584a..11c1ea5 100644
--- a/backend/src/main/resources/data-postgresql.sql
+++ b/backend/src/main/resources/data-postgresql.sql
@@ -19,6 +19,10 @@
 INSERT INTO "tb_businesspara"("parakey", "paraval", "tenantid") VALUES ('portal.secret', '1a8905a272364ef592e61f4a1288f07d', '{tenentid}');
 INSERT INTO "tb_businesspara"("parakey", "paraval", "tenantid") VALUES ('portal.email.address', '18227591821@163.com', '{tenentid}');
 INSERT INTO "tb_businesspara"("parakey", "paraval", "tenantid") VALUES ('portal.email.pwd', 'AVIGHTZYNSINDXZX', '{tenentid}');
+INSERT INTO "tb_businesspara"("parakey", "paraval", "tenantid") VALUES ('portal.app.version', '2.0.1##7', '{tenentid}');
+INSERT INTO "tb_businesspara"("parakey", "paraval", "tenantid") VALUES ('portal.app.prompt', '', '{tenentid}');
+
+
 
 INSERT INTO "tb_businesspara"("parakey", "paraval", "tenantid") VALUES ('aes.cfb.totp.offset', '20', '{tenantid}');
 INSERT INTO "tb_businesspara"("parakey", "paraval", "tenantid") VALUES ('aes.cfb.rootkey', 'Vbb1syh8U1+CdLmTVGdtDiVvKBQ81n4GmgBEO/ohSbU=', '{tenantid}');
