修改了商户余额计算模块,采用借贷明细统计
diff --git a/src/main/java/com/supwisdom/dlpay/AppPreparedEvent.java b/src/main/java/com/supwisdom/dlpay/AppPreparedEvent.java
index 7783029..304379c 100644
--- a/src/main/java/com/supwisdom/dlpay/AppPreparedEvent.java
+++ b/src/main/java/com/supwisdom/dlpay/AppPreparedEvent.java
@@ -2,7 +2,6 @@
import com.supwisdom.dlpay.system.common.DictPool;
import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.context.event.ApplicationPreparedEvent;
import org.springframework.boot.context.event.ApplicationReadyEvent;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.event.EventListener;
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java b/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java
index 3525011..cc1b9c7 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java
@@ -54,7 +54,7 @@
private Double maxbal; // 最大余额限制
@Version
- @Column(name = "LAST_TRANSTIME")
+ @Column(name = "LAST_TRANSTIME", nullable = false)
private Timestamp lasttranstime; //最后交易日期
@Column(name = "LASTDAY_TRANSAMT", precision = 9, scale = 2)
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TAccountDayBal.java b/src/main/java/com/supwisdom/dlpay/api/domain/TAccountDayBal.java
index 63b1281..c5bd5f4 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TAccountDayBal.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TAccountDayBal.java
@@ -20,7 +20,7 @@
private Double amount;
@Version
- @Column(name = "update_time")
+ @Column(name = "update_time", nullable = false)
private Timestamp updateTime;
@Column(name = "lastRefno", nullable = false, length = 32)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java
index 576c089..e1343d4 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/TaskLockDao.java
@@ -9,6 +9,7 @@
import org.springframework.stereotype.Repository;
import javax.persistence.LockModeType;
+import javax.persistence.SequenceGenerator;
@Repository
public interface TaskLockDao extends JpaRepository<TTaskLock, String> {
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TShopacc.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TShopacc.java
index b7df8d2..fdb5d2f 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TShopacc.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TShopacc.java
@@ -32,7 +32,7 @@
private Double balance = 0.0;
@Version
- @Column(name = "LASTUPDATE")
+ @Column(name = "LASTUPDATE", nullable = false)
private Timestamp lastUpdate = new Timestamp(System.currentTimeMillis());
@Column(name = "MAC")
@@ -115,4 +115,11 @@
this.lastUpdate = new Timestamp(System.currentTimeMillis());
}
+ public Timestamp getLastUpdate() {
+ return lastUpdate;
+ }
+
+ public void setLastUpdate(Timestamp lastUpdate) {
+ this.lastUpdate = lastUpdate;
+ }
}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java b/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
index 3ca5ef6..51b2b0b 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/service/impl/SystemUtilServiceImpl.java
@@ -146,29 +146,31 @@
@Override
public int getSysparaValueAsInt(int paraid, int defaultValue) {
TSyspara syspara = sysparaDao.findByParaid(paraid);
- if (null != syspara && NumberUtil.isNumber(syspara.getParaval())) return Integer.parseInt(syspara.getParaval());
+ if (null != syspara && NumberUtil.isNumber(syspara.getParaval()))
+ return Integer.parseInt(syspara.getParaval());
return defaultValue;
}
@Override
public double getSysparaValueAsDouble(int paraid, double defaultValue) {
TSyspara syspara = sysparaDao.findByParaid(paraid);
- if (null != syspara && NumberUtil.isDecimal(syspara.getParaval())) return Double.parseDouble(syspara.getParaval());
+ if (null != syspara && NumberUtil.isDecimal(syspara.getParaval()))
+ return Double.parseDouble(syspara.getParaval());
return defaultValue;
}
@Override
- public TSyspara getSyspara(int paraid){
+ public TSyspara getSyspara(int paraid) {
return sysparaDao.findByParaid(paraid);
}
@Override
- public TSyspara getSysparaValueForUpdate(int paraid){
+ public TSyspara getSysparaValueForUpdate(int paraid) {
return sysparaDao.findByParaidWithLock(paraid);
}
@Override
- public TSyspara getSysparaValueForUpdateNowait(int paraid){
+ public TSyspara getSysparaValueForUpdateNowait(int paraid) {
return sysparaDao.findByParaidWithLockNowait(paraid);
}
@@ -195,7 +197,7 @@
}
@Override
- public TBusinesspara getBusinessValueForUpdate(String parakey){
+ public TBusinesspara getBusinessValueForUpdate(String parakey) {
if (!StringUtil.isEmpty(parakey)) return businessparaDao.findByParakeyForUpdate(parakey.trim());
return null;
}
@@ -207,7 +209,7 @@
}
@Override
- public String getSubsystemSignKey(String syscode){
+ public String getSubsystemSignKey(String syscode) {
// fixme: 验证数据无误性签名秘钥
return "";
}
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/account_process_async.kt b/src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt
similarity index 100%
rename from src/main/kotlin/com/supwisdom/dlpay/api/account_process_async.kt
rename to src/main/kotlin/com/supwisdom/dlpay/api/async_tasks.kt
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt b/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt
index 2dec950..0e6d694 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/scheduler_task.kt
@@ -15,7 +15,7 @@
shopaccService.recalcShopBalance(dtl.refno, true)
}
- @Scheduled(cron = "\${jobs.cronSchedule:-}")
+ @Scheduled(cron = "\${shopbalance.updater.cron:-}")
fun dealShopUnupdatedDtl() {
shopaccService.findUnupdatedShopDtl(100).forEach {
doShopBlanceUpdate(it)
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 42e5974..c65bc41 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
@@ -1,5 +1,7 @@
package com.supwisdom.dlpay.api.service.impl
+import com.supwisdom.dlpay.api.dao.DebitCreditDtlDao
+import com.supwisdom.dlpay.api.dao.TransactionMainDao
import com.supwisdom.dlpay.api.domain.*
import com.supwisdom.dlpay.api.repositories.AccountService
import com.supwisdom.dlpay.api.repositories.ShopaccService
@@ -7,9 +9,12 @@
import com.supwisdom.dlpay.framework.domain.TShopacc
import com.supwisdom.dlpay.framework.service.SystemUtilService
import com.supwisdom.dlpay.framework.util.DateUtil
+import com.supwisdom.dlpay.framework.util.Subject
+import com.supwisdom.dlpay.framework.util.TradeDict
import com.supwisdom.dlpay.framework.util.TradeDict.DTL_STATUS_SUCCESS
import com.supwisdom.dlpay.framework.util.TradeDict.TRADE_FLAG_OUT
import com.supwisdom.dlpay.framework.util.TradeErrorCode
+import org.hibernate.Transaction
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.stereotype.Repository
import org.springframework.stereotype.Service
@@ -97,6 +102,9 @@
@Autowired
private lateinit var systemUtilService: SystemUtilService
+ @Autowired
+ private lateinit var transactionMainDao: TransactionMainDao
+
override fun recalcShopBalance(dtl: TShopdtl, amount: Double, overdraft: Boolean) {
val shopacc = entityManager.find(TShopacc::class.java, dtl.shopaccno, LockModeType.OPTIMISTIC)
?: throw TransactionProcessException(TradeErrorCode.ACCOUNT_NOT_EXISTS,
@@ -117,7 +125,11 @@
if (shopdtl.updateBala) {
return
}
- recalcShopBalance(shopdtl, shopdtl.amount, overdraft)
+ val amount = transactionMainDao.findByRefno(refno)?.sumAmountByAccno(shopdtl.shopaccno,
+ Subject.SUBJNO_MACHANT_INCOME, 2, "both")
+ ?: throw TransactionProcessException(TradeErrorCode.TRANSACTION_NOT_EXISTS,
+ "交易参考号<$refno>不存在")
+ recalcShopBalance(shopdtl, amount, overdraft)
shopdtl.updateBala = true
entityManager.persist(shopdtl)
}