diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java index 333973a4..d356b0fe 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderReturnServiceImpl.java @@ -74,7 +74,6 @@ import org.springframework.transaction.annotation.Transactional; import javax.servlet.http.HttpServletResponse; import java.io.IOException; import java.math.BigDecimal; -import java.math.RoundingMode; import java.time.LocalDateTime; import java.util.*; import java.util.stream.Collectors; @@ -3300,116 +3299,5 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl availableReturnNum) { - if (!autoCorrect) { - throw new ApiException(String.format("商品 %s 的退款数量超过可退数量,最多可退 %d 件", - shopOrderItem.getItem_name(), availableReturnNum)); - } - - // 按比例调整退款金额 - BigDecimal ratio = BigDecimal.valueOf(availableReturnNum) - .divide(BigDecimal.valueOf(requestReturnNum), 6, RoundingMode.HALF_UP); - BigDecimal correctedAmount = requestRefundAmount.multiply(ratio); - return new BigDecimal[]{BigDecimal.valueOf(availableReturnNum), correctedAmount}; - } - - // 校验并处理请求退款金额是否超过可退金额 - if (requestRefundAmount.compareTo(availableReturnAmount) > 0) { - if (!autoCorrect) { - throw new ApiException(String.format("商品 %s 的退款金额超过可退金额,最多可退 %.2f 元", - shopOrderItem.getItem_name(), availableReturnAmount)); - } - return new BigDecimal[]{BigDecimal.valueOf(requestReturnNum), availableReturnAmount}; - } - - return new BigDecimal[]{BigDecimal.valueOf(requestReturnNum), requestRefundAmount}; - } - - /** - * 校验退款商品数量是否有效(专用于仅校验数量的场景) - * - * @param shopOrderItem 订单商品项 - * @param requestReturnNum 请求退款数量 - * @param autoCorrect 是否自动纠正数量(false:超出时抛出异常, true:超出时自动调整为最大可退数量) - * @return 校验后的有效退款数量 - * @throws ApiException 当autoCorrect为false且请求数量超出可退数量时抛出异常 - */ - private Integer validateReturnQuantity(ShopOrderItem shopOrderItem, Integer requestReturnNum, boolean autoCorrect) { - // 校验请求参数有效性 - if (requestReturnNum <= 0) { - throw new ApiException("退款数量必须大于0,请检查商品 " + shopOrderItem.getItem_name() + " 的退款数量"); - } - - // 计算可退数量 - Integer orderItemQuantity = shopOrderItem.getOrder_item_quantity(); - Integer orderItemReturnAgreeNum = ObjectUtil.defaultIfNull(shopOrderItem.getOrder_item_return_agree_num(), 0); - Integer availableReturnNum = orderItemQuantity - orderItemReturnAgreeNum; - - // 检查是否还有可退数量 - if (availableReturnNum <= 0) { - if (autoCorrect) { - return 0; - } - throw new ApiException(String.format("商品 %s 已无可退数量,无法申请退款", shopOrderItem.getItem_name())); - } - - // 校验并处理请求退款数量是否超过可退数量 - if (requestReturnNum > availableReturnNum) { - if (!autoCorrect) { - throw new ApiException(String.format("商品 %s 的退款数量超过可退数量,最多可退 %d 件", - shopOrderItem.getItem_name(), availableReturnNum)); - } - return availableReturnNum; - } - - return requestReturnNum; - } - } \ No newline at end of file