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;
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)
private Double amount;
@Version
- @Column(name = "update_time")
+ @Column(name = "update_time", nullable = false)
private Timestamp updateTime;
@Column(name = "lastRefno", nullable = false, length = 32)
import org.springframework.stereotype.Repository;
import javax.persistence.LockModeType;
+import javax.persistence.SequenceGenerator;
@Repository
public interface TaskLockDao extends JpaRepository<TTaskLock, String> {
private Double balance = 0.0;
@Version
- @Column(name = "LASTUPDATE")
+ @Column(name = "LASTUPDATE", nullable = false)
private Timestamp lastUpdate = new Timestamp(System.currentTimeMillis());
@Column(name = "MAC")
this.lastUpdate = new Timestamp(System.currentTimeMillis());
}
+ public Timestamp getLastUpdate() {
+ return lastUpdate;
+ }
+
+ public void setLastUpdate(Timestamp lastUpdate) {
+ this.lastUpdate = lastUpdate;
+ }
}
@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);
}
}
@Override
- public TBusinesspara getBusinessValueForUpdate(String parakey){
+ public TBusinesspara getBusinessValueForUpdate(String parakey) {
if (!StringUtil.isEmpty(parakey)) return businessparaDao.findByParakeyForUpdate(parakey.trim());
return null;
}
}
@Override
- public String getSubsystemSignKey(String syscode){
+ public String getSubsystemSignKey(String syscode) {
// fixme: 验证数据无误性签名秘钥
return "";
}
shopaccService.recalcShopBalance(dtl.refno, true)
}
- @Scheduled(cron = "\${jobs.cronSchedule:-}")
+ @Scheduled(cron = "\${shopbalance.updater.cron:-}")
fun dealShopUnupdatedDtl() {
shopaccService.findUnupdatedShopDtl(100).forEach {
doShopBlanceUpdate(it)
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
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
@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,
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)
}