diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
index 6e2de3c..da66271 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -93,8 +93,8 @@
                 return JsonResult.error("类型错误")
             }
         }
-        // 如果未设置密码
-        val temp = redisTemplate.opsForValue().get(phone)
+        //如果已经发送了
+        val temp = redisTemplate.opsForValue().get(phone.plus("_after"))
         if (temp.isNullOrEmpty()) {
             val code = RandomUtils.randomNumber(6)
             logger.error { code }
@@ -105,6 +105,7 @@
                 return JsonResult.error(rs.retmsg)
             }
             redisTemplate.opsForValue().set(phone, code, Duration.ofMinutes(5))
+            redisTemplate.opsForValue().set(phone.plus("_after"), code, Duration.ofMinutes(2))
         }
         return JsonResult.ok("验证码已发送")
     }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
index 292b73c..36c5158 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
@@ -30,7 +30,9 @@
 
     @Autowired
     lateinit var systemUtilService: SystemUtilService
-
+    companion object {
+        var isMsgLogined: Boolean = false
+    }
     val logger = KotlinLogging.logger { }
 
     override fun saveUser(user: TBMobileUser): TBMobileUser {
@@ -123,12 +125,15 @@
         }
         var client = Client.getInstance()
         // 正式环境IP，登录验证URL，用户名，密码，集团客户名称
-        var ret = client.login(url, account, pwd, ecname)
-        if (!ret) {
-            logger.error { "无法登陆短信平台，身份验证失" }
-            resp.retcode = "1"
-            resp.retmsg = "无法登陆短信平台"
-            return resp
+        if(!isMsgLogined){
+            var ret = client.login(url, account, pwd, ecname)
+            if (!ret) {
+                logger.error { "无法登陆短信平台，身份验证失" }
+                resp.retcode = "1"
+                resp.retmsg = "无法登陆短信平台"
+                return resp
+            }
+            isMsgLogined = true
         }
         var sendResult = client.sendTSMS(arrayOf(phone),
                 tempid, arrayOf(code), addserial, priority.toInt(), sign, UUID.randomUUID().toString())
