package com.supwisdom.dlpay.api.controller
+import com.supwisdom.dlpay.agent.citizencard.YnrccUtil
+import com.supwisdom.dlpay.agent.service.CitizencardPayService
import com.supwisdom.dlpay.api.bean.*
import com.supwisdom.dlpay.api.exception.RequestParamCheckException
import com.supwisdom.dlpay.api.service.CardService
import com.supwisdom.dlpay.api.service.KafkaSendMsgService
+import com.supwisdom.dlpay.api.service.QRCodeService
import com.supwisdom.dlpay.api.service.UserService
import com.supwisdom.dlpay.exception.TransactionException
import com.supwisdom.dlpay.framework.ResponseBodyBuilder
+import com.supwisdom.dlpay.framework.util.TradeDict
import com.supwisdom.dlpay.framework.util.TradeErrorCode
+import com.supwisdom.dlpay.mobile.service.MobileApiService
import com.supwisdom.dlpay.system.bean.LevelBean
import com.supwisdom.dlpay.system.service.PointsService
import org.apache.commons.beanutils.BeanUtils
private lateinit var kafkaSendMsgService: KafkaSendMsgService
@Autowired
private lateinit var pointsService: PointsService
+ @Autowired
+ private lateinit var mobileApiService: MobileApiService
+ @Autowired
+ private lateinit var userService: UserService
+ @Autowired
+ private lateinit var citizencardPayService: CitizencardPayService
+ @Autowired
+ private lateinit var qrcodeService: QRCodeService
+
@PostMapping("/open")
.fail(ret.retcode, ret.retmsg))
}
}
+
+ /**
+ * 用户绑卡
+ */
+ @PostMapping("/bindcard")
+ fun bindCard(@RequestBody param: BindCardParam):ResponseEntity<Any>{
+ val card = mobileApiService.findCardByNo(param.cardno)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "银行卡号有误"))
+ if (card.userid.isNullOrEmpty() || card.status != TradeDict.STATUS_NORMAL) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, "银行卡号信息有误"))
+ }
+ val person = userService.findOnePersonByUserid(card.userid)
+ if (person.name != param.name) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "绑定信息有误[姓名]"))
+ }
+ if (person.idtype != param.idtype || person.idno != param.idno) {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "绑定信息有误[证件类型/证件号]"))
+ }
+ var signed = ""
+ //call api
+ val resp = citizencardPayService.bindCard(param.cardno, param.name, param.idtype, param.idno, param.phone)
+ if (resp.code != "0000") {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, resp.message))
+ }
+ if (resp.sinstatus == YnrccUtil.TRANSTYPE_SIGNCARD ) {
+ signed = TradeDict.STATUS_YES
+ if(!card.signed){
+ card.signed = true
+ mobileApiService.saveCard(card)
+ }
+ }
+ return ResponseEntity.ok(ResponseBodyBuilder.create().data("signed", signed)
+ .success("ok"))
+ }
+
+ /**
+ * 签约银行协议
+ */
+ @PostMapping("/signbxy")
+ fun signbxy(userid: String, code: String, phone: String): ResponseEntity<Any> {
+ val card = mobileApiService.findCardByUserid(userid)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "卡片不存在,请重新绑定"))
+ //call sign api
+ val person = userService.findOnePersonByUserid(card.userid)
+ val resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, phone, YnrccUtil.TRANSTYPE_SIGNCARD, code)
+ if (resp.code != "0000") {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, resp.message))
+ }
+ card.signed = true
+ mobileApiService.saveCard(card)
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .success("ok"))
+ }
+
+ /**
+ * 用户解约
+ */
+ @PostMapping("/unsignbxy")
+ fun unsignbxy(userid: String,phone:String): ResponseEntity<Any> {
+ val card = mobileApiService.findCardByUserid(userid)
+ ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(400, "银行卡不存在,不能解除代扣协议"))
+ //call sign api
+ val person = userService.findOnePersonByUserid(card.userid)
+ val captcha = ""//此处为验证码,暂由此参数代替
+ var resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, phone, YnrccUtil.TRANSTYPE_UNSIGNCARD, captcha)
+ if (resp.code != "0000") {
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, resp.message))
+ }
+ card.signed = false
+ mobileApiService.saveCard(card)
+ return ResponseEntity.ok(ResponseBodyBuilder.create()
+ .success("ok"))
+ }
+
+ /**
+ * 二维码
+ */
+ @PostMapping("/qrcode")
+ fun qrcode(@RequestBody param: QrcodeParam): ResponseEntity<Any> {
+ val resp = qrcodeService.encodeCode(param)
+ return if (resp.retcode == 0) {
+ ResponseEntity.ok(ResponseBodyBuilder.create().data("qrcode", resp.retmsg)
+ .success("ok"))
+ } else {
+ ResponseEntity.ok(ResponseBodyBuilder.create()
+ .fail(500, resp.retmsg))
+ }
+ }
}
import com.google.gson.Gson
import com.supwisdom.dlpay.api.bean.ApiResponse
import com.supwisdom.dlpay.api.bean.DoorQrcodeResponse
+import com.supwisdom.dlpay.api.bean.QrcodeParam
import com.supwisdom.dlpay.api.service.QRCodeService
import com.supwisdom.dlpay.api.service.UserService
import com.supwisdom.dlpay.framework.service.SystemUtilService
val logger = KotlinLogging.logger { }
- override fun encodeCode(uid:String): ApiResponse {
+ override fun encodeCode(param: QrcodeParam): ApiResponse {
var 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()) {
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 totp = QrCodeTotpUtil.generateTOTP(param.secertkey)
val rowdata = QrcodeRawData()
- rowdata.userid = muser.userid
+ rowdata.userid = param.userid
rowdata.setTotp(totp)
val orgData = Gson().toJson(rowdata)
- val publicKey = RSAKeysGenerate.getPublicKey(muser.rsapublic)
+ val publicKey = RSAKeysGenerate.getPublicKey(param.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")