|
@@ -410,6 +410,10 @@ public class RefundServiceImpl extends ServiceImpl<MtRefundMapper, MtRefund> imp
|
|
MtRefund mtRefund = mtRefundMapper.selectById(refund.getId());
|
|
MtRefund mtRefund = mtRefundMapper.selectById(refund.getId());
|
|
UserOrderDto orderInfo = orderService.getOrderById(mtRefund.getOrderId());
|
|
UserOrderDto orderInfo = orderService.getOrderById(mtRefund.getOrderId());
|
|
|
|
|
|
|
|
+ if (mtRefund.getAmount().compareTo(orderInfo.getAmount()) > 0) {
|
|
|
|
+ throw new BusinessCheckException("退款金额不能大于订单总金额");
|
|
|
|
+ }
|
|
|
|
+
|
|
OrderDto reqDto = new OrderDto();
|
|
OrderDto reqDto = new OrderDto();
|
|
reqDto.setId(orderInfo.getId());
|
|
reqDto.setId(orderInfo.getId());
|
|
reqDto.setStatus(OrderStatusEnum.REFUND.getKey());
|
|
reqDto.setStatus(OrderStatusEnum.REFUND.getKey());
|
|
@@ -424,20 +428,26 @@ public class RefundServiceImpl extends ServiceImpl<MtRefundMapper, MtRefund> imp
|
|
if (orderInfo.getPayType().equals(PayTypeEnum.BALANCE.getKey())) {
|
|
if (orderInfo.getPayType().equals(PayTypeEnum.BALANCE.getKey())) {
|
|
List<MtBalance> balanceList = balanceService.getBalanceListByOrderSn(orderInfo.getOrderSn());
|
|
List<MtBalance> balanceList = balanceService.getBalanceListByOrderSn(orderInfo.getOrderSn());
|
|
if (balanceList.size() > 0) {
|
|
if (balanceList.size() > 0) {
|
|
- for (MtBalance mtBalance : balanceList) {
|
|
|
|
- if (mtBalance.getAmount().compareTo(new BigDecimal("0")) < 0) {
|
|
|
|
- MtBalance balanceReq = new MtBalance();
|
|
|
|
- balanceReq.setUserId(orderInfo.getUserId());
|
|
|
|
- balanceReq.setMerchantId(orderInfo.getMerchantId());
|
|
|
|
- balanceReq.setOrderSn(orderInfo.getOrderSn());
|
|
|
|
- balanceReq.setMobile(orderInfo.getUserInfo().getMobile());
|
|
|
|
- balanceReq.setAmount(mtBalance.getAmount().negate());
|
|
|
|
- balanceReq.setStatus(StatusEnum.ENABLED.getKey());
|
|
|
|
- balanceReq.setCreateTime(new Date());
|
|
|
|
- balanceReq.setUpdateTime(new Date());
|
|
|
|
- balanceService.addBalance(balanceReq, true);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
|
|
+ BigDecimal refundAmount = new BigDecimal("0");
|
|
|
|
+ for (MtBalance mtBalance : balanceList) {
|
|
|
|
+ if (mtBalance.getAmount().compareTo(new BigDecimal("0")) < 0) {
|
|
|
|
+ refundAmount = refundAmount.add(mtBalance.getAmount());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ MtBalance balanceReq = new MtBalance();
|
|
|
|
+ balanceReq.setUserId(orderInfo.getUserId());
|
|
|
|
+ balanceReq.setMerchantId(orderInfo.getMerchantId());
|
|
|
|
+ balanceReq.setOrderSn(orderInfo.getOrderSn());
|
|
|
|
+ balanceReq.setMobile(orderInfo.getUserInfo().getMobile());
|
|
|
|
+ if (mtRefund.getAmount() != null && mtRefund.getAmount().compareTo(new BigDecimal("0")) > 0) {
|
|
|
|
+ balanceReq.setAmount(mtRefund.getAmount().negate());
|
|
|
|
+ } else if (refundAmount.compareTo(orderInfo.getPayAmount()) <= 0) {
|
|
|
|
+ balanceReq.setAmount(refundAmount);
|
|
|
|
+ }
|
|
|
|
+ balanceReq.setStatus(StatusEnum.ENABLED.getKey());
|
|
|
|
+ balanceReq.setCreateTime(new Date());
|
|
|
|
+ balanceReq.setUpdateTime(new Date());
|
|
|
|
+ balanceService.addBalance(balanceReq, true);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|