Commit 39a6eb4792b11df14100a65573a52bc3419c86bb
1 parent
efd0a860
【代码优化】拼团活动和SPU详情分开查询
Showing
3 changed files
with
6 additions
and
30 deletions
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. 构建结果列表 |