优化了交易余额统计接口
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
index d0572f2..01534ec 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
@@ -1,5 +1,7 @@
package com.supwisdom.dlpay.api.domain;
+import com.supwisdom.dlpay.framework.util.Subject;
+
import javax.persistence.*;
import java.sql.Timestamp;
@@ -252,7 +254,7 @@
}
public Double sumAmountByAccno(String accno, String subjno,
- int balanceFlag, String debitOrCredit) {
+ String debitOrCredit) {
Double debitSum = 0.0;
Double creditSum = 0.0;
for (TDebitCreditDtl dtl : getDetails()) {
@@ -263,6 +265,14 @@
creditSum += dtl.getAmount();
}
}
+ int balanceFlag = 2;
+ if (Subject.SUBJNO_MACHANT_INCOME.equals(subjno)) {
+ balanceFlag = 2;
+ } else if (Subject.SUBJNO_PERSONAL_DEPOSIT.equals(subjno)) {
+ balanceFlag = 2;
+ } else if (subjno.startsWith("1")) {
+ balanceFlag = 1;
+ }
if ("debit".equals(debitOrCredit)) {
if (balanceFlag == 2) {
return -debitSum;
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/account_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/account_service_impl.kt
index c65bc41..6e6ade4 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/account_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/account_service_impl.kt
@@ -126,7 +126,7 @@
return
}
val amount = transactionMainDao.findByRefno(refno)?.sumAmountByAccno(shopdtl.shopaccno,
- Subject.SUBJNO_MACHANT_INCOME, 2, "both")
+ Subject.SUBJNO_MACHANT_INCOME, "both")
?: throw TransactionProcessException(TradeErrorCode.TRANSACTION_NOT_EXISTS,
"交易参考号<$refno>不存在")
recalcShopBalance(shopdtl, amount, overdraft)
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
index a59a3f1..dccbf81 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
@@ -1,7 +1,6 @@
package com.supwisdom.dlpay.api.service.impl
import com.supwisdom.dlpay.api.TransactionBuilder
-import com.supwisdom.dlpay.api.dao.PersondtlDao
import com.supwisdom.dlpay.api.dao.TransactionMainDao
import com.supwisdom.dlpay.api.domain.*
import com.supwisdom.dlpay.api.repositories.AccountService
@@ -16,18 +15,11 @@
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Service
import java.sql.SQLException
-import java.sql.Timestamp
import kotlin.math.absoluteValue
@Service
class TransactionServiceImpl : TransactionService {
-
- companion object {
- const val PERSON_BALANCE_FLAG = 2
- const val SHOP_BALANCE_FLAG = 2
- }
-
@Autowired
private lateinit var transactionMainDao: TransactionMainDao
@@ -172,7 +164,7 @@
val dc = getDebitOrCredit(builder.person().tradeFlag)
transaction.sumAmountByAccno(builder.person().person.accno,
Subject.SUBJNO_PERSONAL_DEPOSIT,
- PERSON_BALANCE_FLAG, dc).also {
+ dc).also {
if (transaction.personDtl.amount != it) {
throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR,
"输入金额错误,个人余额不符<${transaction.personDtl.amount}>")
@@ -183,8 +175,7 @@
if (builder.hasShop()) {
val dc = getDebitOrCredit(builder.shop().tradeFlag)
transaction.sumAmountByAccno(builder.shop().shopacc.shopaccno,
- Subject.SUBJNO_MACHANT_INCOME,
- SHOP_BALANCE_FLAG, dc).also {
+ Subject.SUBJNO_MACHANT_INCOME, dc).also {
if (transaction.shopDtl.amount != it) {
throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR,
"输入金额错误,商户余额不符<${transaction.shopDtl.amount}>")
@@ -194,9 +185,7 @@
if (builder.hasSubject()) {
transaction.sumAmountByAccno(builder.subject().subject.subjno,
- builder.subject().subject.subjno,
- builder.subject().subject.balflag,
- "both").also {
+ builder.subject().subject.subjno, "both").also {
if (transaction.subjectDtl.amount != it) {
throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR,
"输入金额错误,科目余额不符<${transaction.subjectDtl.amount}>")
@@ -362,7 +351,7 @@
// update account balance
val amount = transaction.sumAmountByAccno(
transaction.personDtl.accountNo, Subject.SUBJNO_PERSONAL_DEPOSIT,
- PERSON_BALANCE_FLAG, "both")
+ "both")
if (amount.absoluteValue.compareTo(0.0) != 0) {
transaction.personDtl?.let {
transaction.personDtl.accdate = transaction.accdate