diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java index 17e8913e1..be28ecdf3 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/HardAfterSaleCarService.java @@ -15,18 +15,18 @@ import java.util.Map; public interface HardAfterSaleCarService extends IService { /** - * 按订单查询全部售后商品汇总,保留后台历史能力。 + * 按订单查询申请中及已完成售后商品汇总,取消和拒绝记录不占用退款额度。 * * @param orderId 订单 ID - * @return 售后商品汇总;订单不存在时返回 {@code null} + * @return 有效退款占用商品汇总;订单不存在时返回 {@code null} */ List getByOrderId(Long orderId); /** - * 按父购物车查询待审核和已完成售后商品汇总,取消及拒绝记录不占用可退数量。 + * 按父购物车查询全部历史售后商品汇总,保留底层旧查询能力。 * * @param carParentId 父购物车 ID - * @return 按商品 ID 聚合的有效售后商品汇总 + * @return 不区分售后状态并按商品 ID 聚合的历史售后商品汇总 */ List getByCarPrentId(Long carParentId); diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java index b634f089b..6a384ef22 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/main/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImpl.java @@ -33,11 +33,17 @@ public class HardAfterSaleCarServiceImpl extends ServiceImpl getByOrderId(Long orderId) { HardOrderEntity order = hardOrderMapper.selectById(orderId); if (ObjectUtil.isEmpty(order)) return null; - return getByCarPrentId(order.getParentCarId()); + return getOccupiedByCarParentId(order.getParentCarId()); } @Override diff --git a/pjcloud-hardware/pjcloud-hardware-biz/src/test/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImplTest.java b/pjcloud-hardware/pjcloud-hardware-biz/src/test/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImplTest.java index ed1f1d934..d8caa4d46 100644 --- a/pjcloud-hardware/pjcloud-hardware-biz/src/test/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImplTest.java +++ b/pjcloud-hardware/pjcloud-hardware-biz/src/test/java/com/bsd/pjcloud/hard/service/impl/order/HardAfterSaleCarServiceImplTest.java @@ -2,6 +2,7 @@ package com.bsd.pjcloud.hard.service.impl.order; import com.bsd.pjcloud.hard.api.constant.refund.HardSaleStatusEnum; import com.bsd.pjcloud.hard.api.entity.order.HardAfterSaleCarEntity; +import com.bsd.pjcloud.hard.api.entity.order.HardOrderEntity; import com.bsd.pjcloud.hard.api.vo.order.HardCarVo; import com.bsd.pjcloud.hard.mapper.order.HardAfterSaleCarMapper; import com.bsd.pjcloud.hard.mapper.order.HardOrderMapper; @@ -37,6 +38,26 @@ class HardAfterSaleCarServiceImplTest { ReflectionTestUtils.setField(service, "baseMapper", afterSaleCarMapper); } + /** + * 验证后台退款购物车只聚合申请中和已完成记录,买家取消及卖家拒绝不会继续占用商品数量。 + */ + @Test + void getByOrderIdOnlyReturnsRefundOccupancy() { + Long orderId = 99L; + Long parentCarId = 100L; + HardOrderEntity order = new HardOrderEntity(); + order.setParentCarId(parentCarId); + List occupiedCars = List.of(refundCar(parentCarId, 501L, 1)); + List occupiedStatuses = List.of(HardSaleStatusEnum.APPLY.getStatus(), + HardSaleStatusEnum.COMPLETE.getStatus()); + when(orderMapper.selectById(orderId)).thenReturn(order); + when(afterSaleCarMapper.getOccupiedByCarParentId(parentCarId, occupiedStatuses)).thenReturn(occupiedCars); + + assertEquals(occupiedCars, service.getByOrderId(orderId)); + + verify(afterSaleCarMapper).getOccupiedByCarParentId(parentCarId, occupiedStatuses); + } + /** * 验证同一商品存在多行购物车快照时,已退款和申请中份数按行依次分配且原数量保持不变。 */