短信对接
diff --git a/payapi/build.gradle b/payapi/build.gradle
index 3e5d865..f87ce15 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -86,7 +86,7 @@
     implementation group: 'javax.servlet', name: 'jstl', version: '1.2'
     implementation group: 'taglibs', name: 'standard', version: '1.1.2'
     implementation group: 'commons-codec', name: 'commons-codec', version: '1.6'
-//    implementation files('libs/ojdbc6.jar')
+    implementation files('libs/sms.jar')
     implementation 'commons-dbcp:commons-dbcp:1.4'
 
     implementation project(':payapi-common')
diff --git a/payapi/libs/sms.jar b/payapi/libs/sms.jar
new file mode 100755
index 0000000..37ff259
--- /dev/null
+++ b/payapi/libs/sms.jar
Binary files differ
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 09af455..3d7471c 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -1,5 +1,6 @@
 package com.supwisdom.dlpay.mobile
 
+import com.mascloud.sdkclient.Client
 import com.supwisdom.dlpay.agent.citizencard.YnrccUtil
 import com.supwisdom.dlpay.agent.service.CitizencardPayService
 import com.supwisdom.dlpay.api.bean.JsonResult
@@ -11,6 +12,7 @@
 import com.supwisdom.dlpay.framework.redisrepo.ApiJwtRepository
 import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.framework.util.*
+import com.supwisdom.dlpay.framework.util.Dictionary
 import com.supwisdom.dlpay.mobile.domain.TBMobileUser
 import com.supwisdom.dlpay.mobile.service.MobileApiService
 import com.supwisdom.dlpay.system.service.DictionaryProxy
@@ -26,7 +28,7 @@
 import org.springframework.web.bind.annotation.RestController
 import org.springframework.web.bind.annotation.RequestParam
 import java.time.Duration
-import java.util.Calendar
+import java.util.*
 
 
 @RestController
@@ -88,10 +90,12 @@
         val temp = redisTemplate.opsForValue().get(phone)
         if (temp.isNullOrEmpty()) {
             val code = RandomUtils.randomNumber(6)
-            System.out.println(code)
+            val rs = mobileApiService.sendSms(phone,code)
+            if("0"!=rs.retcode){
+                return JsonResult.error(rs.retmsg)
+            }
             redisTemplate.opsForValue().set(phone, code, Duration.ofMinutes(5))
         }
-        //TODO call send code sdk
         return JsonResult.ok("验证码已发送")
     }
 
@@ -256,10 +260,12 @@
         val temp = redisTemplate.opsForValue().get(user.phone)
         if (temp.isNullOrEmpty()) {
             val code = RandomUtils.randomNumber(6)
-            System.out.println(code)
+            val rs = mobileApiService.sendSms(user.phone,code)
+            if("0"!=rs.retcode){
+                return JsonResult.error(rs.retmsg)
+            }
             redisTemplate.opsForValue().set(user.phone, code, Duration.ofMinutes(5))
         }
-        //TODO call send code sdk
         return JsonResult.ok("验证码已发送")
     }
 
@@ -664,7 +670,7 @@
         val p = SecurityContextHolder.getContext().authentication
         mobileApiService.findUserById(p.name)
                 ?: return JsonResult.error("用户不存在,请注册")
-        //TODO cardlost
+        //TODO qrcode
         return JsonResult.ok("ok").put("qrcode",p.name)!!
     }
 
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt
index 6b28b01..5e1ad77 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt
@@ -1,5 +1,6 @@
 package com.supwisdom.dlpay.mobile.service
 
+import com.supwisdom.dlpay.api.bean.BaseResp
 import com.supwisdom.dlpay.api.domain.TCard
 import com.supwisdom.dlpay.mobile.domain.TBMobileUser
 import com.supwisdom.dlpay.mobile.domain.TBPages
@@ -18,4 +19,6 @@
     fun findCardByUserid(userid :String) :TCard?
 
     fun saveCard(card:TCard):TCard
+
+    fun sendSms(phone:String,code:String):BaseResp
 }
\ No newline at end of file
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 e7dee86..87ef47b 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
@@ -1,15 +1,20 @@
 package com.supwisdom.dlpay.mobile.service.impl
 
