新增卡号查询接口
diff --git a/payapi/build.gradle b/payapi/build.gradle
index d5c3abf..face7fa 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -1,3 +1,5 @@
+import java.text.SimpleDateFormat
+
 plugins {
     id 'java'
     id 'org.springframework.boot'
@@ -24,7 +26,7 @@
 bootJar {
     mainClassName = payapiStartClass
     manifest {
-        attributes('Payapi-Version': payapiVersion)
+        attributes('Payapi-Version': payapiVersion,'Payapi-Buildtime':new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ").format(new Date()))
     }
 }
 
@@ -71,7 +73,7 @@
     implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery:2.1.2.RELEASE'
 
     implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
-
+    implementation: 'org.springframework.kafka:spring-kafka:2.2.8.RELEASE'
     runtime("org.springframework.boot:spring-boot-devtools")
 
     implementation 'org.postgresql:postgresql:42.2.5'
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
index 551b7c6..3c4500e 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
@@ -4,17 +4,16 @@
 import com.supwisdom.dlpay.api.bean.OpenUserParam
 import com.supwisdom.dlpay.api.bean.QueryUserParam
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException
+import com.supwisdom.dlpay.api.service.CardService
 import com.supwisdom.dlpay.api.service.UserService
 import com.supwisdom.dlpay.exception.TransactionException
+import com.supwisdom.dlpay.exception.TransactionProcessException
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import com.supwisdom.dlpay.framework.service.CommonService
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.http.ResponseEntity
-import org.springframework.web.bind.annotation.PostMapping
-import org.springframework.web.bind.annotation.RequestBody
-import org.springframework.web.bind.annotation.RequestMapping
-import org.springframework.web.bind.annotation.RestController
+import org.springframework.web.bind.annotation.*
 import java.net.URLDecoder
 import javax.servlet.http.HttpServletRequest
 import javax.servlet.http.HttpServletResponse
@@ -24,6 +23,8 @@
 class UserAPIController {
     @Autowired
     private lateinit var useService: UserService
+    @Autowired
+    private lateinit var cardService: CardService
 
     @PostMapping("/open")
     fun openAccount(@RequestBody param: OpenUserParam): ResponseEntity<Any> {
@@ -121,6 +122,15 @@
                     .transException(et, "业务处理错误"))
         }
     }
-
-
+    @PostMapping("/querybycardno")
+    fun querybycardno(@RequestBody param: QueryUserParam): ResponseEntity<Any> {
+        val ret = cardService.getPersonByCardno(param.citizencardno, param.bankcardno)
+        return if(ret.retcode==0){
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .success(ret,"ok"))
+        }else{
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .fail(ret.retcode, ret.retmsg))
+        }
+    }
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/card_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/card_service.kt
index 4b09146..a25562a 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/card_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/card_service.kt
@@ -1,7 +1,9 @@
 package com.supwisdom.dlpay.api.service
 
+import com.supwisdom.dlpay.api.bean.UserInforResponse
 import com.supwisdom.dlpay.api.domain.TCard
 import com.supwisdom.dlpay.api.domain.TPerson
