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()) {
