From 5b039d19400b428a598faedfeebbdfc170f105a6 Mon Sep 17 00:00:00 2001 From: "sijun.li" Date: Wed, 30 Sep 2020 22:31:29 +0800 Subject: [PATCH] =?utf8?q?=E4=BF=9D=E7=95=99=E5=8E=9F=E5=A7=8B=E7=94=9F?= =?utf8?q?=E6=88=90=E4=BA=8C=E7=BB=B4=E7=A0=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../api/service/impl/qrcode_srvice_impl.kt | 36 +++++++++++++++++++ .../dlpay/api/service/qrcode_service.kt | 1 + .../com/supwisdom/dlpay/mobile/MobileApi.kt | 24 ++++++------- 3 files changed, 49 insertions(+), 12 deletions(-) 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 31da5df8..b1954226 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 @@ -31,6 +31,42 @@ class QRCodeServiceImpl:QRCodeService{ val logger = KotlinLogging.logger { } + override fun encodeCode(uid:String): ApiResponse { + var resp = ApiResponse() + val rootkey = systemUtilService.getBusinessValue("aes.cfb.rootkey") + val iv = systemUtilService.getBusinessValue("aes.cfb.iv") + if (rootkey.isNullOrEmpty()||iv.isNullOrEmpty()) { + resp.retcode = 1 + resp.retmsg = "秘钥未配置" + return resp + } + val muser = mobileApiService.findUserById(uid) + if(muser==null||TradeDict.STATUS_NORMAL!=muser.status){ + resp.retcode = 1 + resp.retmsg = "用户不存在或状态异常" + return resp + } + if(muser.userid.isNullOrEmpty()){ + resp.retcode = 1 + resp.retmsg = "用户未绑定身份" + 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 uid = param.uid diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/qrcode_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/qrcode_service.kt index b5facd87..d8b21ce8 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/qrcode_service.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/qrcode_service.kt @@ -5,6 +5,7 @@ import com.supwisdom.dlpay.api.bean.DoorQrcodeResponse import com.supwisdom.dlpay.api.bean.QrcodeParam interface QRCodeService { + fun encodeCode(uid: String): ApiResponse fun encodeCode(param: QrcodeParam): ApiResponse fun decodeCode(qrcode: String): DoorQrcodeResponse } \ No newline at end of file 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 417e852d..299fd7fb 100644 --- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt +++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/MobileApi.kt @@ -857,18 +857,18 @@ class ApiV1 { * * 二维码在线生成 * */ -// @RequestMapping("/qrcode") -// fun qrcode(): JsonResult { -// val p = SecurityContextHolder.getContext().authentication -// val user = mobileApiService.findUserById(p.name) -// ?: return JsonResult.error("用户不存在,请注册") -// val resp = qrcodeService.encodeCode(user.uid) -// return if(resp.retcode==0){ -// JsonResult.ok("ok").put("qrcode", resp.retmsg)!! -// }else{ -// JsonResult.error(resp.retmsg) -// } -// } + @RequestMapping("/qrcode") + fun qrcode(): JsonResult { + val p = SecurityContextHolder.getContext().authentication + val user = mobileApiService.findUserById(p.name) + ?: return JsonResult.error("用户不存在,请注册") + val resp = qrcodeService.encodeCode(user.uid) + return if(resp.retcode==0){ + JsonResult.ok("ok").put("qrcode", resp.retmsg)!! + }else{ + JsonResult.error(resp.retmsg) + } + } /** * -- 2.17.1