Commit 9cf470df9495e54db919f191dfb895cc1fe843cc
1 parent
f21ce954
创建交易订单-单元测试-冲突合并
Showing
4 changed files
with
18 additions
and
18 deletions
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 | } |