diff --git a/yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/sku/ProductSkuApi.java b/yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/sku/ProductSkuApi.java index 3581fdb913..f6e6034875 100644 --- a/yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/sku/ProductSkuApi.java +++ b/yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/sku/ProductSkuApi.java @@ -5,6 +5,9 @@ import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuUpdateStockReqDTO; import java.util.Collection; import java.util.List; +import java.util.Map; + +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap; /** * 商品 SKU API 接口 @@ -30,6 +33,16 @@ public interface ProductSkuApi { */ List getSkuList(Collection ids); + /** + * 批量查询 SKU MAP + * + * @param ids SKU 编号列表 + * @return SKU MAP + */ + default Map getSkuMap(Collection ids) { + return convertMap(getSkuList(ids), ProductSkuRespDTO::getId); + } + /** * 批量查询 SKU 数组 * diff --git a/yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/spu/ProductSpuApi.java b/yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/spu/ProductSpuApi.java index 64d24c399a..499a0ca896 100644 --- a/yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/spu/ProductSpuApi.java +++ b/yudao-module-mall/yudao-module-product-api/src/main/java/cn/iocoder/yudao/module/product/api/spu/ProductSpuApi.java @@ -30,7 +30,7 @@ public interface ProductSpuApi { * @param ids SPU 编号列表 * @return SPU MAP */ - default Map getSpusMap(Collection ids) { + default Map getSpuMap(Collection ids) { return convertMap(getSpuList(ids), ProductSpuRespDTO::getId); } diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/point/PointActivityController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/point/PointActivityController.java index d8fb54b081..f545db6f50 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/point/PointActivityController.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/point/PointActivityController.java @@ -124,7 +124,7 @@ public class PointActivityController { List products = pointActivityService.getPointProductListByActivityIds( convertSet(activityList, PointActivityDO::getId)); Map> productsMap = convertMultiMap(products, PointProductDO::getActivityId); - Map spuMap = productSpuApi.getSpusMap( + Map spuMap = productSpuApi.getSpuMap( convertSet(activityList, PointActivityDO::getSpuId)); List result = BeanUtils.toBean(activityList, PointActivityRespVO.class); result.forEach(activity -> { diff --git a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/point/AppPointActivityController.java b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/point/AppPointActivityController.java index c364b64f2a..9730056870 100644 --- a/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/point/AppPointActivityController.java +++ b/yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/point/AppPointActivityController.java @@ -104,7 +104,7 @@ public class AppPointActivityController { List products = pointActivityService.getPointProductListByActivityIds( convertSet(activityList, PointActivityDO::getId)); Map> productsMap = convertMultiMap(products, PointProductDO::getActivityId); - Map spuMap = productSpuApi.getSpusMap( + Map spuMap = productSpuApi.getSpuMap( convertSet(activityList, PointActivityDO::getSpuId)); List result = BeanUtils.toBean(activityList, AppPointActivityRespVO.class); result.forEach(activity -> { diff --git a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBrokerageOrderHandler.java b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBrokerageOrderHandler.java index 026d98c238..36d31402eb 100644 --- a/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBrokerageOrderHandler.java +++ b/yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/handler/TradeBrokerageOrderHandler.java @@ -20,6 +20,7 @@ import org.springframework.stereotype.Component; import jakarta.annotation.Resource; import java.util.List; +import java.util.Map; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; @@ -101,13 +102,17 @@ public class TradeBrokerageOrderHandler implements TradeOrderHandler { protected void addBrokerage(Long userId, List orderItems) { MemberUserRespDTO user = memberUserApi.getUser(userId); Assert.notNull(user); - ProductSpuRespDTO spu = productSpuApi.getSpu(orderItems.get(0).getSpuId()); - Assert.notNull(spu); - ProductSkuRespDTO sku = productSkuApi.getSku(orderItems.get(0).getSkuId()); + Map spusMap = productSpuApi.getSpuMap(convertList(orderItems, TradeOrderItemDO::getSpuId)); + Map skusMap = productSkuApi.getSkuMap(convertList(orderItems, TradeOrderItemDO::getSkuId)); // 每一个订单项,都会去生成分销记录 - List addList = convertList(orderItems, - item -> TradeOrderConvert.INSTANCE.convert(user, item, spu, sku)); + List addList = convertList(orderItems, item -> { + ProductSpuRespDTO spu = spusMap.get(item.getSpuId()); + Assert.notNull(spu); + ProductSkuRespDTO sku = skusMap.get(item.getSkuId()); + Assert.notNull(sku); + return TradeOrderConvert.INSTANCE.convert(user, item, spu, sku); + }); brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, addList); }