+import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import org.springframework.transaction.annotation.Transactional
 
 interface CardService {
@@ -11,5 +13,7 @@
     @Transactional(rollbackFor = arrayOf(Exception::class), readOnly = true)
     fun getPersonByCitizencard(cardno: String, ignoreStatus: Boolean? = false): TPerson
 
+    @Transactional(rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun getPersonByCardno(citizencardno: String?, bankcardno:String?): UserInforResponse
 
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt
index 5a26d56..a9bcb82 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/card_service_impl.kt
@@ -1,11 +1,13 @@
 package com.supwisdom.dlpay.api.service.impl
 
+import com.supwisdom.dlpay.api.bean.UserInforResponse
 import com.supwisdom.dlpay.api.dao.CardDao
 import com.supwisdom.dlpay.api.dao.PersonDao
 import com.supwisdom.dlpay.api.domain.TCard
 import com.supwisdom.dlpay.api.domain.TPerson
 import com.supwisdom.dlpay.api.service.CardService
 import com.supwisdom.dlpay.exception.TransactionProcessException
+import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
 import com.supwisdom.dlpay.util.ConstantUtil
@@ -40,4 +42,43 @@
         return personDao.findByUserid(cityCard.userid)
                 ?: throw TransactionProcessException(TradeErrorCode.ACCOUNT_NOT_EXISTS, "市民卡[$cardno]用户信息不存在!")
     }
+
+    override fun getPersonByCardno(citizencardno: String?, bankcardno: String?): UserInforResponse {
+        var resp = UserInforResponse()
+        var cityCard:TCard
+        if (!citizencardno.isNullOrEmpty()) {
+            cityCard = cardDao.findCardByCardnoAndCardtype(citizencardno, ConstantUtil.CARDTYPE_CITIZENCARD)
+            if(cityCard==null){
+                resp.retcode=1
+                resp.retmsg = "市民卡不存在"
+                return resp
+            }
+        } else if (!bankcardno.isNullOrEmpty()) {
+            cityCard = cardDao.findCardByCardnoAndCardtype(bankcardno, ConstantUtil.CARDTYPE_BANKCARD)
+            if(cityCard==null){
+                resp.retcode=1
+                resp.retmsg = "银行卡不存在"
+                return resp
+            }
+        } else {
+            resp.retcode=1
+            resp.retmsg = "参数错误"
+            return resp
+        }
+        resp.cardno = cityCard.cardno
+        resp.cardstatus = cityCard.status
+        resp.transstatus = cityCard.transStatus
+        resp.expiredate = cityCard.expiredate
+        val person = personDao.findByUserid(cityCard.userid)
+        if (person != null) {
+            resp.retcode=0
+            resp.name = person.name
+            resp.userid = person.userid
+            resp.status = person.status
+            return resp
+        }
+        resp.retcode=1
+        resp.retmsg = "用户不存在"
+        return resp
+    }
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt
new file mode 100644
index 0000000..9322b68
--- /dev/null
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/kafka_service.kt
@@ -0,0 +1,16 @@
+package com.supwisdom.dlpay.api.service
+
+import org.springframework.stereotype.Component
+import org.springframework.kafka.core.KafkaTemplate
+import org.springframework.beans.factory.annotation.Autowired
+
+
+
+@Component
+class KafkaSendMsgService{
+    @Autowired
+    private lateinit var kafkaTemplate: KafkaTemplate<String, String>
+    fun sendMessage(topic:String,msg: String) {
+        kafkaTemplate.send(topic, msg)
+    }
+}
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt
index d5a13dd..38f1499 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/framework/service/impl/framework_service_impl.kt
@@ -30,9 +30,11 @@
 
     override fun getSystemVersion(): String {
         return try {
-            Manifests.read("Payapi-Version") ?: "version 1.0"
+            var ver =  Manifests.read("Payapi-Version") ?: "version 1.0"
+            ver += Manifests.read("Payapi-Buildtime") ?: "no"
+            ver
         } catch (ex: Exception) {
-//            ex.printStackTrace()
+            ex.printStackTrace()
             "unknown"
         }
     }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
index 882695e..b8ea4fc 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
@@ -42,7 +42,6 @@
     @Autowired
     lateinit var userService: UserService
 
-
     override fun onAuthenticationSuccess(request: HttpServletRequest, response: HttpServletResponse, authentication: Authentication) {
         logger.error(request.getParameter("platform"))
         val temp = authentication.principal as TBMobileUser
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 bd49910..9d78020 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt
@@ -18,6 +18,7 @@
 import com.supwisdom.dlpay.system.service.DictionaryProxy
 import com.supwisdom.dlpay.util.ConstantUtil
 import com.supwisdom.dlpay.util.RSAKeysGenerate
+import mu.KotlinLogging
 import org.apache.commons.lang.StringUtils
 import org.jose4j.jwt.ReservedClaimNames
 import org.springframework.beans.factory.annotation.Autowired
@@ -49,6 +50,7 @@
     lateinit var apiJwtRepository: ApiJwtRepository
     @Autowired
     lateinit var systemUtilService: SystemUtilService
+    val logger = KotlinLogging.logger { }
 
     @RequestMapping("/time")
     fun time(): JsonResult {
@@ -95,7 +97,8 @@
         val temp = redisTemplate.opsForValue().get(phone)
         if (temp.isNullOrEmpty()) {
             val code = RandomUtils.randomNumber(6)
-            System.out.println(code)
+            logger.error { code }
+            //TODO 先发送成功,再放入redis
             redisTemplate.opsForValue().set(phone, code, Duration.ofMinutes(5))
             val rs = mobileApiService.sendSms(phone, code)
             if ("0" != rs.retcode) {
@@ -247,6 +250,7 @@
     lateinit var jwtConfig: JwtConfig
     @Autowired
     lateinit var qrcodeService:QRCodeService
+    val logger = KotlinLogging.logger { }
 
     @RequestMapping("/idtypes")
     fun idtypes(): JsonResult {
@@ -366,13 +370,13 @@
             mobileApiService.saveCard(card)
             mobileApiService.saveUser(user)
         }
-        System.out.println(resp.captcha)
+        logger.error { resp.captcha }
         var code = if (resp.captcha.isNullOrEmpty()) {
             RandomUtils.randomNumber(6)
         } else {
             resp.captcha
         }
-        System.out.println(code)
+        logger.error { code }
         redisTemplate.opsForValue().set(user.phone, code, Duration.ofMinutes(10))
         var payseted = false
         if (!user.paypwd.isNullOrEmpty()) {