From 1e192ab7a4525f721f8c319b7ce349f0116edab5 Mon Sep 17 00:00:00 2001 From: Tang Cheng Date: Thu, 11 Apr 2019 12:21:03 +0800 Subject: [PATCH] =?utf8?q?=E5=A2=9E=E5=8A=A0=20AccountHolder=20=E5=A4=84?= =?utf8?q?=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- .../dlpay/consume/comsume_builder.kt | 72 +++++++++++++++---- .../consume/controller/consume_service.kt | 3 +- .../consume/service/impl/pay_service_impl.kt | 14 ++++ .../dlpay/consume/service/pay_service.kt | 7 ++ 4 files changed, 80 insertions(+), 16 deletions(-) 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 { -- 2.17.1