package com.supwisdom.dlpay.api.domain;
+import com.supwisdom.dlpay.framework.util.Subject;
+
import javax.persistence.*;
import java.sql.Timestamp;
}
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()) {
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;
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
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
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}>")
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}>")
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}>")
// 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