|
|
@@ -779,7 +779,7 @@ public class WFTOrderService {
|
|
|
//查询一年内已支付的所有券订单
|
|
|
List<UserOrderInfo> userOrderInfoList = userOrderInfoMapper.selectList(Wrappers.<UserOrderInfo>lambdaQuery()
|
|
|
.eq(UserOrderInfo::getUserId, userId)
|
|
|
- .eq(UserOrderInfo::getOrderStatus, SystemConstants.STATUS_TWO)
|
|
|
+ .in(UserOrderInfo::getOrderStatus, SystemConstants.STATUS_TWO,SystemConstants.STATUS_FIVE)
|
|
|
.between(UserOrderInfo::getCreateTime, LocalDateTime.now().minusYears(1), LocalDateTime.now())
|
|
|
);
|
|
|
|
|
|
@@ -806,8 +806,15 @@ public class WFTOrderService {
|
|
|
SystemConstants.ACCOUNT_LOG_REFUND_NOTE,
|
|
|
userOrderInfo.getId()
|
|
|
);
|
|
|
- //修改订单状态
|
|
|
- userOrderInfo.setOrderStatus(SystemConstants.STATUS_FOUR);
|
|
|
+ //修改订单状态(判断是全额退款还是部分退款)
|
|
|
+ BigDecimal totalRefundMoney = alreadyRefundMoney.add(refundMoney);
|
|
|
+ if (totalRefundMoney.compareTo(userOrderInfo.getOrderMoney()) >= 0) {
|
|
|
+ // 退款金额等于或大于订单金额,全额退款
|
|
|
+ userOrderInfo.setOrderStatus(SystemConstants.STATUS_FOUR);
|
|
|
+ } else {
|
|
|
+ // 退款金额小于订单金额,部分退款
|
|
|
+ userOrderInfo.setOrderStatus(SystemConstants.STATUS_FIVE);
|
|
|
+ }
|
|
|
userOrderInfoMapper.updateById(userOrderInfo);
|
|
|
refundMoney = BigDecimal.ZERO;
|
|
|
break;
|
|
|
@@ -823,8 +830,15 @@ public class WFTOrderService {
|
|
|
SystemConstants.ACCOUNT_LOG_REFUND_NOTE,
|
|
|
userOrderInfo.getId()
|
|
|
);
|
|
|
- //修改订单状态
|
|
|
- userOrderInfo.setOrderStatus(SystemConstants.STATUS_FOUR);
|
|
|
+ //修改订单状态(判断是全额退款还是部分退款)
|
|
|
+ BigDecimal totalRefundMoney = alreadyRefundMoney.add(canRefundMoney);
|
|
|
+ if (totalRefundMoney.compareTo(userOrderInfo.getOrderMoney()) >= 0) {
|
|
|
+ // 退款金额等于订单金额,全额退款
|
|
|
+ userOrderInfo.setOrderStatus(SystemConstants.STATUS_FOUR);
|
|
|
+ } else {
|
|
|
+ // 退款金额小于订单金额,部分退款
|
|
|
+ userOrderInfo.setOrderStatus(SystemConstants.STATUS_FIVE);
|
|
|
+ }
|
|
|
userOrderInfoMapper.updateById(userOrderInfo);
|
|
|
refundMoney = refundMoney.subtract(canRefundMoney);
|
|
|
}
|
|
|
@@ -867,10 +881,19 @@ public class WFTOrderService {
|
|
|
if(Objects.equals(refund.get("result_code"), "0")){
|
|
|
log.info("退款成功!");
|
|
|
log.info("订单:{},退款成功!原因:{}", userOrderInfo.getOrderNo(), reason);
|
|
|
- //修改订单状态
|
|
|
- userOrderInfo.setOrderStatus(SystemConstants.STATUS_FIVE);
|
|
|
+ //计算累计退款金额
|
|
|
BigDecimal currentRefundMoney = userOrderInfo.getRefundMoney() == null ? BigDecimal.ZERO : userOrderInfo.getRefundMoney();
|
|
|
- userOrderInfo.setRefundMoney(currentRefundMoney.add(refundAmount));
|
|
|
+ BigDecimal totalRefundMoney = currentRefundMoney.add(refundAmount);
|
|
|
+
|
|
|
+ //修改订单状态(判断是全额退款还是部分退款)
|
|
|
+ if (totalRefundMoney.compareTo(userOrderInfo.getOrderMoney()) >= 0) {
|
|
|
+ // 退款金额等于或大于订单金额,全额退款
|
|
|
+ userOrderInfo.setOrderStatus(SystemConstants.STATUS_FOUR);
|
|
|
+ } else {
|
|
|
+ // 退款金额小于订单金额,部分退款
|
|
|
+ userOrderInfo.setOrderStatus(SystemConstants.STATUS_FIVE);
|
|
|
+ }
|
|
|
+ userOrderInfo.setRefundMoney(totalRefundMoney);
|
|
|
userOrderInfo.setRefundTime(LocalDateTime.now());
|
|
|
userOrderInfoMapper.updateById(userOrderInfo);
|
|
|
} else{
|