diff --git a/ghy-order/src/main/java/com/ghy/order/domain/OrderAddSubtract.java b/ghy-order/src/main/java/com/ghy/order/domain/OrderAddSubtract.java index d3d71329..40963e74 100644 --- a/ghy-order/src/main/java/com/ghy/order/domain/OrderAddSubtract.java +++ b/ghy-order/src/main/java/com/ghy/order/domain/OrderAddSubtract.java @@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonFormat; import com.ghy.common.enums.PayStatus; import com.ghy.common.enums.PayTypeEnum; import lombok.Data; +import lombok.experimental.Accessors; import javax.validation.constraints.Max; import javax.validation.constraints.Min; @@ -15,6 +16,7 @@ import java.time.LocalDateTime; * 订单追加扣减 */ @Data +@Accessors(chain = true) public class OrderAddSubtract { private Long id; diff --git a/ghy-order/src/main/java/com/ghy/order/mapper/OrderAddSubtractMapper.java b/ghy-order/src/main/java/com/ghy/order/mapper/OrderAddSubtractMapper.java index 6b4a0a04..d024feb1 100644 --- a/ghy-order/src/main/java/com/ghy/order/mapper/OrderAddSubtractMapper.java +++ b/ghy-order/src/main/java/com/ghy/order/mapper/OrderAddSubtractMapper.java @@ -15,5 +15,7 @@ public interface OrderAddSubtractMapper { List select(OrderAddSubtract insert); + List selectByOrderDetail(Long orderDetailId); + OrderAddSubtract selectById(Long id); } diff --git a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java index ff32db49..41bba76f 100644 --- a/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java +++ b/ghy-order/src/main/java/com/ghy/order/service/impl/OrderDetailServiceImpl.java @@ -797,8 +797,9 @@ public class OrderDetailServiceImpl implements OrderDetailService { FinancialDetail financialDetail = financialDetailService.selectByOrderDetailId(orderDetail.getId()); Assert.notNull(financialDetail, "找不到财务单"); - // 派单金额 = 财务单金额 - 已支付的加价记录 + // 可用派单金额 = 财务单金额 - 已支付的加价记录 - 已支付的追加记录 BigDecimal paiDanMoney = financialDetail.getPayMoney(); + // 已支付的加价记录 List paidChangeRecords = financialChangeRecordService.selectByDetailIds(orderDetail.getId().toString()) .stream().filter(x -> x.getPayStatus() == 1).collect(Collectors.toList()); @@ -806,6 +807,15 @@ public class OrderDetailServiceImpl implements OrderDetailService { paiDanMoney = paiDanMoney.subtract(record.getChangeMoney()); } + // 已支付的追加记录 + List orderAdds = orderAddSubtractMapper.select(new OrderAddSubtract() + .setOrderDetailId(orderDetail.getId()).setPayStatus(PayStatus.PAID.getCode())); + for (OrderAddSubtract oas : orderAdds) { + if (MoneyUtil.gt0(oas.getMoney())) { + paiDanMoney = paiDanMoney.subtract(oas.getMoney()); + } + } + // 如果这是扣减操作 if (MoneyUtil.lt0(body.getMoney())) { // 扣减金额不能超过派单金额 diff --git a/ghy-order/src/main/resources/mapper/order/OrderAddSubtractMapper.xml b/ghy-order/src/main/resources/mapper/order/OrderAddSubtractMapper.xml index 98d719f9..2619e270 100644 --- a/ghy-order/src/main/resources/mapper/order/OrderAddSubtractMapper.xml +++ b/ghy-order/src/main/resources/mapper/order/OrderAddSubtractMapper.xml @@ -56,6 +56,9 @@ AND payment_id = #{paymentId} + + AND pay_status = #{payStatus} + @@ -64,4 +67,9 @@ WHERE id = #{id} + +