From 4a95eb6460abebd799f2b4c2d9a17b98b784a5ef Mon Sep 17 00:00:00 2001 From: Jack <46790855@qq.com> Date: Tue, 15 Jul 2025 17:10:59 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=AE=B6=E9=80=80=E6=AC=BE=20fix=20bu?= =?UTF-8?q?g?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../impl/ShopOrderReturnServiceImpl.java | 92 +++++++------------ 1 file changed, 31 insertions(+), 61 deletions(-) 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 50db75eb..f1fec5f7 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 @@ -2195,92 +2195,68 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl= StateCode.ORDER_STATE_SHIPPED) { return CommonResult.failed("订单状态,无法退款"); } - // 验证店铺权限 - if (orderInfo.getStore_id() != null - && !orderInfo.getStore_id().equals(Convert.toInt(currentUser.getStore_id()))) { + if (orderInfo.getStore_id() != null && !orderInfo.getStore_id().equals(Convert.toInt(currentUser.getStore_id()))) { return CommonResult.failed("无权处理其他店铺订单"); } - // === 3. 检查是否存在处理中的退货单 === + // === 3. 检查退货单 === ShopOrderReturn refundOrder = findOne(new QueryWrapper() .eq("order_id", orderId) - .eq("return_state_id", StateCode.RETURN_PROCESS_CHECK).orderByDesc("return_id")); - Boolean hasRefundRecord = refundOrder != null; + .eq("return_state_id", StateCode.RETURN_PROCESS_CHECK) + .orderByDesc("return_id")); - // === 4. 处理退货商品信息 === + // === 4. 处理退款商品 === OrderReturnInputVo partialRefund = null; - - // 部分退款? - Boolean isPartialRefund = false; + boolean isPartialRefund = false; int partialRefundItemCnt = 0; + if (StrUtil.isNotBlank(requestParams.getStr("order_return_vo"))) { - try { - partialRefund = JSONUtil.toBean(requestParams.getStr("order_return_vo"), OrderReturnInputVo.class); - isPartialRefund = partialRefund != null && CollectionUtil.isNotEmpty(partialRefund.getReturn_items()); - partialRefundItemCnt = partialRefund.getReturn_items().size(); - } catch (Exception e) { - return CommonResult.failed("退货商品参数格式错误"); - } + partialRefund = JSONUtil.toBean(requestParams.getStr("order_return_vo"), OrderReturnInputVo.class); + isPartialRefund = partialRefund != null && CollectionUtil.isNotEmpty(partialRefund.getReturn_items()); + partialRefundItemCnt = isPartialRefund ? partialRefund.getReturn_items().size() : 0; } - // 获取订单商品项 - List orderItems = shopOrderItemService.find( - new QueryWrapper().eq("order_id", orderId)); - if (CollectionUtil.isEmpty(orderItems)) { - return CommonResult.failed("订单没有可退货的商品"); - } - - if (isPartialRefund && orderItems.size() == partialRefundItemCnt) { - isPartialRefund = false; - } + List orderItems = shopOrderItemService.find(new QueryWrapper().eq("order_id", orderId)); + if (CollectionUtil.isEmpty(orderItems)) return CommonResult.failed("订单没有可退货的商品"); + isPartialRefund = isPartialRefund && orderItems.size() != partialRefundItemCnt; String reason = StrUtil.isBlank(requestParams.getStr("reason")) ? (isPartialRefund ? "商家部分商品退款" : "商家整单退款") : requestParams.getStr("reason"); - // === 5. 创建退货单(如不存在) === -// ShopOrderReturn refundOrder = null; - if (!hasRefundRecord) { - - // 5.2 准备退货请求数据 + // === 5. 创建新退货单(如不存在) === + if (refundOrder == null) { OrderReturnInputVo refundRequest = new OrderReturnInputVo(); refundRequest.setOrder_id(orderId); refundRequest.setReturn_buyer_message(reason); refundRequest.setUser_id(orderInfo.getBuyer_user_id()); - // 5.3 处理退货商品项 if (isPartialRefund) { - // 校验部分退货商品有效性 + // 单个订单退款 List validItemIds = orderItems.stream().map(ShopOrderItem::getOrder_item_id).collect(Collectors.toList()); if (!partialRefund.getReturn_items().stream() .allMatch(item -> validItemIds.contains(item.getOrder_item_id()) @@ -2290,7 +2266,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl { OrderReturnItemInputVo itemVo = new OrderReturnItemInputVo(); itemVo.setOrder_item_id(item.getOrder_item_id()); @@ -2300,32 +2276,26 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl().eq("order_id", orderId).ne("return_state_id", StateCode.RETURN_PROCESS_CANCEL).orderByDesc("order_id")); -// if (refundOrder == null) { -// return CommonResult.failed("退款单创建失败"); -// } - } - - // === 6.1. 获取退货订单 === - refundOrder = findOne(new QueryWrapper().eq("order_id", orderId).eq("return_state_id", StateCode.RETURN_PROCESS_CHECK).orderByDesc("return_id")); - if (refundOrder == null) { - return CommonResult.failed("退款单创建失败"); + refundOrder = findOne(new QueryWrapper() + .eq("order_id", orderId) + .eq("return_state_id", StateCode.RETURN_PROCESS_CHECK) + .orderByDesc("return_id")); + if (refundOrder == null) return CommonResult.failed("退款单创建失败"); + } + // === 6. 处理退款 === refundOrder.setReturn_flag(0); refundOrder.setReturn_store_message(reason); refundOrder.setReturn_buyer_message(reason); - logger.info("商家退款订单:{}", JSONUtil.toJsonStr(refundOrder)); - // === 6.2 处理退货 === if (!processReviewList(refundOrder, 0)) { return CommonResult.failed("退款处理失败"); }