大理二维码设计修改
diff --git a/payapi/build.gradle b/payapi/build.gradle
index 5d8338c..f10aab8 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -57,6 +57,16 @@
 
 docker.dependsOn(jar)
 
+repositories {
+    maven {
+        url "http://ykt-nx.supwisdom.com/repository/ecard-repo/"
+        credentials {
+            username 'ecard'
+            password 'Ecard4SUP'
+        }
+    }
+}
+
 dependencies {
     implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
     implementation 'org.springframework.boot:spring-boot-starter-data-redis'
@@ -114,6 +124,9 @@
     /*支付宝SDK*/
     implementation group: 'com.alipay.sdk', name: 'alipay-sdk-java', version: '3.7.110.ALL'
 
+    /*大理二维码jar*/
+    implementation 'com.supwisdom:dlsmk-qrcode:1.0.0'
+
     annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
     annotationProcessor 'org.projectlombok:lombok:1.18.8'
     compileOnly 'org.projectlombok:lombok:1.18.8'
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 e99baab..f8c4e5b 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
@@ -33,4 +33,7 @@
 
     @Transactional(rollbackFor = arrayOf(Exception::class))
     fun updateCardTransStatus(cardno:String,status:String): ApiResponse
+
+    @Transactional(rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun findCardByUseridAndCardphyid(userid: String, cardtype: String, cardphyid: String?): TCard?
 }
\ 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 79dbbb9..a94e50b 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
@@ -26,10 +26,13 @@
 class CardServiceImpl : CardService {
     @Autowired
     lateinit var cardDao: CardDao
+
     @Autowired
     lateinit var personDao: PersonDao
+
     @Autowired
-    lateinit var citizencardLossApplyDao:CitizencardLossApplyDao
+    lateinit var citizencardLossApplyDao: CitizencardLossApplyDao
+
     @Autowired
     lateinit var systemUtilService: SystemUtilService
 
@@ -124,8 +127,8 @@
         query.setParameter("endtime", enddate)
         query.unwrap(NativeQueryImpl::class.java).setResultTransformer(Transformers.aliasToBean(CitizenCardInfo::class.java))
         val list = query.resultList as List<CitizenCardInfo>
-        resp.retcode=0
-        resp.retmsg="OK"
+        resp.retcode = 0
+        resp.retmsg = "OK"
         resp.cards = list
         return resp
     }
@@ -172,7 +175,7 @@
     override fun getCardByCardNoOrUserid(param: QueryCardParam): TCard? {
         if (!StringUtil.isEmpty(param.cardno)) {
             return cardDao.findCardByCardnoAndCardtype(param.cardno, param.cardtype)
-        }else if (!StringUtil.isEmpty(param.userid)) {
+        } else if (!StringUtil.isEmpty(param.userid)) {
             return cardDao.findCardByUseridAndCardtype(param.userid, param.cardtype)
         }
         return null
@@ -223,4 +226,12 @@
             this.retmsg = "ok"
         }
     }
+
+    override fun findCardByUseridAndCardphyid(userid: String, cardtype: String, cardphyid: String?): TCard? {
+        return if (cardphyid.isNullOrEmpty()) {
+            cardDao.findCardByUseridAndCardtype(userid, cardtype)
+        } else {
+            cardDao.findBankcardByCitizencard(userid, cardtype, cardphyid)
+        }
+    }
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt
index 38b6374..cbdeaef 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/qrcode_srvice_impl.kt
@@ -7,6 +7,7 @@
 import com.supwisdom.dlpay.api.service.CardService
 import com.supwisdom.dlpay.api.service.QRCodeService
 import com.supwisdom.dlpay.api.service.UserService
+import com.supwisdom.dlpay.busqrcode.QrCode
 import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.framework.util.MD5
 import com.supwisdom.dlpay.framework.util.TradeDict
@@ -64,33 +65,66 @@
             resp.retmsg = "银行卡未签约"
             return resp
         }
