增加修改用户入账金额校验
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java b/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
index 8289e96..895263b 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/UserDataService.java
@@ -54,7 +54,7 @@
TPersonIdentity updateCoamount(String thirdUid,Double amount);
@Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
- TPersonIdentity updateAccamount(String thirdUid,Double amount);
+ TPersonIdentity updateAccamount(String thirdUid,Double amount,String billno);
@Transactional(rollbackFor = Exception.class, readOnly = true)
PageResult<UserAccountDTO> queryUserAccByParam(UserAccountSearchBean param);
diff --git a/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java b/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
index b70140a..51177e4 100644
--- a/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
+++ b/src/main/java/com/supwisdom/dlpay/system/service/impl/UserDataServiceImpl.java
@@ -16,7 +16,9 @@
import com.supwisdom.dlpay.system.bean.PersonParamBean;
import com.supwisdom.dlpay.system.service.UserDataService;
import com.supwisdom.dlpay.water.bean.UserAccountSearchBean;
+import com.supwisdom.dlpay.water.domain.TAccdtl;
import com.supwisdom.dlpay.water.pojo.UserAccountDTO;
+import com.supwisdom.dlpay.water.service.AccdtlService;
import org.hibernate.query.internal.NativeQueryImpl;
import org.hibernate.transform.Transformers;
import org.springframework.beans.factory.annotation.Autowired;
@@ -45,6 +47,8 @@
private SystemUtilService systemUtilService;
@Autowired
private PersonIdentityDao personIdentityDao;
+ @Autowired
+ private AccdtlService accdtlService;
@PersistenceContext
private EntityManager em;
@@ -215,12 +219,20 @@
}
@Override
- public TPersonIdentity updateAccamount(String thirdUid, Double amount) {
+ public TPersonIdentity updateAccamount(String thirdUid, Double amount,String billno) {
TPersonIdentity personIdentity = personIdentityDao.getByThirdUid(thirdUid);
if (null == personIdentity) {
throw new RuntimeException("未找到用户id为" + thirdUid + "的用户");
}
- personIdentity.setAccamount(personIdentity.getAccamount() == null ? amount : add(personIdentity.getAccamount(),amount));
+ TAccdtl accdtl = accdtlService.findByBillno(billno);
+ if (null == accdtl) {
+ throw new RuntimeException("未找到billno为" + billno + "的入账流水");
+ }
+ if (accdtl.getUpdatedacc()==null||!accdtl.getUpdatedacc()) {
+ personIdentity.setAccamount(personIdentity.getAccamount() == null ? amount : add(personIdentity.getAccamount(),amount));
+ accdtl.setUpdatedacc(true);
+ accdtlService.saveAccdtl(accdtl);
+ }
personIdentityDao.save(personIdentity);
return personIdentity;
}
diff --git a/src/main/java/com/supwisdom/dlpay/water/domain/TAccdtl.java b/src/main/java/com/supwisdom/dlpay/water/domain/TAccdtl.java
index d459b5e..32c26d2 100644
--- a/src/main/java/com/supwisdom/dlpay/water/domain/TAccdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/water/domain/TAccdtl.java
@@ -56,6 +56,12 @@
@Column(name = "refno", length = 32)
private String refno;
+ /**
+ * 是否已更新用户入账金额
+ */
+ @Column(name = "updatedacc")
+ private Boolean updatedacc;
+
public String getRefno() {
return refno;
@@ -168,4 +174,12 @@
public void setActualamount(Double actualamount) {
this.actualamount = actualamount;
}
+
+ public Boolean getUpdatedacc() {
+ return updatedacc;
+ }
+
+ public void setUpdatedacc(Boolean updatedacc) {
+ this.updatedacc = updatedacc;
+ }
}
\ No newline at end of file
diff --git a/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java b/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java
index b7e121a..8d00a27 100644
--- a/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java
+++ b/src/main/java/com/supwisdom/dlpay/water/pay/WaterPayAsyncTask.java
@@ -127,7 +127,7 @@
payConfirm(accdtl);
} else if (TradeDict.DTL_STATUS_SUCCESS.equals(queryResult.getStatus())) {
// 查询得到状态为success,记录下状态
- userDataService.updateAccamount(accdtl.getCitizenCardno(), accdtl.getActualamount());
+ userDataService.updateAccamount(accdtl.getCitizenCardno(), accdtl.getActualamount(),accdtl.getBillno());
cofirmAcc(queryResult.getStatus(), accdtl.getBillno(), accdtl.getRefno());
} else if (TradeDict.DTL_STATUS_FAIL.equals(queryResult.getStatus())) {
cofirmAcc(queryResult.getStatus(), accdtl.getBillno(), accdtl.getRefno());
@@ -205,7 +205,7 @@
if (finishRetcode == 0) {
accStatus = TradeDict.DTL_STATUS_SUCCESS;
// 更新用户已入账金额
- userDataService.updateAccamount(initAccdtl.getCitizenCardno(), initAccdtl.getActualamount());
+ userDataService.updateAccamount(initAccdtl.getCitizenCardno(), initAccdtl.getActualamount(),initAccdtl.getBillno());
} else if (finishRetcode == TradeErrorCode.WAIT_QUERY_RESULT) {
QueryDtlResultParam queryParam = new QueryDtlResultParam();
queryParam.setRefno(payFinish.getRefno());
@@ -214,7 +214,7 @@
accStatus = queryResult.getStatus();
if (TradeDict.DTL_STATUS_SUCCESS.equals(accStatus)) {
accStatus = TradeDict.DTL_STATUS_SUCCESS;
- userDataService.updateAccamount(initAccdtl.getCitizenCardno(), initAccdtl.getActualamount());
+ userDataService.updateAccamount(initAccdtl.getCitizenCardno(), initAccdtl.getActualamount(),initAccdtl.getBillno());
}
} else {
accStatus = TradeDict.DTL_STATUS_WIP;