+import com.mascloud.sdkclient.Client
+import com.supwisdom.dlpay.api.bean.BaseResp
 import com.supwisdom.dlpay.api.dao.CardDao
 import com.supwisdom.dlpay.api.domain.TCard
+import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.mobile.dao.MobileUserDao
 import com.supwisdom.dlpay.mobile.dao.PagesDao
 import com.supwisdom.dlpay.mobile.domain.TBMobileUser
 import com.supwisdom.dlpay.mobile.domain.TBPages
 import com.supwisdom.dlpay.mobile.service.MobileApiService
 import com.supwisdom.dlpay.util.ConstantUtil
+import mu.KotlinLogging
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Service
+import java.util.*
 
 @Service
 class MobileApiServiceImpl : MobileApiService {
@@ -22,6 +27,11 @@
     @Autowired
     lateinit var pagesDao: PagesDao
 
+    @Autowired
+    lateinit var systemUtilService: SystemUtilService
+
+    val logger = KotlinLogging.logger { }
+
     override fun saveUser(user: TBMobileUser): TBMobileUser {
         return mobileUserDao.save(user)
     }
@@ -53,4 +63,86 @@
     override fun saveCard(card: TCard): TCard {
         return cardDao.save(card)
     }
+
+    override fun sendSms(phone:String,code: String): BaseResp {
+        var resp = BaseResp()
+        var url = systemUtilService.getBusinessValue("sms.url")
+        if(url.isNullOrEmpty()){
+            resp.retcode = "1"
+            resp.retmsg="短信业务参数未配置"
+            logger.error { "短信参数:sms.url 未在业务表中配置" }
+            return resp
+        }
+        var account = systemUtilService.getBusinessValue("sms.account")
+        if(account.isNullOrEmpty()){
+            resp.retcode = "1"
+            resp.retmsg="短信业务参数未配置"
+            logger.error { "短信参数:sms.account 未在业务表中配置" }
+            return resp
+        }
+        var pwd = systemUtilService.getBusinessValue("sms.pwd")
+        if(pwd.isNullOrEmpty()){
+            resp.retcode = "1"
+            resp.retmsg="短信业务参数未配置"
+            logger.error { "短信参数:sms.pwd 未在业务表中配置" }
+            return resp
+        }
+        var ecname = systemUtilService.getBusinessValue("sms.ecname")
+        if(ecname.isNullOrEmpty()){
+            resp.retcode = "1"
+            resp.retmsg="短信业务参数未配置"
+            logger.error { "短信参数:sms.ecname 未在业务表中配置" }
+            return resp
+        }
+        var addserial = systemUtilService.getBusinessValue("sms.addserial")
+        if(pwd.isNullOrEmpty()){
+            resp.retcode = "1"
+            resp.retmsg="短信业务参数未配置"
+            logger.error { "短信参数:sms.addserial 未在业务表中配置" }
+            return resp
+        }
+        var sign = systemUtilService.getBusinessValue("sms.sign")
+        if(sign.isNullOrEmpty()){
+            resp.retcode = "1"
+            resp.retmsg="短信业务参数未配置"
+            logger.error { "短信参数:sms.sign 未在业务表中配置" }
+            return resp
+        }
+        var tempid = systemUtilService.getBusinessValue("sms.tempid")
+        if(tempid.isNullOrEmpty()){
+            resp.retcode = "1"
+            resp.retmsg="短信业务参数未配置"
+            logger.error { "短信参数:sms.tempid 未在业务表中配置" }
+            return resp
+        }
+        var priority = systemUtilService.getBusinessValue("sms.priority")
+        if(priority.isNullOrEmpty()){
+            priority="1"
+        }
+        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
+        }
+        var sendResult = client.sendTSMS (arrayOf(phone),
+                tempid, arrayOf(code),addserial,  priority.toInt(),sign, UUID.randomUUID().toString())
+        System.out.println("推送结果: $sendResult")
+        return if(sendResult==1||sendResult==110){
+            resp.retcode = "0"
+            resp.retmsg="成功"
+            resp
+        }else if(sendResult==104){
+            resp.retcode = "1"
+            resp.retmsg="手机号错误"
+            resp
+        }else{
+            resp.retcode = "1"
+            resp.retmsg="短信发送失败,请稍后再试"
+            resp
+        }
+    }
 }
\ No newline at end of file