|
@@ -14,6 +14,7 @@ import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Propagation;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
import java.math.BigDecimal;
|
|
|
import java.util.ArrayList;
|
|
@@ -76,7 +77,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
|
|
|
updateBillRecord(refundRequestRecordDO,currentUser);
|
|
|
|
|
|
//2. 更新退款记录
|
|
|
- processRefund(refundRequestRecordDO, currentUser,REFUNDSUCCESSFUL);
|
|
|
+ processRefundSuccess(refundRequestRecordDO, currentUser,REFUNDSUCCESSFUL);
|
|
|
|
|
|
// 已缴账单记录表更新
|
|
|
migratePaidBillsToUnpaid(refundRequestRecordDO);
|
|
@@ -86,7 +87,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
|
|
|
|
|
|
}catch (Exception e){
|
|
|
//退款失败
|
|
|
- processRefund(refundRequestRecordDO, currentUser,REFUNDFAILED);
|
|
|
+ processRefundFailed(refundRequestRecordDO, currentUser,REFUNDFAILED);
|
|
|
log.error("退款申请失败 {}",e.getMessage());
|
|
|
return R.error("退款申请失败!");
|
|
|
}
|
|
@@ -94,7 +95,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
|
|
|
return R.ok();
|
|
|
}
|
|
|
|
|
|
- private void processRefund(SwRefundRequestRecordDO refundRequestRecordDO, SysUserVo currentUser, String refundstatus) {
|
|
|
+ private void processRefundSuccess(SwRefundRequestRecordDO refundRequestRecordDO, SysUserVo currentUser, String refundstatus) {
|
|
|
// 退款记录表更新 实退金额 退款操作人,操作时间
|
|
|
swRefundRequestRecordService.update(new LambdaUpdateWrapper<SwRefundRequestRecordDO>()
|
|
|
.eq(SwRefundRequestRecordDO::getId, refundRequestRecordDO.getId())
|
|
@@ -106,6 +107,20 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
|
|
|
);
|
|
|
}
|
|
|
|
|
|
+ @Transactional(propagation = Propagation.REQUIRES_NEW)
|
|
|
+ public void processRefundFailed(SwRefundRequestRecordDO refundRequestRecordDO, SysUserVo currentUser, String refundstatus) {
|
|
|
+ // 退款记录表更新 实退金额 退款操作人,操作时间
|
|
|
+ swRefundRequestRecordService.update(new LambdaUpdateWrapper<SwRefundRequestRecordDO>()
|
|
|
+ .eq(SwRefundRequestRecordDO::getId, refundRequestRecordDO.getId())
|
|
|
+ .set(SwRefundRequestRecordDO::getActualretirement, refundRequestRecordDO.getRefundamount())
|
|
|
+ .set(SwRefundRequestRecordDO::getRefundstatus, refundstatus)
|
|
|
+ .set(SwRefundRequestRecordDO::getRefundoperatorid, currentUser.getId())
|
|
|
+ .set(SwRefundRequestRecordDO::getRefundoperatorname, currentUser.getName())
|
|
|
+ .set(SwRefundRequestRecordDO::getRefundtime,new Date())
|
|
|
+ );
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
/**
|
|
|
* 更新用户表月
|
|
|
* @param refundRequestRecordDO
|
|
@@ -117,7 +132,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 全额 用户表更新:系统需要 将 对应用户信息中的【余额】进行更新,余额 = 当前用户余额 + 【余额抵扣 balancededuction
|
|
|
+ * 全额 用户表更新:系统需要 将 对应用户信息中的【余额】进行更新, 余额 = 当前用户余额 - (实缴金额 - 实际应缴)
|
|
|
* 差额 系统需要 将 对应用户信息中的【余额】进行更新,余额 = 当前用户余额 - 【退款金额】
|
|
|
* negate 数值取反
|
|
|
* @param refundRequest
|
|
@@ -125,7 +140,7 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
|
|
|
*/
|
|
|
private BigDecimal calculateBalanceChange(SwRefundRequestRecordDO refundRequest) {
|
|
|
if (REFUNDMETHODALL.equals(refundRequest.getRefundtype())) {
|
|
|
- return refundRequest.getBalancededuction();
|
|
|
+ return refundRequest.getPaidin().subtract(refundRequest.getActualdue()).negate();
|
|
|
}
|
|
|
return refundRequest.getRefundamount().negate();
|
|
|
}
|
|
@@ -199,13 +214,13 @@ public class SwRefundRequestRecordServiceImpl extends ServiceImpl<SwRefundReques
|
|
|
//全额退款 系统需要同时缴费记录的缴费 状态 更新为 “全部退款” 状态,【本次实缴-整数】更新为 0,【缴费后余额】更新为 0
|
|
|
if (refundRequestRecordDO.getRefundtype().equals(REFUNDMETHODALL)){
|
|
|
swBillingRecordUpdateDo.setPayfeesstatus(FULLREFUNDSTATUS);
|
|
|
- swBillingRecordUpdateDo.setPaidin(BigDecimal.ZERO);
|
|
|
+// swBillingRecordUpdateDo.setPaidin(BigDecimal.ZERO);
|
|
|
swBillingRecordUpdateDo.setAfterpaymentbalance(BigDecimal.ZERO);
|
|
|
} else if (refundRequestRecordDO.getRefundtype().equals(REFUNDMETHODBALANCE)) {
|
|
|
//差额退款 ,同时缴费记录的缴费 状态 更新为 “部分退款” 状态,【缴费金额-整数】更新为【原缴费金额-整数】-【退款金额】【缴费后余额】更新为【原实缴后余额】-【退款金额】 ,
|
|
|
swBillingRecordUpdateDo.setPayfeesstatus(PARTIALREFUNDSTATUS);
|
|
|
SwBillingRecordDo recordDO = swBillingRecordService.getById(refundRequestRecordDO.getPaymentrecordid());
|
|
|
- swBillingRecordUpdateDo.setPaidin(recordDO.getPaidin().subtract(refundRequestRecordDO.getRefundableamount()));
|
|
|
+// swBillingRecordUpdateDo.setPaidin(recordDO.getPaidin().subtract(refundRequestRecordDO.getRefundableamount()));
|
|
|
swBillingRecordUpdateDo.setAfterpaymentbalance(recordDO.getAfterpaymentbalance().subtract(refundRequestRecordDO.getRefundableamount()));
|
|
|
}
|
|
|
swBillingRecordService.updateById(swBillingRecordUpdateDo);
|