From bfb99f095d42cb14d5b594d89ac1859fde339337 Mon Sep 17 00:00:00 2001 From: qiaowei Date: Fri, 12 Apr 2019 11:26:39 +0800 Subject: [PATCH] =?utf8?q?=E4=B8=80=E5=8D=A1=E9=80=9A=E6=94=AF=E4=BB=98?= =?utf8?q?=E8=B0=83=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../dlpay/consume/dao/AccountDao.java | 4 ++-- .../supwisdom/dlpay/consume/ThirdPayCall.kt | 8 ++++---- .../supwisdom/dlpay/consume/comsume_builder.kt | 16 ++++++++++++++-- .../consume/controller/consume_service.kt | 18 +++++++++--------- .../consume/service/impl/pay_service_impl.kt | 17 ++++++++++++++++- .../service/impl/person_service_impl.kt | 6 +++++- .../dlpay/consume/service/person_service.kt | 5 ++++- 7 files changed, 54 insertions(+), 20 deletions(-) diff --git a/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java b/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java index 948b5250..e82cb110 100644 --- a/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java +++ b/src/main/java/com/supwisdom/dlpay/consume/dao/AccountDao.java @@ -11,8 +11,8 @@ import javax.persistence.LockModeType; public interface AccountDao extends JpaRepository { @Lock(LockModeType.PESSIMISTIC_WRITE) - @Query("select a from taccount a where a.accno = ?1") - TAccount getByAccnoForUpdate(String accno); + //@Query("select a from taccount a where a.accno = ?1") + TAccount getByAccno(String accno); TAccount findByUserid(String userid); } diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt index d003d71a..8419452c 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/ThirdPayCall.kt @@ -16,7 +16,7 @@ import com.supwisdom.dlpay.util.MoneyUtil class CallService { companion object { - fun callYktPay(config: Map, paydtl: TUserdtl, time: String): BaseResp { + fun callYktPay(config: Map, paydtl: TUserdtl, time: String,stuempno: String, yktshopid: String, devphyid: String?): BaseResp { val code = BaseResp() val appid = config["appid"] @@ -25,12 +25,12 @@ class CallService { val params = hashMapOf() params.put("partner_id", appid) - params.put("stuempno", "") + params.put("stuempno", stuempno) params.put("tradeno", paydtl.refno) params.put("tradename", paydtl.payinfo) params.put("amount", MoneyUtil.YuanToFen(paydtl.amount).toString()) - params.put("shopid", "") - params.put("devphyid", "") + params.put("shopid", yktshopid) + params.put("devphyid", devphyid) params.put("calcmanagefee", "T") //是否计算费率 params.put("timestamp", time) params.put("sign_method", "HMAC"); diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt index 75b8e1b1..8243a78d 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt @@ -12,6 +12,7 @@ import com.supwisdom.dlpay.framework.domain.TTranstype import com.supwisdom.dlpay.framework.util.TradeDict import com.supwisdom.dlpay.framework.util.TradeErrorCode import com.supwisdom.dlpay.framework.util.Tradetype +import org.springframework.beans.factory.annotation.Autowired class AccountHolder private constructor(val accountId: String, val idType: Int) { companion object { @@ -81,7 +82,7 @@ class PersonTransBuilder private constructor(accUitl: AccountUtilServcie) { // 内部参数,不需要调用者处理 val details = mutableListOf() var amount: Double = 0.0 - lateinit var accountUtil: AccountUtilServcie + var accountUtil = accUitl /** * 支付方式 @@ -89,8 +90,14 @@ class PersonTransBuilder private constructor(accUitl: AccountUtilServcie) { var paytype = "" var payinfo = "" - fun setOwner(per: TPerson) { + /** + * 外部流水号 + * */ + var outtradeno = "" + + fun setOwner(per: TPerson): PersonTransBuilder { this.person = per + return this } fun enableOverdraft(b: Boolean = false): PersonTransBuilder { @@ -110,6 +117,11 @@ class PersonTransBuilder private constructor(accUitl: AccountUtilServcie) { return this } + fun setOuttradeno(outtradeno: String): PersonTransBuilder { + this.outtradeno = outtradeno + return this + } + fun chooseTradetype(tradetype: Tradetype) { this.tradetype = tradetype } diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt index 6ca2d5e9..61784ece 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt @@ -68,30 +68,30 @@ class ConsumeController { @PostMapping("/ykt/payinit") fun yktPayInit(userid: String, amount: Int, manageFee: Int, - stuempno: String,shopid:String, transdate: String, transtime: String, + stuempno: String, shopid: String, transdate: String, transtime: String, outtradeno: String, payinfo: String): ResponseEntity { //一卡通支付款 112240 var person = personService.getPersonByThirdUniqueIdenty(stuempno) val dtl = PersonTransBuilder.newBuilder(accountUtilServcie) .setTransDatetime(transdate, transtime) + .selectPaytype(PaytypeUtil.YKTPAY, payinfo) + .setOuttradeno(outtradeno) + .setOwner(person) .addDetail(AccountHolder.subject("112240"), - AccountHolder.shop("12323"), + AccountHolder.shop(shopid), amount / 100.0, "") - .addDetail(AccountHolder.subject("112240"), AccountHolder.transType(301), - manageFee / 100.0, "") - .done(personBalancePayService,false) + .done(personBalancePayService, false) return ResponseEntity.ok(dtl) } @PostMapping("/ykt/payfinish") - fun yktPayFinish(refno: String,yktshopid: String): ResponseEntity { - //一卡通支付款 112240 + fun yktPayFinish(refno: String, yktshopid: String, devphyid: String?): ResponseEntity { val dtl = PersonTransBuilder.newBuilder(accountUtilServcie) .done(refno, TradeDict.DTL_STATUS_WIP, personBalancePayService) + var person = personService.getPersonByUserid(dtl.userid) val code = CallService.callYktPay(paytypeService.getPaytypeConfigByPaytype(PaytypeUtil.YKTPAY), - dtl, DateUtil.getNow()) + dtl, DateUtil.getNow(),person?.thirdUniqueIdenty,yktshopid,devphyid) return if (code.retcode == "0") { - //TODO update dtl val suc = PersonTransBuilder.newBuilder(accountUtilServcie) .done(dtl.refno, TradeDict.DTL_STATUS_SUCCESS, personBalancePayService) ResponseEntity.ok(suc) diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt index a5560589..8ce1108f 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/pay_service_impl.kt @@ -16,6 +16,7 @@ import com.supwisdom.dlpay.framework.domain.TTranstype import com.supwisdom.dlpay.framework.service.SystemUtilService import com.supwisdom.dlpay.framework.util.TradeDict import com.supwisdom.dlpay.framework.util.TradeErrorCode +import com.supwisdom.dlpay.framework.util.Tradetype import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import javax.persistence.EntityManager @@ -117,6 +118,10 @@ class PersonBalancePayServiceImpl : PersonBalancePayService { userdtl.transdate = builder.transDate userdtl.transtime = builder.transTime userdtl.userid = builder.person?.userid + userdtl.outtradeno = builder.outtradeno + userdtl.payinfo = builder.payinfo + userdtl.paytype = builder.paytype + userdtl.tradeflag = 2 userdtlDao.save(userdtl) return userdtl } @@ -130,7 +135,17 @@ class PersonBalancePayServiceImpl : PersonBalancePayService { } override fun finish(paydtl: TUserdtl, status: String, builder: PersonTransBuilder): TUserdtl { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + if(paydtl.status==TradeDict.DTL_STATUS_SUCCESS){ + return paydtl + } + paydtl.status = status + if(status==TradeDict.DTL_STATUS_SUCCESS){ + //TODO 更新商户余额,科目余额,账户支付的需要更新余额 + } + val systemtime = systemUtilService.sysdatetime + paydtl.endtime = systemtime.hostdatetime + userdtlDao.save(paydtl) + return paydtl } override fun finish(refno: String, status: String, builder: PersonTransBuilder): TUserdtl { diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt index e582c50d..d6e0cf5f 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/impl/person_service_impl.kt @@ -14,7 +14,11 @@ class PersonServiceImpl : PersonService { @Autowired lateinit var personDao: PersonDao - override fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String?): TPerson { + override fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson { return personDao.findByThirdUniqueIdenty(thirdUniqueIdenty) } + + override fun getPersonByUserid(userid: String): TPerson { + return personDao.getOne(userid) + } } \ No newline at end of file diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt index ce35e2c8..1efe1a8e 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/person_service.kt @@ -9,6 +9,9 @@ import org.springframework.transaction.annotation.Transactional */ interface PersonService { @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true) - fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String?): TPerson + fun getPersonByThirdUniqueIdenty(thirdUniqueIdenty: String): TPerson + + @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true) + fun getPersonByUserid(userid: String): TPerson } \ No newline at end of file -- 2.17.1