+        val cityCard = cardService.findCardByUseridAndCardphyid(bankCard.userid, ConstantUtil.CARDTYPE_CITIZENCARD, bankCard.cardphyid)
+        if (null == cityCard) {
+            resp.retcode = 1
+            resp.retmsg = "用户未绑定市民卡"
+            return resp
+        } else if (TradeDict.STATUS_NORMAL != cityCard.status) {
+            resp.retcode = 1
+            resp.retmsg = "市民卡已注销"
+            return resp
+        } else if (TradeDict.STATUS_NORMAL != cityCard.transStatus) {
+            resp.retcode = 1
+            resp.retmsg = when (cityCard.transStatus) {
+                TradeDict.STATUS_UNUSE -> "市民卡未启用!"
+                TradeDict.STATUS_LOST -> "市民卡已挂失!"
+                TradeDict.STATUS_LOCKED -> "市民卡已锁定!"
+                TradeDict.STATUS_FROZEN -> "市民卡已冻结!"
+                else -> "市民卡状态异常!"
+            }
+            return resp
+        }
 
-        val totp = QrCodeTotpUtil.generateTOTP(muser.secertkey)
-        val rowdata = QrcodeRawData()
-        rowdata.userid = muser.userid
-        rowdata.setTotp(totp)
-        val orgData = Gson().toJson(rowdata)
-        val publicKey = RSAKeysGenerate.getPublicKey(muser.rsapublic)
-        val encdata = org.apache.commons.codec.binary.Base64.encodeBase64String(RSAKeysGenerate.encryptbyte(publicKey, orgData))
-        val qrcode = AesUtil.encryptCFB("$uid:$encdata", rootkey, iv, "AES/CFB/NoPadding")
-
-        val key = MD5.encodeByMD5ToURLSafeBase64(qrcode)
-        redisTemplate.opsForValue().set(key,qrcode, Duration.ofSeconds(20))
+        val handle = QrCode.builder()
+                .rootKey(rootkey)
+                .iv(iv)
+                .uid(uid)
+                .card(cityCard.cardno, cityCard.busCardType ?: "80")
+                .create()
+        val qrcode = handle.qrcode()
         resp.retcode = 0
-        resp.retmsg = key
+        resp.retmsg = qrcode
         return resp
+
+//        val totp = QrCodeTotpUtil.generateTOTP(muser.secertkey)
+//        val rowdata = QrcodeRawData()
+//        rowdata.userid = muser.userid
+//        rowdata.setTotp(totp)
+//        val orgData = Gson().toJson(rowdata)
+//        val publicKey = RSAKeysGenerate.getPublicKey(muser.rsapublic)
+//        val encdata = org.apache.commons.codec.binary.Base64.encodeBase64String(RSAKeysGenerate.encryptbyte(publicKey, orgData))
+//        val qrcode = AesUtil.encryptCFB("$uid:$encdata", rootkey, iv, "AES/CFB/NoPadding")
+//
+//        val key = MD5.encodeByMD5ToURLSafeBase64(qrcode)
+//        redisTemplate.opsForValue().set(key,qrcode, Duration.ofSeconds(20))
+
+//        resp.retcode = 0
+//        resp.retmsg = key
+//        return resp
     }
 
     override fun encodeCode(param: QrcodeParam): ApiResponse {
-        var resp = ApiResponse()
+        val resp = ApiResponse()
         val uid = param.uid
         val rootkey = systemUtilService.getBusinessValue("aes.cfb.rootkey")
         val iv = systemUtilService.getBusinessValue("aes.cfb.iv")
-        if (rootkey.isNullOrEmpty()||iv.isNullOrEmpty()) {
+        if (rootkey.isNullOrEmpty() || iv.isNullOrEmpty()) {
             resp.retcode = 1
             resp.retmsg = "秘钥未配置"
             return resp
         }
+
         val totp = QrCodeTotpUtil.generateTOTP(param.secertkey)
         val rowdata = QrcodeRawData()
         rowdata.userid = param.userid