diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java index a64e8d7c..211916bc 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/ShopOrderReturnService.java @@ -171,7 +171,7 @@ public interface ShopOrderReturnService extends IBaseService { * @param productId 商品ID * @return boolean true表示禁止退货,false表示允许退货 */ - boolean ifOrderItemDenyReturn(String orderId, Long productId); + boolean isOrderItemDenyReturn(String orderId, Long productId); /** * 判断订单是否禁止退货 diff --git a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java index 0b0ab4c6..8cdf0518 100644 --- a/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java +++ b/mall-shop/src/main/java/com/suisung/mall/shop/order/service/impl/ShopOrderBaseServiceImpl.java @@ -9070,13 +9070,22 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl { - item.setIs_deny_return(isOrderDenyReturn); - }); + if (CollUtil.isNotEmpty(order.getOrder_items())) { + if (!isOrderDenyReturn) { // 允许退款的订单,再进一步检查每个商品是否不能退款 + // 订单商品列表是否禁止退款 + order.getOrder_items().forEach(item -> { + // 注意:应该使用 order_item_id 而不是 product_id + boolean isOrderItemDenyReturn = shopOrderReturnService.isOrderItemDenyReturn(order.getOrder_id(), item.getProduct_id()); + item.setIs_deny_return(isOrderItemDenyReturn ? CommonConstant.Enable : CommonConstant.Disable2); + }); + } else { + // 如果整个订单都禁止退款,则所有商品都禁止退款 + order.getOrder_items().forEach(item -> item.setIs_deny_return(CommonConstant.Enable)); + } + } }); @@ -9177,13 +9186,22 @@ public class ShopOrderBaseServiceImpl extends BaseServiceImpl { - item.setIs_deny_return(isOrderDenyReturn); - }); + if (CollUtil.isNotEmpty(orderDetail.getOrder_items())) { + if (!isOrderDenyReturn) { // 允许退款的订单,再进一步检查每个商品是否不能退款 + // 订单商品列表是否禁止退款 + orderDetail.getOrder_items().forEach(item -> { + // 注意:应该使用 order_item_id 而不是 product_id + boolean isOrderItemDenyReturn = shopOrderReturnService.isOrderItemDenyReturn(orderId, item.getProduct_id()); + item.setIs_deny_return(isOrderItemDenyReturn ? CommonConstant.Enable : CommonConstant.Disable2); + }); + } else { + // 如果整个订单都禁止退款,则所有商品都禁止退款 + orderDetail.getOrder_items().forEach(item -> item.setIs_deny_return(CommonConstant.Enable)); + } + } return orderDetail; } 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 c5af168c..28ef1596 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 @@ -1512,7 +1512,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl 0) { - log.debug("[是否禁止退货] 订单已超过退货期限,不允许退货,order_id: {}", orderId); + log.debug("[是否禁止退货] 订单已超过退货期限,禁止退货,order_id: {}, orderDealTime: {}, withdrawTime: {}", + orderId, orderDealTime, withdrawTime); return true; } } catch (Exception e) { - log.error("[是否禁止退货] 检查订单退货期限时发生异常,不允许退货,order_id: {}", orderId, e); + log.error("[是否禁止退货] 检查订单退货期限时发生异常,禁止退货,order_id: {}", orderId, e); + return true; } } @@ -2165,32 +2162,40 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl contractTypeIds = Convert.toList(Integer.class, contractTypeIdsStr); if (contractTypeIds != null && contractTypeIds.contains(StateCode.CONTRACT_TYPE_DENY_RETURN)) { - log.debug("[是否禁止退货] 商品设置了禁止退货标识,不允许退货,order_id: {}, product_id: {}", orderId, productId); + log.debug("[是否禁止退货] 商品设置了禁止退货标识,禁止退货,order_id: {}, product_id: {}", orderId, productIndex.getProduct_id()); return true; } } catch (Exception e) { - log.error("[是否禁止退货] 解析商品保障类型失败,不允许退货,order_id: {}, product_id: {}", orderId, productId, e); - return true; + log.error("[是否禁止退货] 解析商品保障类型失败,允许退货,order_id: {}, product_id: {}", orderId, productIndex.getProduct_id(), e); + return false; } } // 默认允许退货 - log.debug("[是否禁止退货] 允许退货}"); + log.debug("[是否禁止退货] 商品允许退货,order_id: {}, product_id: {}", orderId, productIndex.getProduct_id()); return false; } @@ -2226,7 +2231,7 @@ public class ShopOrderReturnServiceImpl extends BaseServiceImpl 0) { - log.debug("[订单是否禁止退货] 订单:{} 已过退货期,不允许退货", orderId); + log.debug("[订单是否禁止退货] 订单已超过退货期限,禁止退货,orderId: {}, orderDealTime: {}, withdrawTime: {}", + orderId, orderDealTime, withdrawTime); return true; } } // 检查拉卡拉分账和提现状态 - if (lklOrderSeparateService.isOrderSeparated(orderId) && - lklOrderDrawService.isOrderDrawed(orderId)) { - log.debug("[订单是否禁止退货] 订单[{}]已提现,不允许退货", orderId); + boolean isLklSeparated = lklOrderSeparateService.isOrderSeparated(orderId); + boolean isLklDrawed = lklOrderDrawService.isOrderDrawed(orderId); + boolean isLklProcessed = isLklSeparated && isLklDrawed; + + if (isLklProcessed) { + log.debug("[订单是否禁止退货] 拉卡拉分账订单已提现,禁止退货,orderId: {}, separated: {}, drawed: {}", + orderId, isLklSeparated, isLklDrawed); return true; } - // 默认允许退货 + // 允许退货 + log.debug("[订单是否禁止退货] 订单允许退货,orderId: {}", orderId); return false; } catch (Exception e) { - log.error("[订单是否禁止退货] 查询订单{}退货状态异常,不允许退货", orderId, e); + log.error("[订单是否禁止退货] 查询订单退货状态异常,禁止退货,orderId: {}", orderId, e); return true; } }