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