From: Tang Cheng Date: Thu, 11 Apr 2019 02:58:31 +0000 (+0800) Subject: 设计记账模块接口,未实现接口细节 X-Git-Tag: 1.0.0^2~315 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=750950ffc1dfbc903d6aa24a9193a8f3bdd322ee;p=epayment%2Ffood_payapi.git 设计记账模块接口,未实现接口细节 --- diff --git a/src/main/java/com/supwisdom/dlpay/exception/TransactionCheckError.java b/src/main/java/com/supwisdom/dlpay/exception/TransactionCheckError.java deleted file mode 100644 index e834318b..00000000 --- a/src/main/java/com/supwisdom/dlpay/exception/TransactionCheckError.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.supwisdom.dlpay.exception; - -public class TransactionCheckError extends TransactionError { - public TransactionCheckError(int code, String message) { - super(code, String.format("C - %d, %s", code, message)); - } -} diff --git a/src/main/java/com/supwisdom/dlpay/exception/TransactionCheckException.java b/src/main/java/com/supwisdom/dlpay/exception/TransactionCheckException.java new file mode 100644 index 00000000..87b9ad1f --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/exception/TransactionCheckException.java @@ -0,0 +1,7 @@ +package com.supwisdom.dlpay.exception; + +public class TransactionCheckException extends TransactionException { + public TransactionCheckException(int code, String message) { + super(code, String.format("C - %d, %s", code, message)); + } +} diff --git a/src/main/java/com/supwisdom/dlpay/exception/TransactionError.java b/src/main/java/com/supwisdom/dlpay/exception/TransactionException.java similarity index 59% rename from src/main/java/com/supwisdom/dlpay/exception/TransactionError.java rename to src/main/java/com/supwisdom/dlpay/exception/TransactionException.java index fb247c57..e84657e7 100644 --- a/src/main/java/com/supwisdom/dlpay/exception/TransactionError.java +++ b/src/main/java/com/supwisdom/dlpay/exception/TransactionException.java @@ -1,9 +1,9 @@ package com.supwisdom.dlpay.exception; -public class TransactionError extends Error { +public class TransactionException extends Exception { private int errCode; - public TransactionError(int code, String message) { + public TransactionException(int code, String message) { super(message); errCode = code; } diff --git a/src/main/java/com/supwisdom/dlpay/exception/TransactionProcessError.java b/src/main/java/com/supwisdom/dlpay/exception/TransactionProcessError.java deleted file mode 100644 index 44b9d808..00000000 --- a/src/main/java/com/supwisdom/dlpay/exception/TransactionProcessError.java +++ /dev/null @@ -1,7 +0,0 @@ -package com.supwisdom.dlpay.exception; - -public class TransactionProcessError extends TransactionError { - public TransactionProcessError(int errCode, String message) { - super(errCode, String.format("E-%d : %s", errCode, message)); - } -} diff --git a/src/main/java/com/supwisdom/dlpay/exception/TransactionProcessException.java b/src/main/java/com/supwisdom/dlpay/exception/TransactionProcessException.java new file mode 100644 index 00000000..aac9273e --- /dev/null +++ b/src/main/java/com/supwisdom/dlpay/exception/TransactionProcessException.java @@ -0,0 +1,7 @@ +package com.supwisdom.dlpay.exception; + +public class TransactionProcessException extends TransactionException { + public TransactionProcessException(int errCode, String message) { + super(errCode, String.format("E-%d : %s", errCode, message)); + } +} 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 b5c73a4c..cb10e5fa 100644 --- a/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/comsume_builder.kt @@ -3,35 +3,75 @@ package com.supwisdom.dlpay.consume import com.supwisdom.dlpay.consume.domain.TAccount 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.TransactionCheckError -import com.supwisdom.dlpay.exception.TransactionProcessError -import com.supwisdom.dlpay.framework.util.TradeErrorCode +import com.supwisdom.dlpay.framework.domain.TShopacc +import com.supwisdom.dlpay.framework.domain.TSubject +import com.supwisdom.dlpay.framework.domain.TTranstype -class PersonTransBuilder private constructor() { +class AccountHolder private constructor(val accountId: String, val idType: Int) { companion object { - fun newBuilder() = PersonTransBuilder() + const val IDTYPE_ACCOUNT = 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) + } + + fun shop(shopid: String): AccountHolder { + return AccountHolder(shopid, IDTYPE_SHOP) + } + + fun subject(subjNo: String): AccountHolder { + return AccountHolder(subjNo, IDTYPE_SUBJECT) + } + + fun transType(transType: Int): AccountHolder { + return AccountHolder("$transType", IDTYPE_TRANSTYPE) + } + } + + internal lateinit var build: PersonTransBuilder + + fun get(): T { + TODO("add rule") + } + + fun withLock(nowait: Boolean): T { + TODO("not implement") + } +} + +class PersonTransBuilder private constructor(accUitl: AccountUtilServcie) { + companion object { + fun newBuilder(accUitl: AccountUtilServcie) = PersonTransBuilder(accUitl) } - inner class TransDetail(val accNo: String, val amount: Double, - val summary: String, val rowno: Int) + inner class TransDetail(val debitAccNo: String, val creditAccNo: String, + val amount: Double, val summary: String, + val rowno: Int) + // 输入参数,调用接口时指定的参数值 lateinit var person: TPerson - lateinit var account: TAccount var transDate = "" var transTime = "" - var description = "" - var amount: Double = 0.0 - val details = mutableListOf() /** * 是否允许透支 */ var overdraft = false + var description = "" + + // 内部参数,不需要调用者处理 + val details = mutableListOf() + var amount: Double = 0.0 + lateinit var accountUtil: AccountUtilServcie - fun setUserAndAcc(per: TPerson, acc: TAccount) { + + fun setUserAndAcc(per: TPerson) { this.person = per - this.account = acc } fun enableOverdraft(b: Boolean = false): PersonTransBuilder { @@ -51,16 +91,17 @@ class PersonTransBuilder private constructor() { } private fun preCheckAccount() { - // 判断个人账户 - if (this.account.subjno == "2001") { - if(amount > this.account.balance) { - throw TransactionCheckError(TradeErrorCode.SHORT_BALANCE_ERROR, "个人账户余额不足") - } - } } - fun addDetail(accNo: String, amount: Double, summary: String): PersonTransBuilder { - this.details.add(TransDetail(accNo, amount, summary, this.details.size + 1)) + 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 { 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 new file mode 100644 index 00000000..01a143a6 --- /dev/null +++ b/src/main/kotlin/com/supwisdom/dlpay/consume/controller/consume_service.kt @@ -0,0 +1,56 @@ +package com.supwisdom.dlpay.consume.controller + +import com.supwisdom.dlpay.consume.AccountHolder +import com.supwisdom.dlpay.consume.PersonTransBuilder +import com.supwisdom.dlpay.consume.service.AccountUtilServcie +import com.supwisdom.dlpay.consume.service.PersonBalancePayService +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.RestController + +@RestController +class ConsumeController { + @Autowired + lateinit var accountUtilServcie: AccountUtilServcie + + @Autowired + lateinit var personBalancePayService: PersonBalancePayService + + @GetMapping("/account/pay") + fun accountPay(userid: String, amount: Int, manageFee: Int): ResponseEntity { + val dtl = PersonTransBuilder.newBuilder(accountUtilServcie) + .setTransDatetime("20190411", "112311") + .enableOverdraft(false) + .addDetail(AccountHolder.person(userid), + AccountHolder.shop("12323"), + amount / 100.0, "") + .addDetail(AccountHolder.person(userid), AccountHolder.transType(301), + manageFee / 100.0, "") + .done(personBalancePayService, true) + return ResponseEntity.ok(dtl) + } + + @GetMapping("/account/payinit") + fun accountPayInit(userid: String, amount: Int, manageFee: Int): ResponseEntity { + val dtl = PersonTransBuilder.newBuilder(accountUtilServcie) + .setTransDatetime("20190411", "112311") + .enableOverdraft(false) + .addDetail(AccountHolder.person(userid), + AccountHolder.shop("12323"), + amount / 100.0, "") + .addDetail(AccountHolder.person(userid), AccountHolder.transType(301), + manageFee / 100.0, "") + .done(personBalancePayService, false) + + return ResponseEntity.ok(dtl) + } + + @GetMapping("/account/payfinish") + fun accountPayFinish(refno: String): ResponseEntity { + val dtl = PersonTransBuilder.newBuilder(accountUtilServcie) + .done(refno, TradeDict.DTL_STATUS_SUCCESS, personBalancePayService) + return ResponseEntity.ok(dtl) + } +} \ No newline at end of file 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 eaec2293..155f9fd7 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 @@ -4,15 +4,38 @@ import com.supwisdom.dlpay.consume.PersonTransBuilder import com.supwisdom.dlpay.consume.dao.AccountDao import com.supwisdom.dlpay.consume.domain.TAccount import com.supwisdom.dlpay.consume.domain.TPaydtl +import com.supwisdom.dlpay.consume.service.AccountUtilServcie import com.supwisdom.dlpay.consume.service.PersonBalancePayService -import com.supwisdom.dlpay.exception.TransactionProcessError +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.util.TradeErrorCode import org.springframework.beans.factory.annotation.Autowired import org.springframework.stereotype.Service import javax.persistence.EntityManager import javax.persistence.PersistenceContext + +@Service +class AccountUtilServcieImpl : AccountUtilServcie { + + override fun readAccountForUpdate(userid: String, nowait: Boolean): TAccount { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun readAccount(userid: String): TAccount { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun readShopAccForUpdate(shopId: String, nowait: Boolean): TShopacc { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun readShopAcc(shopId: String): TShopacc { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } +} + @Service class PersonBalancePayServiceImpl : PersonBalancePayService { @Autowired @@ -22,10 +45,10 @@ class PersonBalancePayServiceImpl : PersonBalancePayService { lateinit var accountDao: AccountDao @PersistenceContext - lateinit var em : EntityManager + lateinit var em: EntityManager private fun lockAccount(builder: PersonTransBuilder): TAccount { - return accountDao.getByAccnoForUpdate(builder.account.accno) + TODO("") } override fun process(builder: PersonTransBuilder): TPaydtl { @@ -53,7 +76,7 @@ class PersonBalancePayServiceImpl : PersonBalancePayService { if (it.isPresent) { return finish(it.get(), status, builder) } - throw TransactionProcessError(TradeErrorCode.TRANSACTION_NOT_EXISTS, "交易参考号<$refno>不存在") + throw TransactionProcessException(TradeErrorCode.TRANSACTION_NOT_EXISTS, "交易参考号<$refno>不存在") } } 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 8d631aaf..66d3b37f 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 @@ -1,7 +1,18 @@ package com.supwisdom.dlpay.consume.service 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 + +interface AccountUtilServcie { + + fun readAccountForUpdate(userid: String, nowait: Boolean): TAccount + fun readAccount(userid: String): TAccount + + fun readShopAccForUpdate(shopId: String, nowait: Boolean): TShopacc + fun readShopAcc(shopId: String): TShopacc +} interface PersonBalancePayService {