diff --git a/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikePaymentAmountDto.java b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikePaymentAmountDto.java index e6dad84..7e61e2a 100644 --- a/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikePaymentAmountDto.java +++ b/ebike-feign/src/main/java/com/ebike/feign/model/dto/FeignEbikePaymentAmountDto.java @@ -1,5 +1,6 @@ package com.ebike.feign.model.dto; +import jakarta.validation.constraints.DecimalMin; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; @@ -22,6 +23,7 @@ public class FeignEbikePaymentAmountDto { @NotBlank(message = "车辆编号不能为空") private String bikeCode; + @DecimalMin(value = "0.00", message = "修改后的价格不能小于0") @NotNull(message = "价格不能为空") private BigDecimal price; } diff --git a/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderServiceImpl.java b/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderServiceImpl.java index 5636450..ef8067c 100644 --- a/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderServiceImpl.java +++ b/ebike-user/src/main/java/com/cdzy/user/service/impl/EbikeOrderServiceImpl.java @@ -338,6 +338,7 @@ public class EbikeOrderServiceImpl extends ServiceImpl 0) { + saveDiscountDetail(order, discountAmount, "运维人员修改订单减免金额"); + } + } + + /** + * 处理免费订单逻辑 + */ + private void handleFreeOrder(EbikeOrder order) { + // 1. 更新订单状态 + order.setOrderStatus(OrderStatus.PAID); + order.setActualAmount(BigDecimal.ZERO); + order.setPaymentTime(LocalDateTime.now()); + order.setIsFreeOrder(Boolean.TRUE); + this.updateById(order); + // 2. 逻辑删除支付记录 + EbikePayment payment = ebikePaymentService.queryPaymentInfo(order.getOrderId()); + ebikePaymentService.removeById(payment); + // 3. 记录优惠明细 + saveDiscountDetail(order, order.getTotalAmount(), "全额减免"); + } + + /** + * 保存优惠明细 + */ + private void saveDiscountDetail(EbikeOrder order, BigDecimal amount, String description) { + EbikeOrderDetail detail = EbikeOrderDetail.builder() + .orderId(order.getOrderId()) + .operatorId(order.getOperatorId()) + .detailType(EbikeOrderDetailType.DISCOUNT_AMOUNT.getCode()) + .detailDescription(description) + .detailName(EbikeOrderDetailType.DISCOUNT_AMOUNT.getName()) + .detailAmount(amount) + .createTime(LocalDateTime.now()) + .build(); + ebikeOrderDetailService.save(detail); + } + /** * 计算增长率并格式化为百分比字符串 *