feat:后台退款购物车查询

This commit is contained in:
dzc committed 2026-08-31 18:14:57 +08:00
1 parent 814f7f71fe
commit 87c5a6ee39
3 files changed
+32 -5

No files matched your search

@@ -15,18 +15,18 @@ import java.util.Map;
public interface HardAfterSaleCarService extends IService<HardAfterSaleCarEntity> {
/**
* 按订单查询全部售后商品汇总,保留后台历史能力。
* 按订单查询申请中及已完成售后商品汇总,取消和拒绝记录不占用退款额度。
*
* @param orderId 订单 ID
* @return 售后商品汇总;订单不存在时返回 {@code null}
* @return 有效退款占用商品汇总;订单不存在时返回 {@code null}
*/
List<HardAfterSaleCarEntity> getByOrderId(Long orderId);
/**
* 按父购物车查询待审核和已完成售后商品汇总,取消及拒绝记录不占用可退数量。
* 按父购物车查询全部历史售后商品汇总,保留底层旧查询能力。
*
* @param carParentId 父购物车 ID
* @return 按商品 ID 聚合的有效售后商品汇总
* @return 不区分售后状态并按商品 ID 聚合的历史售后商品汇总
*/
List<HardAfterSaleCarEntity> getByCarPrentId(Long carParentId);
@@ -33,11 +33,17 @@ public class HardAfterSaleCarServiceImpl extends ServiceImpl<HardAfterSaleCarMap
/** 订单 Mapper,用于从订单 ID 解析其父购物车 ID。 */
private final HardOrderMapper hardOrderMapper;
/**
* 按订单查询仍占用退款额度的商品汇总,取消和拒绝的售后必须释放可退数量。
*
* @param orderId 原订单 ID
* @return 申请中及已完成售后商品汇总;订单不存在时返回 {@code null}
*/
@Override
public List<HardAfterSaleCarEntity> getByOrderId(Long orderId) {
HardOrderEntity order = hardOrderMapper.selectById(orderId);
if (ObjectUtil.isEmpty(order)) return null;
return getByCarPrentId(order.getParentCarId());
return getOccupiedByCarParentId(order.getParentCarId());
}
@Override
@@ -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<HardAfterSaleCarEntity> occupiedCars = List.of(refundCar(parentCarId, 501L, 1));
List<String> 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);
}
/**
* 验证同一商品存在多行购物车快照时,已退款和申请中份数按行依次分配且原数量保持不变。
*/