From: Tang Cheng Date: Wed, 19 Jun 2019 03:29:33 +0000 (+0800) Subject: 修改了商户余额计算模块,采用借贷明细统计 X-Git-Tag: 1.0.0^2~166 X-Git-Url: https://source.supwisdom.com/gerrit/gitweb?a=commitdiff_plain;h=b54be7c39c59f852c30f232d57574bcdd5df7cdd;p=epayment%2Ffood_payapi.git 修改了商户余额计算模块,采用借贷明细统计 --- diff --git a/src/main/java/com/supwisdom/dlpay/AppPreparedEvent.java b/src/main/java/com/supwisdom/dlpay/AppPreparedEvent.java index 77830294..304379c2 100644 --- a/src/main/java/com/supwisdom/dlpay/AppPreparedEvent.java +++ b/src/main/java/com/supwisdom/dlpay/AppPreparedEvent.java @@ -2,7 +2,6 @@ package com.supwisdom.dlpay; 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 35250115..cc1b9c75 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 @@ public class TAccount implements Serializable { 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 63b12811..c5bd5f4f 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 @@ public class TAccountDayBal implements Serializable { 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 576c089a..e1343d41 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.data.repository.query.Param; import org.springframework.stereotype.Repository; import javax.persistence.LockModeType; +import javax.persistence.SequenceGenerator; @Repository public interface TaskLockDao extends JpaRepository { 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 b7df8d22..fdb5d2f9 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 @@ public class TShopacc { 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 @@ public class TShopacc { 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 3ca5ef6e..51b2b0bb 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 @@ public class SystemUtilServiceImpl implements SystemUtilService { @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 @@ public class SystemUtilServiceImpl implements SystemUtilService { } @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 @@ public class SystemUtilServiceImpl implements SystemUtilService { } @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 2dec950f..0e6d6943 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 @@ class MySchedulerTask { 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 42e5974b..c65bc416 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.exception.TransactionProcessException 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 @@ class ShopaccServiceImpl : ShopaccService { @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 @@ class ShopaccServiceImpl : ShopaccService { 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) }