Commit 73a7ccbd754fb1b77470fda682d6514a02d30b3a

Authored by YunaiV
1 parent 6d00b027

【代码优化】拼团活动:优化拼团活动列表的获取

yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/CombinationActivityController.java
1 package cn.iocoder.yudao.module.promotion.controller.admin.combination; 1 package cn.iocoder.yudao.module.promotion.controller.admin.combination;
2 2
3 import cn.hutool.core.collection.CollUtil; 3 import cn.hutool.core.collection.CollUtil;
  4 +import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
4 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 5 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
5 import cn.iocoder.yudao.framework.common.pojo.PageResult; 6 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi; 7 import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi;
@@ -22,15 +23,15 @@ import org.springframework.security.access.prepost.PreAuthorize; @@ -22,15 +23,15 @@ import org.springframework.security.access.prepost.PreAuthorize;
22 import org.springframework.validation.annotation.Validated; 23 import org.springframework.validation.annotation.Validated;
23 import org.springframework.web.bind.annotation.*; 24 import org.springframework.web.bind.annotation.*;
24 25
25 -import java.util.Collection; 26 +import java.util.Collections;
26 import java.util.List; 27 import java.util.List;
27 import java.util.Map; 28 import java.util.Map;
28 import java.util.Set; 29 import java.util.Set;
29 -import java.util.stream.Collectors;  
30 30
31 import static cn.hutool.core.collection.CollectionUtil.newArrayList; 31 import static cn.hutool.core.collection.CollectionUtil.newArrayList;
32 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 32 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
33 -import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; 33 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
  34 +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet;
34 35
35 @Tag(name = "管理后台 - 拼团活动") 36 @Tag(name = "管理后台 - 拼团活动")
36 @RestController 37 @RestController
@@ -89,28 +90,21 @@ public class CombinationActivityController { @@ -89,28 +90,21 @@ public class CombinationActivityController {
89 return success(CombinationActivityConvert.INSTANCE.convert(activity, products)); 90 return success(CombinationActivityConvert.INSTANCE.convert(activity, products));
90 } 91 }
91 92
92 - @GetMapping("/detail-list")  
93 - @Operation(summary = "获得拼团活动详情列表")  
94 - @Parameter(name = "ids", description = "拼团活动编号列表", required = true, example = "[1,2,3]")  
95 - @PreAuthorize("@ss.hasPermission('product:spu:query')")  
96 - public CommonResult<List<CombinationActivityRespVO>> getCombinationActivityDetailList(@RequestParam("ids") Collection<Long> ids) {  
97 - // 查询拼团活动列表  
98 - List<CombinationActivityDO> activities = combinationActivityService.getCombinationActivityListByIds(ids);  
99 -  
100 - // 转换活动列表  
101 - List<CombinationActivityRespVO> activityVOs = CombinationActivityConvert.INSTANCE.convertList(activities);  
102 -  
103 - // 获取拼团产品列表  
104 - Set<Long> activityIds = activities.stream().map(CombinationActivityDO::getId).collect(Collectors.toSet());  
105 - List<CombinationProductDO> productList = combinationActivityService.getCombinationProductListByActivityIds(activityIds);  
106 -  
107 - // 创建SPU和产品的映射  
108 - Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId);  
109 -  
110 - // 往活动VO赋值产品列表  
111 - activityVOs.forEach(vo -> vo.setProducts(CombinationActivityConvert.INSTANCE.convertList2(productMap.get(vo.getId()))));  
112 -  
113 - return success(activityVOs); 93 + @GetMapping("/list-by-ids")
  94 + @Operation(summary = "获得拼团活动列表,基于活动编号数组")
  95 + @Parameter(name = "ids", description = "活动编号数组", required = true, example = "[1024, 1025]")
  96 + public CommonResult<List<CombinationActivityRespVO>> getCombinationActivityListByIds(@RequestParam("ids") List<Long> ids) {
  97 + // 1. 获得开启的活动列表
  98 + List<CombinationActivityDO> activityList = combinationActivityService.getCombinationActivityListByIds(ids);
  99 + activityList.removeIf(activity -> CommonStatusEnum.isDisable(activity.getStatus()));
  100 + if (CollUtil.isEmpty(activityList)) {
  101 + return success(Collections.emptyList());
  102 + }
  103 + // 2. 拼接返回
  104 + List<CombinationProductDO> productList = combinationActivityService.getCombinationProductListByActivityIds(
  105 + convertList(activityList, CombinationActivityDO::getId));
  106 + List<ProductSpuRespDTO> spuList = productSpuApi.getSpuList(convertList(activityList, CombinationActivityDO::getSpuId));
  107 + return success(CombinationActivityConvert.INSTANCE.convertList(activityList, productList, spuList));
114 } 108 }
115 109
116 @GetMapping("/page") 110 @GetMapping("/page")
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/admin/combination/vo/activity/CombinationActivityRespVO.java
@@ -27,4 +27,14 @@ public class CombinationActivityRespVO extends CombinationActivityBaseVO { @@ -27,4 +27,14 @@ 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 + @Schema(description = "商品 SPU 名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "一个白菜")
  31 + private String spuName; // 从 SPU 的 name 读取
  32 + @Schema(description = "商品图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096")
  33 + private String picUrl; // 从 SPU 的 picUrl 读取
  34 + @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "50")
  35 + private Integer marketPrice; // 从 SPU 的 marketPrice 读取
  36 +
  37 + @Schema(description = "拼团金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
  38 + private Integer combinationPrice; // 从 products 获取最小 price 读取
  39 +
30 } 40 }
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;  
5 import cn.hutool.core.util.ObjectUtil; 4 import cn.hutool.core.util.ObjectUtil;
6 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; 5 import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
7 import cn.iocoder.yudao.framework.common.pojo.CommonResult; 6 import cn.iocoder.yudao.framework.common.pojo.CommonResult;
@@ -15,28 +14,20 @@ import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivity @@ -15,28 +14,20 @@ import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivity
15 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; 14 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO;
16 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationProductDO; 15 import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationProductDO;
17 import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService; 16 import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService;
18 -import com.google.common.cache.CacheLoader;  
19 -import com.google.common.cache.LoadingCache;  
20 import io.swagger.v3.oas.annotations.Operation; 17 import io.swagger.v3.oas.annotations.Operation;
21 import io.swagger.v3.oas.annotations.Parameter; 18 import io.swagger.v3.oas.annotations.Parameter;
22 import io.swagger.v3.oas.annotations.tags.Tag; 19 import io.swagger.v3.oas.annotations.tags.Tag;
  20 +import jakarta.annotation.Resource;
