|
|
@@ -778,6 +778,7 @@ public class WFTOrderService {
|
|
|
|
|
|
//查询一年内已支付的所有券订单
|
|
|
List<UserOrderInfo> userOrderInfoList = userOrderInfoMapper.selectList(Wrappers.<UserOrderInfo>lambdaQuery()
|
|
|
+ .eq(UserOrderInfo::getUserId, userId)
|
|
|
.eq(UserOrderInfo::getOrderStatus, SystemConstants.STATUS_TWO)
|
|
|
.between(UserOrderInfo::getCreateTime, LocalDateTime.now().minusYears(1), LocalDateTime.now())
|
|
|
);
|
|
|
@@ -790,7 +791,11 @@ public class WFTOrderService {
|
|
|
if(refundMoney.compareTo(BigDecimal.ZERO) == 0){
|
|
|
break;
|
|
|
}
|
|
|
- if ((userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney())).compareTo(refundMoney) > 0) {
|
|
|
+ // 处理退款金额为null的情况,默认为0
|
|
|
+ BigDecimal alreadyRefundMoney = userOrderInfo.getRefundMoney() == null ? BigDecimal.ZERO : userOrderInfo.getRefundMoney();
|
|
|
+ BigDecimal canRefundMoney = userOrderInfo.getOrderMoney().subtract(alreadyRefundMoney);
|
|
|
+
|
|
|
+ if (canRefundMoney.compareTo(refundMoney) >= 0) {
|
|
|
//退款金额大于订单金额,则直接退退款金额
|
|
|
refundOrder(userOrderInfo,refundMoney, "账户退款", SystemConstants.STATUS_ONE);
|
|
|
//账户变动及日志记录
|
|
|
@@ -807,13 +812,13 @@ public class WFTOrderService {
|
|
|
refundMoney = BigDecimal.ZERO;
|
|
|
break;
|
|
|
}
|
|
|
- if ((userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney())).compareTo(refundMoney) < 0) {
|
|
|
+ if (canRefundMoney.compareTo(refundMoney) < 0) {
|
|
|
//退款金额小于订单金额,则先退订单金额
|
|
|
- refundOrder(userOrderInfo,userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney()), "账户退款", SystemConstants.STATUS_TWO);
|
|
|
+ refundOrder(userOrderInfo, canRefundMoney, "账户退款", SystemConstants.STATUS_TWO);
|
|
|
//账户变动及日志记录
|
|
|
userAccountService.updateAccountBalanceAndLog(
|
|
|
SecurityUtils.getUserId(),
|
|
|
- userOrderInfo.getOrderMoney().subtract(userOrderInfo.getRefundMoney()),
|
|
|
+ canRefundMoney,
|
|
|
SystemConstants.ACCOUNT_REFUND,
|
|
|
SystemConstants.ACCOUNT_LOG_REFUND_NOTE,
|
|
|
userOrderInfo.getId()
|
|
|
@@ -864,13 +869,15 @@ public class WFTOrderService {
|
|
|
log.info("订单:{},退款成功!原因:{}", userOrderInfo.getOrderNo(), reason);
|
|
|
//修改订单状态
|
|
|
userOrderInfo.setOrderStatus(SystemConstants.STATUS_FIVE);
|
|
|
- userOrderInfo.setRefundMoney(userOrderInfo.getRefundMoney().add(refundAmount));
|
|
|
+ BigDecimal currentRefundMoney = userOrderInfo.getRefundMoney() == null ? BigDecimal.ZERO : userOrderInfo.getRefundMoney();
|
|
|
+ userOrderInfo.setRefundMoney(currentRefundMoney.add(refundAmount));
|
|
|
userOrderInfo.setRefundTime(LocalDateTime.now());
|
|
|
userOrderInfoMapper.updateById(userOrderInfo);
|
|
|
} else{
|
|
|
log.info("退款处理中");
|
|
|
//修改订单状态
|
|
|
- userOrderInfo.setRefundMoney(userOrderInfo.getRefundMoney().add(refundAmount));
|
|
|
+ BigDecimal currentRefundMoney = userOrderInfo.getRefundMoney() == null ? BigDecimal.ZERO : userOrderInfo.getRefundMoney();
|
|
|
+ userOrderInfo.setRefundMoney(currentRefundMoney.add(refundAmount));
|
|
|
userOrderInfoMapper.updateById(userOrderInfo);
|
|
|
}
|
|
|
//退款信息补充
|