增加 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 cb10e5f..27b72ff 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.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<out T> private constructor(val accountId: String, val idType: Int) {
+class AccountHolder<T> 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<TAccount> {
- return AccountHolder<TAccount>(userid, IDTYPE_ACCOUNT)
+ return AccountHolder<TAccount>(userid, IDTYPE_PERSON)
}
fun shop(shopid: String): AccountHolder<TShopacc> {
@@ -33,10 +35,17 @@
}
}
- internal lateinit var build: PersonTransBuilder
+ private lateinit var builder: PersonTransBuilder
- fun get(): T {
- TODO("add rule")
+ @Suppress("UNCHECKED_CAST", "IMPLICIT_CAST_TO_ANY")
+ fun <T> 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 @@
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 @@
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 <T, U> addDetail(debit: AccountHolder<T>, credit: AccountHolder<U>,
amount: Double, summary: String): PersonTransBuilder {
+ var debitAccNo = ""
+ var debitSubjNo = ""
+ when (debit.idType) {
+ AccountHolder.IDTYPE_PERSON -> debit.get<TAccount>().also {
+ debitAccNo = it.accno
+ debitSubjNo = it.subjno
+ }
+ AccountHolder.IDTYPE_SHOP -> debit.get<TShopacc>().also {
+ debitAccNo = it.shopaccno
+ debitSubjNo = it.subjno
+ }
+ AccountHolder.IDTYPE_SUBJECT -> debit.get<TSubject>().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<TAccount>().also {
+ creditAccNo = it.accno
+ creditSubjNo = it.subjno
+ }
+ AccountHolder.IDTYPE_SHOP -> credit.get<TShopacc>().also {
+ creditAccNo = it.shopaccno
+ creditSubjNo = it.subjno
+ }
+ AccountHolder.IDTYPE_SUBJECT -> credit.get<TSubject>().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 01a143a..7276c02 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 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 @@
@Autowired
lateinit var personBalancePayService: PersonBalancePayService
- @GetMapping("/account/pay")
+ @PostMapping("/account/pay")
fun accountPay(userid: String, amount: Int, manageFee: Int): ResponseEntity<Any> {
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 155f9fd..c77c2d5 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.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 @@
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 66d3b37..8897569 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.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 @@
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 {