23 import org.springframework.validation.annotation.Validated; 21 import org.springframework.validation.annotation.Validated;
24 import org.springframework.web.bind.annotation.GetMapping; 22 import org.springframework.web.bind.annotation.GetMapping;
25 import org.springframework.web.bind.annotation.RequestMapping; 23 import org.springframework.web.bind.annotation.RequestMapping;
26 import org.springframework.web.bind.annotation.RequestParam; 24 import org.springframework.web.bind.annotation.RequestParam;
27 import org.springframework.web.bind.annotation.RestController; 25 import org.springframework.web.bind.annotation.RestController;
28 26
29 -import jakarta.annotation.Resource;  
30 -  
31 -import java.time.Duration;  
32 -import java.util.ArrayList;  
33 -import java.util.Collection;  
34 import java.util.Collections; 27 import java.util.Collections;
35 import java.util.List; 28 import java.util.List;
36 -import java.util.stream.Collectors;  
37 29
38 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; 30 import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success;
39 -import static cn.iocoder.yudao.framework.common.util.cache.CacheUtils.buildAsyncReloadingCache;  
40 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; 31 import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList;
41 32
42 @Tag(name = "用户 APP - 拼团活动") 33 @Tag(name = "用户 APP - 拼团活动")
@@ -45,45 +36,12 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils. @@ -45,45 +36,12 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.
45 @Validated 36 @Validated
46 public class AppCombinationActivityController { 37 public class AppCombinationActivityController {
47 38
48 - /**  
49 - * {@link AppCombinationActivityRespVO} 缓存,通过它异步刷新 {@link #getCombinationActivityList0(Integer)} 所要的首页数据  
50 - */  
51 - private final LoadingCache<Integer, List<AppCombinationActivityRespVO>> combinationActivityListCache = buildAsyncReloadingCache(Duration.ofSeconds(10L),  
52 - new CacheLoader<Integer, List<AppCombinationActivityRespVO>>() {  
53 -  
54 - @Override  
55 - public List<AppCombinationActivityRespVO> load(Integer count) {  
56 - return getCombinationActivityList0(count);  
57 - }  
58 -  
59 - });  
60 -  
61 @Resource 39 @Resource
62 private CombinationActivityService activityService; 40 private CombinationActivityService activityService;
63 41
64 @Resource 42 @Resource
65 private ProductSpuApi spuApi; 43 private ProductSpuApi spuApi;
66 44
67 - @GetMapping("/list")  
68 - @Operation(summary = "获得拼团活动列表", description = "用于小程序首页")  
69 - @Parameter(name = "count", description = "需要展示的数量", example = "6")  
70 - public CommonResult<List<AppCombinationActivityRespVO>> getCombinationActivityList(  
71 - @RequestParam(name = "count", defaultValue = "6") Integer count) {  
72 - return success(combinationActivityListCache.getUnchecked(count));  
73 - }  
74 -  
75 - private List<AppCombinationActivityRespVO> getCombinationActivityList0(Integer count) {  
76 - List<CombinationActivityDO> activityList = activityService.getCombinationActivityListByCount(count);  
77 - if (CollUtil.isEmpty(activityList)) {  
78 - return Collections.emptyList();  
79 - }  
80 - // 拼接返回  
81 - List<CombinationProductDO> productList = activityService.getCombinationProductListByActivityIds(  
82 - convertList(activityList, CombinationActivityDO::getId));  
83 - List<ProductSpuRespDTO> spuList = spuApi.getSpuList(convertList(activityList, CombinationActivityDO::getSpuId));  
84 - return CombinationActivityConvert.INSTANCE.convertAppList(activityList, productList, spuList);  
85 - }  
86 -  
87 @GetMapping("/page") 45 @GetMapping("/page")
88 @Operation(summary = "获得拼团活动分页") 46 @Operation(summary = "获得拼团活动分页")
89 public CommonResult<PageResult<AppCombinationActivityRespVO>> getCombinationActivityPage(PageParam pageParam) { 47 public CommonResult<PageResult<AppCombinationActivityRespVO>> getCombinationActivityPage(PageParam pageParam) {
@@ -98,6 +56,23 @@ public class AppCombinationActivityController { @@ -98,6 +56,23 @@ public class AppCombinationActivityController {
98 return success(CombinationActivityConvert.INSTANCE.convertAppPage(pageResult, productList, spuList)); 56 return success(CombinationActivityConvert.INSTANCE.convertAppPage(pageResult, productList, spuList));
99 } 57 }
100 58
  59 + @GetMapping("/list-by-ids")
  60 + @Operation(summary = "获得拼团活动列表,基于活动编号数组")
  61 + @Parameter(name = "ids", description = "活动编号数组", required = true, example = "[1024, 1025]")
  62 + public CommonResult<List<AppCombinationActivityRespVO>> getCombinationActivityListByIds(@RequestParam("ids") List<Long> ids) {
  63 + // 1. 获得开启的活动列表
  64 + List<CombinationActivityDO> activityList = activityService.getCombinationActivityListByIds(ids);
  65 + activityList.removeIf(activity -> CommonStatusEnum.isDisable(activity.getStatus()));
  66 + if (CollUtil.isEmpty(activityList)) {
  67 + return success(Collections.emptyList());
  68 + }
  69 + // 2. 拼接返回
  70 + List<CombinationProductDO> productList = activityService.getCombinationProductListByActivityIds(
  71 + convertList(activityList, CombinationActivityDO::getId));
  72 + List<ProductSpuRespDTO> spuList = spuApi.getSpuList(convertList(activityList, CombinationActivityDO::getSpuId));
  73 + return success(CombinationActivityConvert.INSTANCE.convertAppList(activityList, productList, spuList));
  74 + }
  75 +
101 @GetMapping("/get-detail") 76 @GetMapping("/get-detail")
102 @Operation(summary = "获得拼团活动明细") 77 @Operation(summary = "获得拼团活动明细")
103 @Parameter(name = "id", description = "活动编号", required = true, example = "1024") 78 @Parameter(name = "id", description = "活动编号", required = true, example = "1024")
@@ -114,38 +89,4 @@ public class AppCombinationActivityController { @@ -114,38 +89,4 @@ public class AppCombinationActivityController {
114 return success(CombinationActivityConvert.INSTANCE.convert3(activity, products)); 89 return success(CombinationActivityConvert.INSTANCE.convert3(activity, products));
115 } 90 }
116 91
117 - @GetMapping("/detail-list")  
118 - @Operation(summary = "获得拼团活动明细")  
119 - @Parameter(name = "ids", description = "活动编号列表", required = true, example = "[1024, 1025]")  
120 - public CommonResult<List<AppCombinationActivityDetailRespVO>> getCombinationActivityDetailList(@RequestParam("ids") Collection<Long> ids) {  
121 - // 1. 获取活动  
122 - List<CombinationActivityDO> combinationActivityDOList = activityService.getCombinationActivityListByIds(ids);  
123 -  
124 - // 过滤掉无效的活动  
125 - List<CombinationActivityDO> validActivities = combinationActivityDOList.stream()  
126 - .filter(combinationActivityDO -> combinationActivityDO != null &&  
127 - !ObjectUtil.equal(combinationActivityDO.getStatus(), CommonStatusEnum.DISABLE.getStatus()))  
128 - .toList();  
129 -  
130 - // 如果没有有效的活动,返回空列表  
131 - if (validActivities.isEmpty()) {  
132 - return success(ListUtil.empty());  
133 - }  
134 -  
135 - // 2. 构建结果列表  
136 - List<AppCombinationActivityDetailRespVO> detailRespVOList = new ArrayList<>();  
137 - for (CombinationActivityDO activity : validActivities) {  
138 - // 获取活动商品  
139 - List<CombinationProductDO> products = activityService.getCombinationProductsByActivityId(activity.getId());  
140 -  
141 - // 调用转换方法并添加到结果列表  
142 - AppCombinationActivityDetailRespVO detailRespVO = CombinationActivityConvert.INSTANCE.convert3(activity, products);  
143 - detailRespVOList.add(detailRespVO);  
144 - }  
145 -  
146 - // 3. 返回转换后的结果  
147 - return success(detailRespVOList);  
148 - }  
149 -  
150 -  
151 } 92 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/controller/app/combination/vo/activity/AppCombinationActivityRespVO.java
@@ -19,15 +19,14 @@ public class AppCombinationActivityRespVO { @@ -19,15 +19,14 @@ public class AppCombinationActivityRespVO {
19 @Schema(description = "商品 SPU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") 19 @Schema(description = "商品 SPU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048")
20 private Long spuId; 20 private Long spuId;
21 21
  22 + @Schema(description = "商品 SPU 名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "一个白菜")
  23 + private String spuName; // 从 SPU 的 name 读取
22 @Schema(description = "商品图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096") 24 @Schema(description = "商品图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096")
23 - // 从 SPU 的 picUrl 读取  
24 - private String picUrl;  
25 - 25 + private String picUrl; // 从 SPU 的 picUrl 读取
26 @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "50") 26 @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "50")
27 - // 从 SPU 的 marketPrice 读取  
28 - private Integer marketPrice; 27 + private Integer marketPrice; // 从 SPU 的 marketPrice 读取
29 28
30 @Schema(description = "拼团金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") 29 @Schema(description = "拼团金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100")
31 - private Integer combinationPrice; 30 + private Integer combinationPrice; // 从 products 获取最小 price 读取
32 31
33 } 32 }
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/convert/combination/CombinationActivityConvert.java
@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; @@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
4 import cn.iocoder.yudao.framework.common.pojo.PageResult; 4 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; 5 import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;
6 import cn.iocoder.yudao.framework.common.util.collection.MapUtils; 6 import cn.iocoder.yudao.framework.common.util.collection.MapUtils;
  7 +import cn.iocoder.yudao.framework.common.util.object.BeanUtils;
7 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; 8 import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO;
8 import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO; 9 import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO;
9 import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO; 10 import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO;
@@ -127,40 +128,42 @@ public interface CombinationActivityConvert { @@ -127,40 +128,42 @@ public interface CombinationActivityConvert {
127 .setSpuName(spu.getName()).setPicUrl(sku.getPicUrl()); 128 .setSpuName(spu.getName()).setPicUrl(sku.getPicUrl());
128 } 129 }
129 130
130 - List<AppCombinationActivityRespVO> convertAppList(List<CombinationActivityDO> list);  
131 -  
132 - default List<AppCombinationActivityRespVO> convertAppList(List<CombinationActivityDO> list,  
133 - List<CombinationProductDO> productList,  
134 - List<ProductSpuRespDTO> spuList) {  
135 - List<AppCombinationActivityRespVO> activityList = convertAppList(list); 131 + default List<CombinationActivityRespVO> convertList(List<CombinationActivityDO> list,
  132 + List<CombinationProductDO> productList,
  133 + List<ProductSpuRespDTO> spuList) {
  134 + List<CombinationActivityRespVO> activityList = BeanUtils.toBean(list, CombinationActivityRespVO.class);
136 Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId); 135 Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId);
137 Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId); 136 Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId);
138 return CollectionUtils.convertList(activityList, item -> { 137 return CollectionUtils.convertList(activityList, item -> {
139 // 设置 product 信息 138 // 设置 product 信息
140 item.setCombinationPrice(getMinValue(productMap.get(item.getId()), CombinationProductDO::getCombinationPrice)); 139 item.setCombinationPrice(getMinValue(productMap.get(item.getId()), CombinationProductDO::getCombinationPrice));
141 // 设置 SPU 信息 140 // 设置 SPU 信息
142 - findAndThen(spuMap, item.getSpuId(), spu -> item.setPicUrl(spu.getPicUrl()).setMarketPrice(spu.getMarketPrice())); 141 + findAndThen(spuMap, item.getSpuId(), spu -> item.setSpuName(spu.getName())
  142 + .setPicUrl(spu.getPicUrl()).setMarketPrice(spu.getMarketPrice()));
143 return item; 143 return item;
144 }); 144 });
145 } 145 }
146 146
147 - PageResult<AppCombinationActivityRespVO> convertAppPage(PageResult<CombinationActivityDO> result);  
148 -  
149 - default PageResult<AppCombinationActivityRespVO> convertAppPage(PageResult<CombinationActivityDO> result,  
150 - List<CombinationProductDO> productList,  
151 - List<ProductSpuRespDTO> spuList) {  
152 - PageResult<AppCombinationActivityRespVO> appPage = convertAppPage(result); 147 + default List<AppCombinationActivityRespVO> convertAppList(List<CombinationActivityDO> list,
  148 + List<CombinationProductDO> productList,
  149 + List<ProductSpuRespDTO> spuList) {
  150 + List<AppCombinationActivityRespVO> activityList = BeanUtils.toBean(list, AppCombinationActivityRespVO.class);
153 Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId); 151 Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId);
154 Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId); 152 Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId);
155 - List<AppCombinationActivityRespVO> list = CollectionUtils.convertList(appPage.getList(), item -> { 153 + return CollectionUtils.convertList(activityList, item -> {
156 // 设置 product 信息 154 // 设置 product 信息
157 item.setCombinationPrice(getMinValue(productMap.get(item.getId()), CombinationProductDO::getCombinationPrice)); 155 item.setCombinationPrice(getMinValue(productMap.get(item.getId()), CombinationProductDO::getCombinationPrice));
158 // 设置 SPU 信息 156 // 设置 SPU 信息
159 - findAndThen(spuMap, item.getSpuId(), spu -> item.setPicUrl(spu.getPicUrl()).setMarketPrice(spu.getMarketPrice())); 157 + findAndThen(spuMap, item.getSpuId(), spu -> item.setSpuName(spu.getName())
  158 + .setPicUrl(spu.getPicUrl()).setMarketPrice(spu.getMarketPrice()));
160 return item; 159 return item;
161 }); 160 });
162 - appPage.setList(list);  
163 - return appPage; 161 + }
  162 +
  163 + default PageResult<AppCombinationActivityRespVO> convertAppPage(PageResult<CombinationActivityDO> result,
  164 + List<CombinationProductDO> productList,
  165 + List<ProductSpuRespDTO> spuList) {
  166 + return new PageResult<>(convertAppList(result.getList(), productList, spuList), result.getTotal());
164 } 167 }
165 168
166 AppCombinationActivityDetailRespVO convert2(CombinationActivityDO combinationActivity); 169 AppCombinationActivityDetailRespVO convert2(CombinationActivityDO combinationActivity);
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityService.java
@@ -103,14 +103,6 @@ public interface CombinationActivityService { @@ -103,14 +103,6 @@ public interface CombinationActivityService {
103 /** 103 /**
104 * 获取正在进行的活动分页数据 104 * 获取正在进行的活动分页数据
105 * 105 *
106 - * @param count 需要的数量  
107 - * @return 拼团活动分页  
108 - */  
109 - List<CombinationActivityDO> getCombinationActivityListByCount(Integer count);  
110 -  
111 - /**  
112 - * 获取正在进行的活动分页数据  
113 - *  
114 * @param pageParam 分页请求 106 * @param pageParam 分页请求
115 * @return 拼团活动分页 107 * @return 拼团活动分页
116 */ 108 */
yudao-module-mall/yudao-module-promotion-biz/src/main/java/cn/iocoder/yudao/module/promotion/service/combination/CombinationActivityServiceImpl.java
@@ -226,11 +226,6 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic @@ -226,11 +226,6 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic
226 } 226 }
227 227
228 @Override 228 @Override
229 - public List<CombinationActivityDO> getCombinationActivityListByCount(Integer count) {  
230 - return combinationActivityMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus(), count);  
231 - }  
232 -  
233 - @Override  
234 public PageResult<CombinationActivityDO> getCombinationActivityPage(PageParam pageParam) { 229 public PageResult<CombinationActivityDO> getCombinationActivityPage(PageParam pageParam) {
235 return combinationActivityMapper.selectPage(pageParam, CommonStatusEnum.ENABLE.getStatus()); 230 return combinationActivityMapper.selectPage(pageParam, CommonStatusEnum.ENABLE.getStatus());
236 } 231 }