From: Tang Cheng Date: Thu, 11 Apr 2019 04:21:03 +0000 (+0800) Subject: 增加 AccountHolder 处理逻辑 X-Git-Tag: 1.0.0^2~314 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=1e192ab7a4525f721f8c319b7ce349f0116edab5;p=epayment%2Ffood_payapi.git 增加 AccountHolder 处理逻辑 --- 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 cb10e5fa..27b72ffe 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt @@ -5,19 +5,21 @@ import com.supwisdom.dlpay.consume.domain.TPaydtl import com.supwisdom.dlpay.consume.domain.TPerson import com.supwisdom.dlpay.consume.service.AccountUtilServcie import com.supwisdom.dlpay.consume.service.PersonBalancePayService +import com.supwisdom.dlpay.exception.TransactionCheckException import com.supwisdom.dlpay.framework.domain.TShopacc import com.supwisdom.dlpay.framework.domain.TSubject import com.supwisdom.dlpay.framework.domain.TTranstype +import com.supwisdom.dlpay.framework.util.TradeErrorCode -class AccountHolder private constructor(val accountId: String, val idType: Int) { +class AccountHolder private constructor(val accountId: String, val idType: Int) { companion object { - const val IDTYPE_ACCOUNT = 1 + const val IDTYPE_PERSON = 1 const val IDTYPE_SHOP = 2 const val IDTYPE_SUBJECT = 3 const val IDTYPE_TRANSTYPE = 4 fun person(userid: String): AccountHolder { - return AccountHolder(userid, IDTYPE_ACCOUNT) + return AccountHolder(userid, IDTYPE_PERSON) } fun shop(shopid: String): AccountHolder { @@ -33,10 +35,17 @@ class AccountHolder private constructor(val accountId: String, val idType } } - internal lateinit var build: PersonTransBuilder - - fun get(): T { - TODO("add rule") + private lateinit var builder: PersonTransBuilder + + @Suppress("UNCHECKED_CAST", "IMPLICIT_CAST_TO_ANY") + fun get(): T { + return when (idType) { + IDTYPE_PERSON -> builder.accountUtil.readAccount(accountId) + IDTYPE_SHOP -> builder.accountUtil.readShopAcc(accountId) + IDTYPE_SUBJECT -> builder.accountUtil.readSubject(accountId) + IDTYPE_TRANSTYPE -> builder.accountUtil.readTranstype(accountId.toInt()) + else -> throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR, "账户类型未知type<$idType>") + } as T } fun withLock(nowait: Boolean): T { @@ -49,7 +58,8 @@ class PersonTransBuilder private constructor(accUitl: AccountUtilServcie) { fun newBuilder(accUitl: AccountUtilServcie) = PersonTransBuilder(accUitl) } - inner class TransDetail(val debitAccNo: String, val creditAccNo: String, + inner class TransDetail(val debitAccNo: String, val debitSubjNo: String, + val creditAccNo: String, val creditSubjNo: String, val amount: Double, val summary: String, val rowno: Int) @@ -93,15 +103,47 @@ class PersonTransBuilder private constructor(accUitl: AccountUtilServcie) { private fun preCheckAccount() { } - fun addDetail(debitAccNo: String, creditAccNo: String, - amount: Double, summary: String): PersonTransBuilder { - this.details.add(TransDetail(debitAccNo, creditAccNo, amount, - summary, this.details.size + 1)) - return this - } - fun addDetail(debit: AccountHolder, credit: AccountHolder, amount: Double, summary: String): PersonTransBuilder { + var debitAccNo = "" + var debitSubjNo = "" + when (debit.idType) { + AccountHolder.IDTYPE_PERSON -> debit.get().also { + debitAccNo = it.accno + debitSubjNo = it.subjno + } + AccountHolder.IDTYPE_SHOP -> debit.get().also { + debitAccNo = it.shopaccno + debitSubjNo = it.subjno + } + AccountHolder.IDTYPE_SUBJECT -> debit.get().also { + debitAccNo = it.subjno + debitSubjNo = it.subjno + } + AccountHolder.IDTYPE_TRANSTYPE -> TODO("not implements") + } + + + var creditAccNo = "" + var creditSubjNo = "" + when (credit.idType) { + AccountHolder.IDTYPE_PERSON -> credit.get().also { + creditAccNo = it.accno + creditSubjNo = it.subjno + } + AccountHolder.IDTYPE_SHOP -> credit.get().also { + creditAccNo = it.shopaccno + creditSubjNo = it.subjno + } + AccountHolder.IDTYPE_SUBJECT -> credit.get().also { + creditAccNo = it.subjno + creditSubjNo = it.subjno + } + AccountHolder.IDTYPE_TRANSTYPE -> TODO("not implements") + } + + this.details.add(TransDetail(debitAccNo, debitSubjNo, creditAccNo, creditSubjNo, + amount, summary, this.details.size + 1)) return this } 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 01a143a6..7276c022 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 @@ -8,6 +8,7 @@ import com.supwisdom.dlpay.framework.util.TradeDict import org.springframework.beans.factory.annotation.Autowired import org.springframework.http.ResponseEntity import org.springframework.web.bind.annotation.GetMapping +import org.springframework.web.bind.annotation.PostMapping import org.springframework.web.bind.annotation.RestController @RestController @@ -18,7 +19,7 @@ class ConsumeController { @Autowired lateinit var personBalancePayService: PersonBalancePayService - @GetMapping("/account/pay") + @PostMapping("/account/pay") fun accountPay(userid: String, amount: Int, manageFee: Int): ResponseEntity { val dtl = PersonTransBuilder.newBuilder(accountUtilServcie) .setTransDatetime("20190411", "112311") 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 155f9fd7..c77c2d58 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 @@ -9,6 +9,8 @@ import com.supwisdom.dlpay.consume.service.PersonBalancePayService import com.supwisdom.dlpay.exception.TransactionProcessException import com.supwisdom.dlpay.framework.dao.PaydtlDao import com.supwisdom.dlpay.framework.domain.TShopacc +import com.supwisdom.dlpay.framework.domain.TSubject +import com.supwisdom.dlpay.framework.domain.TTranstype import com.supwisdom.dlpay.framework.util.TradeErrorCode import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service @@ -34,6 +36,18 @@ class AccountUtilServcieImpl : AccountUtilServcie { override fun readShopAcc(shopId: String): TShopacc { TODO("not implemented") //To change body of created functions use File | Settings | File Templates. } + + override fun readSubjectForUpdate(subjno: String, nowait: Boolean): TSubject { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun readSubject(subjno: String): TSubject { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun readTranstype(transtype: Int): TTranstype { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } } @Service diff --git a/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt b/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt index 66d3b37f..8897569c 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/service/pay_service.kt @@ -4,6 +4,8 @@ import com.supwisdom.dlpay.consume.PersonTransBuilder import com.supwisdom.dlpay.consume.domain.TAccount import com.supwisdom.dlpay.consume.domain.TPaydtl import com.supwisdom.dlpay.framework.domain.TShopacc +import com.supwisdom.dlpay.framework.domain.TSubject +import com.supwisdom.dlpay.framework.domain.TTranstype interface AccountUtilServcie { @@ -12,6 +14,11 @@ interface AccountUtilServcie { fun readShopAccForUpdate(shopId: String, nowait: Boolean): TShopacc fun readShopAcc(shopId: String): TShopacc + + fun readSubjectForUpdate(subjno: String, nowait: Boolean): TSubject + fun readSubject(subjno: String): TSubject + + fun readTranstype(transtype: Int) : TTranstype } interface PersonBalancePayService {