Commit ec76c1ae6ecb068a213ce635ce8af50bf5e670c7

Authored by YunaiV
1 parent 3395a3d8

fix:【MALL】修复 addBrokerage 创建分销记录时,每个订单项,生成分销记录

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; @@ -5,6 +5,9 @@ import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuUpdateStockReqDTO;
5 5
6 import java.util.Collection; 6 import java.util.Collection;
7 import java.util.List; 7 import java.util.List;
  8 +import java.util.Map;
  9 +
  10 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMap;
8 11
9 /** 12 /**
10 * 商品 SKU API 接口 13 * 商品 SKU API 接口
@@ -31,6 +34,16 @@ public interface ProductSkuApi { @@ -31,6 +34,16 @@ public interface ProductSkuApi {
31 List<ProductSkuRespDTO> getSkuList(Collection<Long> ids); 34 List<ProductSkuRespDTO> getSkuList(Collection<Long> ids);
32 35
33 /** 36 /**
  37 + * 批量查询 SKU MAP
  38 + *
  39 + * @param ids SKU 编号列表
  40 + * @return SKU MAP
  41 + */
  42 + default Map<Long, ProductSkuRespDTO> getSkuMap(Collection<Long> ids) {
  43 + return convertMap(getSkuList(ids), ProductSkuRespDTO::getId);
  44 + }
  45 +
  46 + /**
34 * 批量查询 SKU 数组 47 * 批量查询 SKU 数组
35 * 48 *
36 * @param spuIds SPU 编号列表 49 * @param spuIds SPU 编号列表
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 { @@ -30,7 +30,7 @@ public interface ProductSpuApi {
30 * @param ids SPU 编号列表 30 * @param ids SPU 编号列表
31 * @return SPU MAP 31 * @return SPU MAP
32 */ 32 */
33 - default Map<Long, ProductSpuRespDTO> getSpusMap(Collection<Long> ids) { 33 + default Map<Long, ProductSpuRespDTO> getSpuMap(Collection<Long> ids) {
34 return convertMap(getSpuList(ids), ProductSpuRespDTO::getId); 34 return convertMap(getSpuList(ids), ProductSpuRespDTO::getId);
35 } 35 }
36 36
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 { @@ -124,7 +124,7 @@ public class PointActivityController {
124 List<PointProductDO> products = pointActivityService.getPointProductListByActivityIds( 124 List<PointProductDO> products = pointActivityService.getPointProductListByActivityIds(
125 convertSet(activityList, PointActivityDO::getId)); 125 convertSet(activityList, PointActivityDO::getId));
126 Map<Long, List<PointProductDO>> productsMap = convertMultiMap(products, PointProductDO::getActivityId); 126 Map<Long, List<PointProductDO>> productsMap = convertMultiMap(products, PointProductDO::getActivityId);
127 - Map<Long, ProductSpuRespDTO> spuMap = productSpuApi.getSpusMap( 127 + Map<Long, ProductSpuRespDTO> spuMap = productSpuApi.getSpuMap(
128 convertSet(activityList, PointActivityDO::getSpuId)); 128 convertSet(activityList, PointActivityDO::getSpuId));
129 List<PointActivityRespVO> result = BeanUtils.toBean(activityList, PointActivityRespVO.class); 129 List<PointActivityRespVO> result = BeanUtils.toBean(activityList, PointActivityRespVO.class);
130 result.forEach(activity -> { 130 result.forEach(activity -> {
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 { @@ -104,7 +104,7 @@ public class AppPointActivityController {
104 List<PointProductDO> products = pointActivityService.getPointProductListByActivityIds( 104 List<PointProductDO> products = pointActivityService.getPointProductListByActivityIds(
105 convertSet(activityList, PointActivityDO::getId)); 105 convertSet(activityList, PointActivityDO::getId));
106 Map<Long, List<PointProductDO>> productsMap = convertMultiMap(products, PointProductDO::getActivityId); 106 Map<Long, List<PointProductDO>> productsMap = convertMultiMap(products, PointProductDO::getActivityId);
107 - Map<Long, ProductSpuRespDTO> spuMap = productSpuApi.getSpusMap( 107 + Map<Long, ProductSpuRespDTO> spuMap = productSpuApi.getSpuMap(
108 convertSet(activityList, PointActivityDO::getSpuId)); 108 convertSet(activityList, PointActivityDO::getSpuId));
109 List<AppPointActivityRespVO> result = BeanUtils.toBean(activityList, AppPointActivityRespVO.class); 109 List<AppPointActivityRespVO> result = BeanUtils.toBean(activityList, AppPointActivityRespVO.class);
110 result.forEach(activity -> { 110 result.forEach(activity -> {
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; @@ -20,6 +20,7 @@ import org.springframework.stereotype.Component;
20 20
21 import jakarta.annotation.Resource; 21 import jakarta.annotation.Resource;
22 import java.util.List; 22 import java.util.List;
  23 +import java.util.Map;
23 24
24 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; 25 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
25 26
@@ -101,13 +102,17 @@ public class TradeBrokerageOrderHandler implements TradeOrderHandler { @@ -101,13 +102,17 @@ public class TradeBrokerageOrderHandler implements TradeOrderHandler {
101 protected void addBrokerage(Long userId, List<TradeOrderItemDO> orderItems) { 102 protected void addBrokerage(Long userId, List<TradeOrderItemDO> orderItems) {
102 MemberUserRespDTO user = memberUserApi.getUser(userId); 103 MemberUserRespDTO user = memberUserApi.getUser(userId);
103 Assert.notNull(user); 104 Assert.notNull(user);
104 - ProductSpuRespDTO spu = productSpuApi.getSpu(orderItems.get(0).getSpuId());  
105 - Assert.notNull(spu);  
106 - ProductSkuRespDTO sku = productSkuApi.getSku(orderItems.get(0).getSkuId()); 105 + Map<Long, ProductSpuRespDTO> spusMap = productSpuApi.getSpuMap(convertList(orderItems, TradeOrderItemDO::getSpuId));
  106 + Map<Long, ProductSkuRespDTO> skusMap = productSkuApi.getSkuMap(convertList(orderItems, TradeOrderItemDO::getSkuId));
107 107
108 // 每一个订单项,都会去生成分销记录 108 // 每一个订单项,都会去生成分销记录
109 - List<BrokerageAddReqBO> addList = convertList(orderItems,  
110 - item -> TradeOrderConvert.INSTANCE.convert(user, item, spu, sku)); 109 + List<BrokerageAddReqBO> addList = convertList(orderItems, item -> {
  110 + ProductSpuRespDTO spu = spusMap.get(item.getSpuId());
  111 + Assert.notNull(spu);
  112 + ProductSkuRespDTO sku = skusMap.get(item.getSkuId());
  113 + Assert.notNull(sku);
  114 + return TradeOrderConvert.INSTANCE.convert(user, item, spu, sku);
  115 + });
111 brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, addList); 116 brokerageRecordService.addBrokerage(userId, BrokerageRecordBizTypeEnum.ORDER, addList);
112 } 117 }
113 118