Commit 39a6eb4792b11df14100a65573a52bc3419c86bb

Authored by 卢越
1 parent efd0a860

【代码优化】拼团活动和SPU详情分开查询

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/CombinationActivityController.java
@@ -100,32 +100,19 @@ public class CombinationActivityController { @@ -100,32 +100,19 @@ public class CombinationActivityController {
100 // 转换活动列表 100 // 转换活动列表
101 List<CombinationActivityRespVO> activityVOs = CombinationActivityConvert.INSTANCE.convertList(activities); 101 List<CombinationActivityRespVO> activityVOs = CombinationActivityConvert.INSTANCE.convertList(activities);
102 102
103 - // 获取商品SPU列表和拼团产品列表  
104 - Set<Long> spuIds = activities.stream().map(CombinationActivityDO::getSpuId).collect(Collectors.toSet());  
105 - List<ProductSpuRespDTO> spuList = productSpuApi.getSpuList(spuIds);  
106 - 103 + // 获取拼团产品列表
107 Set<Long> activityIds = activities.stream().map(CombinationActivityDO::getId).collect(Collectors.toSet()); 104 Set<Long> activityIds = activities.stream().map(CombinationActivityDO::getId).collect(Collectors.toSet());
108 List<CombinationProductDO> productList = combinationActivityService.getCombinationProductListByActivityIds(activityIds); 105 List<CombinationProductDO> productList = combinationActivityService.getCombinationProductListByActivityIds(activityIds);
109 106
110 // 创建SPU和产品的映射 107 // 创建SPU和产品的映射
111 - Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId);  
112 Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId); 108 Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId);
113 109
114 - // 更新VO列表  
115 - activityVOs.forEach(vo -> {  
116 - ProductSpuRespDTO spu = spuMap.get(vo.getSpuId());  
117 - if (spu != null) {  
118 - vo.setSpuName(spu.getName())  
119 - .setPicUrl(spu.getPicUrl())  
120 - .setMarketPrice(spu.getMarketPrice());  
121 - }  
122 - vo.setProducts(CombinationActivityConvert.INSTANCE.convertList2(productMap.get(vo.getId())));  
123 - }); 110 + // 往活动VO赋值产品列表
  111 + activityVOs.forEach(vo -> vo.setProducts(CombinationActivityConvert.INSTANCE.convertList2(productMap.get(vo.getId()))));
124 112
125 return success(activityVOs); 113 return success(activityVOs);
126 } 114 }
127 115
128 -  
129 @GetMapping("/page") 116 @GetMapping("/page")
130 @Operation(summary = "获得拼团活动分页") 117 @Operation(summary = "获得拼团活动分页")
131 @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')") 118 @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')")
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/activity/CombinationActivityRespVO.java
@@ -27,16 +27,4 @@ public class CombinationActivityRespVO extends CombinationActivityBaseVO { @@ -27,16 +27,4 @@ public class CombinationActivityRespVO extends CombinationActivityBaseVO {
27 @Schema(description = "拼团商品", requiredMode = Schema.RequiredMode.REQUIRED) 27 @Schema(description = "拼团商品", requiredMode = Schema.RequiredMode.REQUIRED)
28 private List<CombinationProductRespVO> products; 28 private List<CombinationProductRespVO> products;
29 29
30 - // ========== 商品字段 ==========  
31 -  
32 - @Schema(description = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 name 读取  
33 - example = "618大促")  
34 - private String spuName;  
35 - @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 picUrl 读取  
36 - example = "https://www.iocoder.cn/xx.png")  
37 - private String picUrl;  
38 - @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 marketPrice 读取  
39 - example = "50")  
40 - private Integer marketPrice;  
41 -  
42 } 30 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/combination/AppCombinationActivityController.java
1 package cn.iocoder.yudao.module.promotion.controller.app.combination; 1 package cn.iocoder.yudao.module.promotion.controller.app.combination;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.hutool.core.collection.ListUtil;
4 import cn.hutool.core.util.ObjectUtil; 5 import cn.hutool.core.util.ObjectUtil;
5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 6 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
6 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 7 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
@@ -126,9 +127,9 @@ public class AppCombinationActivityController { @@ -126,9 +127,9 @@ public class AppCombinationActivityController {
126 !ObjectUtil.equal(combinationActivityDO.getStatus(), CommonStatusEnum.DISABLE.getStatus())) 127 !ObjectUtil.equal(combinationActivityDO.getStatus(), CommonStatusEnum.DISABLE.getStatus()))
127 .toList(); 128 .toList();
128 129
129 - // 如果没有有效的活动,返回 null 或者适当的错误信息 130 + // 如果没有有效的活动,返回空列表
130 if (validActivities.isEmpty()) { 131 if (validActivities.isEmpty()) {
131 - return success(null); 132 + return success(ListUtil.empty());
132 } 133 }
133 134
134 // 2. 构建结果列表 135 // 2. 构建结果列表