大理二维码设计修改
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