Commit 9cf470df9495e54db919f191dfb895cc1fe843cc

Authored by ex_yang.li@ca-nio.com
1 parent f21ce954

创建交易订单-单元测试-冲突合并

yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/api/spu/ProductSpuApiImpl.java
... ... @@ -25,7 +25,7 @@ public class ProductSpuApiImpl implements ProductSpuApi {
25 25 private ProductSpuMapper productSpuMapper;
26 26  
27 27 @Override
28   - public List<SpuInfoRespDTO> getSpusByIds(Collection<Long> spuIds) {
  28 + public List<SpuInfoRespDTO> getSpuList(Collection<Long> spuIds) {
29 29 if (CollectionUtils.isAnyEmpty(spuIds)) {
30 30 return Collections.emptyList();
31 31 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/convert/order/TradeOrderItemConvert.java
... ... @@ -20,5 +20,5 @@ public interface TradeOrderItemConvert {
20 20 * @param items sku列表价格
21 21 * @return 订单项
22 22 */
23   - List<TradeOrderItemDO> convertList(List<PriceCalculateRespDTO.Item> items);
  23 + List<TradeOrderItemDO> convertList(List<PriceCalculateRespDTO.OrderItem> items);
24 24 }
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceImpl.java
... ... @@ -30,7 +30,7 @@ import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderDO;
30 30 import cn.iocoder.yudao.module.trade.dal.dataobject.order.TradeOrderItemDO;
31 31 import cn.iocoder.yudao.module.trade.dal.mysql.order.TradeOrderMapper;
32 32 import cn.iocoder.yudao.module.trade.dal.mysql.orderitem.TradeOrderItemMapper;
33   -import cn.iocoder.yudao.module.trade.enums.enums.ErrorCodeConstants;
  33 +import cn.iocoder.yudao.module.trade.enums.ErrorCodeConstants;
34 34 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderItemRefundStatusEnum;
35 35 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderRefundStatusEnum;
36 36 import cn.iocoder.yudao.module.trade.enums.order.TradeOrderStatusEnum;
... ... @@ -82,12 +82,12 @@ public class TradeOrderServiceImpl implements TradeOrderService {
82 82  
83 83 List<Item> items = createReqVO.getItems();
84 84 // 商品SKU检查 sku可售状态,库存
85   - List<SkuInfoRespDTO> skuInfos = productSkuApi.getSkusByIds(CollectionUtils.convertSet(items, Item::getSkuId));
86   - Map<Long, SkuInfoRespDTO> skuInfoMap = CollectionUtils.convertMap(skuInfos, SkuInfoRespDTO::getId);
  85 + List<ProductSkuRespDTO> skuInfos = productSkuApi.getSkuList(CollectionUtils.convertSet(items, Item::getSkuId));
  86 + Map<Long, ProductSkuRespDTO> skuInfoMap = CollectionUtils.convertMap(skuInfos, ProductSkuRespDTO::getId);
87 87 checkSaleableAndStockFromSpu(skuInfoMap, items);
88 88  
89 89 // 商品SPU检查 sku可售状态,库存
90   - List<SpuInfoRespDTO> spuInfos = productSpuApi.getSpusByIds(CollectionUtils.convertSet(skuInfos, SkuInfoRespDTO::getSpuId));
  90 + List<SpuInfoRespDTO> spuInfos = productSpuApi.getSpuList(CollectionUtils.convertSet(skuInfos, ProductSkuRespDTO::getSpuId));
91 91 checkSaleableFromSpu(spuInfos);
92 92  
93 93 // 价格计算
... ... @@ -99,7 +99,7 @@ public class TradeOrderServiceImpl implements TradeOrderService {
99 99 tradeOrderMapper.insert(tradeOrderDO);
100 100  
101 101 // 订单项信息记录
102   - List<TradeOrderItemDO> tradeOrderItems = TradeOrderItemConvert.INSTANCE.convertList(priceResp.getItems());
  102 + List<TradeOrderItemDO> tradeOrderItems = TradeOrderItemConvert.INSTANCE.convertList(priceResp.getOrder().getItems());
103 103 //-填充订单项-SKU信息
104 104 fillItemsInfoFromSkuAndOrder(tradeOrderDO, tradeOrderItems, skuInfoMap);
105 105 tradeOrderItemMapper.insertBatch(tradeOrderItems);
... ... @@ -156,13 +156,13 @@ public class TradeOrderServiceImpl implements TradeOrderService {
156 156 }
157 157  
158 158 private void fillItemsInfoFromSkuAndOrder(TradeOrderDO tradeOrderDO, List<TradeOrderItemDO> tradeOrderItems,
159   - Map<Long, SkuInfoRespDTO> spuInfos) {
  159 + Map<Long, ProductSkuRespDTO> spuInfos) {
160 160 for (TradeOrderItemDO tradeOrderItem : tradeOrderItems) {
161 161 // 填充订单信息
162 162 tradeOrderItem.setOrderId(tradeOrderDO.getId());
163 163 tradeOrderItem.setUserId(tradeOrderDO.getUserId());
164 164 // 填充SKU信息
165   - SkuInfoRespDTO skuInfoRespDTO = spuInfos.get(tradeOrderItem.getSkuId());
  165 + ProductSkuRespDTO skuInfoRespDTO = spuInfos.get(tradeOrderItem.getSkuId());
166 166 tradeOrderItem.setSpuId(skuInfoRespDTO.getSpuId());
167 167 tradeOrderItem.setPicUrl(skuInfoRespDTO.getPicUrl());
168 168 tradeOrderItem.setName(skuInfoRespDTO.getName());
... ... @@ -182,14 +182,14 @@ public class TradeOrderServiceImpl implements TradeOrderService {
182 182 }
183 183 }
184 184  
185   - private void checkSaleableAndStockFromSpu(Map<Long, SkuInfoRespDTO> skuInfoMap,
  185 + private void checkSaleableAndStockFromSpu(Map<Long, ProductSkuRespDTO> skuInfoMap,
186 186 List<Item> items) {
187 187 // sku 不存在
188 188 if (items.size() != skuInfoMap.size()) {
189 189 throw ServiceExceptionUtil.exception(ErrorCodeConstants.ORDER_SKU_NOT_FOUND);
190 190 }
191 191 for (Item item : items) {
192   - SkuInfoRespDTO skuInfoDTO = skuInfoMap.get(item.getSkuId());
  192 + ProductSkuRespDTO skuInfoDTO = skuInfoMap.get(item.getSkuId());
193 193 // sku禁用
194 194 if (!Objects.equals(CommonStatusEnum.ENABLE.getStatus(), skuInfoDTO.getStatus())) {
195 195 throw ServiceExceptionUtil.exception(ErrorCodeConstants.ORDER_SKU_NOT_SALE);
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderServiceTest.java
... ... @@ -6,7 +6,7 @@ import cn.iocoder.yudao.module.market.api.price.PriceApi;
6 6 import cn.iocoder.yudao.module.market.api.price.dto.PriceCalculateRespDTO;
7 7 import cn.iocoder.yudao.module.pay.api.order.PayOrderApi;
8 8 import cn.iocoder.yudao.module.product.api.sku.ProductSkuApi;
9   -import cn.iocoder.yudao.module.product.api.sku.dto.SkuInfoRespDTO;
  9 +import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO;
10 10 import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
11 11 import cn.iocoder.yudao.module.product.api.spu.dto.SpuInfoRespDTO;
12 12 import cn.iocoder.yudao.module.trade.controller.app.order.vo.AppTradeOrderCreateReqVO;
... ... @@ -60,21 +60,21 @@ class TradeOrderServiceTest extends BaseDbUnitTest {
60 60 spuInfo.setId(1L);
61 61 spuInfo.setStatus(CommonStatusEnum.ENABLE.getStatus());
62 62 });
63   - when(productSpuApi.getSpusByIds(Collections.singleton(1L))).thenReturn(Lists.newArrayList(spuInfoRespDTO));
  63 + when(productSpuApi.getSpuList(Collections.singleton(1L))).thenReturn(Lists.newArrayList(spuInfoRespDTO));
64 64 // mock 商品SkU数据
65   - SkuInfoRespDTO skuInfoRespDTO = randomPojo(SkuInfoRespDTO.class, skuInfo -> {
  65 + ProductSkuRespDTO skuInfoRespDTO = randomPojo(ProductSkuRespDTO.class, skuInfo -> {
66 66 skuInfo.setId(1L);
67 67 skuInfo.setStatus(CommonStatusEnum.ENABLE.getStatus());
68 68 skuInfo.setStock(randomInteger());
69 69 skuInfo.setSpuId(1L);
70 70 });
71   - when(productSkuApi.getSkusByIds(Collections.singleton(1L))).thenReturn(Lists.newArrayList(skuInfoRespDTO));
  71 + when(productSkuApi.getSkuList(Collections.singleton(1L))).thenReturn(Lists.newArrayList(skuInfoRespDTO));
72 72 // mock 价格信息
73 73 PriceCalculateRespDTO calculateRespDTO = randomPojo(PriceCalculateRespDTO.class, priceCalculateRespDTO -> {
74   - PriceCalculateRespDTO.Item item = priceCalculateRespDTO.getItems().get(0);
  74 + PriceCalculateRespDTO.OrderItem item = priceCalculateRespDTO.getOrder().getItems().get(0);
75 75 item.setSkuId(1L);
76 76 item.setCount(2);
77   - priceCalculateRespDTO.setItems(Collections.singletonList(item));
  77 + priceCalculateRespDTO.getOrder().setItems(Collections.singletonList(item));
78 78 });
79 79 when(priceApi.calculatePrice(any())).thenReturn(calculateRespDTO);
80 80 //mock 支付订单信息
... ... @@ -103,7 +103,7 @@ class TradeOrderServiceTest extends BaseDbUnitTest {
103 103 assertEquals(skuInfoRespDTO.getId(), tradeOrderItemDO.getSkuId());
104 104 assertEquals(1L, tradeOrderItemDO.getUserId());
105 105 //价格
106   - assertEquals(calculateRespDTO.getItems().get(0).getPresentPrice(), tradeOrderItemDO.getPresentPrice());
  106 + assertEquals(calculateRespDTO.getOrder().getItems().get(0).getPresentPrice(), tradeOrderItemDO.getPresentPrice());
107 107 }
108 108  
109 109 }
... ...