mirror of
				https://github.com/YunaiV/ruoyi-vue-pro.git
				synced 2025-10-31 18:49:06 +08:00 
			
		
		
		
	【代码优化】拼团活动:优化拼团活动列表的获取
This commit is contained in:
		| @ -1,6 +1,7 @@ | |||||||
| package cn.iocoder.yudao.module.promotion.controller.admin.combination; | package cn.iocoder.yudao.module.promotion.controller.admin.combination; | ||||||
|  |  | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
|  | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi; | import cn.iocoder.yudao.module.product.api.spu.ProductSpuApi; | ||||||
| @ -22,15 +23,15 @@ import org.springframework.security.access.prepost.PreAuthorize; | |||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
|  |  | ||||||
| import java.util.Collection; | import java.util.Collections; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| import java.util.Set; | import java.util.Set; | ||||||
| import java.util.stream.Collectors; |  | ||||||
|  |  | ||||||
| import static cn.hutool.core.collection.CollectionUtil.newArrayList; | import static cn.hutool.core.collection.CollectionUtil.newArrayList; | ||||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.*; | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||||||
|  | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertSet; | ||||||
|  |  | ||||||
| @Tag(name = "管理后台 - 拼团活动") | @Tag(name = "管理后台 - 拼团活动") | ||||||
| @RestController | @RestController | ||||||
| @ -89,28 +90,21 @@ public class CombinationActivityController { | |||||||
|         return success(CombinationActivityConvert.INSTANCE.convert(activity, products)); |         return success(CombinationActivityConvert.INSTANCE.convert(activity, products)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @GetMapping("/detail-list") |     @GetMapping("/list-by-ids") | ||||||
|     @Operation(summary = "获得拼团活动详情列表") |     @Operation(summary = "获得拼团活动列表,基于活动编号数组") | ||||||
|     @Parameter(name = "ids", description = "拼团活动编号列表", required = true, example = "[1,2,3]") |     @Parameter(name = "ids", description = "活动编号数组", required = true, example = "[1024, 1025]") | ||||||
|     @PreAuthorize("@ss.hasPermission('product:spu:query')") |     public CommonResult<List<CombinationActivityRespVO>> getCombinationActivityListByIds(@RequestParam("ids") List<Long> ids) { | ||||||
|     public CommonResult<List<CombinationActivityRespVO>> getCombinationActivityDetailList(@RequestParam("ids") Collection<Long> ids) { |         // 1. 获得开启的活动列表 | ||||||
|         // 查询拼团活动列表 |         List<CombinationActivityDO> activityList = combinationActivityService.getCombinationActivityListByIds(ids); | ||||||
|         List<CombinationActivityDO> activities = combinationActivityService.getCombinationActivityListByIds(ids); |         activityList.removeIf(activity -> CommonStatusEnum.isDisable(activity.getStatus())); | ||||||
|  |         if (CollUtil.isEmpty(activityList)) { | ||||||
|         // 转换活动列表 |             return success(Collections.emptyList()); | ||||||
|         List<CombinationActivityRespVO> activityVOs = CombinationActivityConvert.INSTANCE.convertList(activities); |         } | ||||||
|  |         // 2. 拼接返回 | ||||||
|         // 获取拼团产品列表 |         List<CombinationProductDO> productList = combinationActivityService.getCombinationProductListByActivityIds( | ||||||
|         Set<Long> activityIds = activities.stream().map(CombinationActivityDO::getId).collect(Collectors.toSet()); |                 convertList(activityList, CombinationActivityDO::getId)); | ||||||
|         List<CombinationProductDO> productList = combinationActivityService.getCombinationProductListByActivityIds(activityIds); |         List<ProductSpuRespDTO> spuList = productSpuApi.getSpuList(convertList(activityList, CombinationActivityDO::getSpuId)); | ||||||
|  |         return success(CombinationActivityConvert.INSTANCE.convertList(activityList, productList, spuList)); | ||||||
|         // 创建SPU和产品的映射 |  | ||||||
|         Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId); |  | ||||||
|  |  | ||||||
|         // 往活动VO赋值产品列表 |  | ||||||
|         activityVOs.forEach(vo -> vo.setProducts(CombinationActivityConvert.INSTANCE.convertList2(productMap.get(vo.getId())))); |  | ||||||
|  |  | ||||||
|         return success(activityVOs); |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @GetMapping("/page") |     @GetMapping("/page") | ||||||
|  | |||||||
| @ -27,4 +27,14 @@ public class CombinationActivityRespVO extends CombinationActivityBaseVO { | |||||||
|     @Schema(description = "拼团商品", requiredMode = Schema.RequiredMode.REQUIRED) |     @Schema(description = "拼团商品", requiredMode = Schema.RequiredMode.REQUIRED) | ||||||
|     private List<CombinationProductRespVO> products; |     private List<CombinationProductRespVO> products; | ||||||
|  |  | ||||||
|  |     @Schema(description = "商品 SPU 名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "一个白菜") | ||||||
|  |     private String spuName; // 从 SPU 的 name 读取 | ||||||
|  |     @Schema(description = "商品图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096") | ||||||
|  |     private String picUrl; // 从 SPU 的 picUrl 读取 | ||||||
|  |     @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "50") | ||||||
|  |     private Integer marketPrice; // 从 SPU 的 marketPrice 读取 | ||||||
|  |  | ||||||
|  |     @Schema(description = "拼团金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") | ||||||
|  |     private Integer combinationPrice; // 从 products 获取最小 price 读取 | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -1,7 +1,6 @@ | |||||||
| package cn.iocoder.yudao.module.promotion.controller.app.combination; | package cn.iocoder.yudao.module.promotion.controller.app.combination; | ||||||
|  |  | ||||||
| import cn.hutool.core.collection.CollUtil; | import cn.hutool.core.collection.CollUtil; | ||||||
| import cn.hutool.core.collection.ListUtil; |  | ||||||
| import cn.hutool.core.util.ObjectUtil; | import cn.hutool.core.util.ObjectUtil; | ||||||
| import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum; | ||||||
| import cn.iocoder.yudao.framework.common.pojo.CommonResult; | import cn.iocoder.yudao.framework.common.pojo.CommonResult; | ||||||
| @ -15,28 +14,20 @@ import cn.iocoder.yudao.module.promotion.convert.combination.CombinationActivity | |||||||
| import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; | import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationActivityDO; | ||||||
| import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationProductDO; | import cn.iocoder.yudao.module.promotion.dal.dataobject.combination.CombinationProductDO; | ||||||
| import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService; | import cn.iocoder.yudao.module.promotion.service.combination.CombinationActivityService; | ||||||
| import com.google.common.cache.CacheLoader; |  | ||||||
| import com.google.common.cache.LoadingCache; |  | ||||||
| import io.swagger.v3.oas.annotations.Operation; | import io.swagger.v3.oas.annotations.Operation; | ||||||
| import io.swagger.v3.oas.annotations.Parameter; | import io.swagger.v3.oas.annotations.Parameter; | ||||||
| import io.swagger.v3.oas.annotations.tags.Tag; | import io.swagger.v3.oas.annotations.tags.Tag; | ||||||
|  | import jakarta.annotation.Resource; | ||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
| import org.springframework.web.bind.annotation.GetMapping; | import org.springframework.web.bind.annotation.GetMapping; | ||||||
| import org.springframework.web.bind.annotation.RequestMapping; | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
| import org.springframework.web.bind.annotation.RequestParam; | import org.springframework.web.bind.annotation.RequestParam; | ||||||
| import org.springframework.web.bind.annotation.RestController; | import org.springframework.web.bind.annotation.RestController; | ||||||
|  |  | ||||||
| import jakarta.annotation.Resource; |  | ||||||
|  |  | ||||||
| import java.time.Duration; |  | ||||||
| import java.util.ArrayList; |  | ||||||
| import java.util.Collection; |  | ||||||
| import java.util.Collections; | import java.util.Collections; | ||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.stream.Collectors; |  | ||||||
|  |  | ||||||
| import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | ||||||
| import static cn.iocoder.yudao.framework.common.util.cache.CacheUtils.buildAsyncReloadingCache; |  | ||||||
| import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; | ||||||
|  |  | ||||||
| @Tag(name = "用户 APP - 拼团活动") | @Tag(name = "用户 APP - 拼团活动") | ||||||
| @ -45,45 +36,12 @@ import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils. | |||||||
| @Validated | @Validated | ||||||
| public class AppCombinationActivityController { | public class AppCombinationActivityController { | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * {@link AppCombinationActivityRespVO} 缓存,通过它异步刷新 {@link #getCombinationActivityList0(Integer)} 所要的首页数据 |  | ||||||
|      */ |  | ||||||
|     private final LoadingCache<Integer, List<AppCombinationActivityRespVO>> combinationActivityListCache = buildAsyncReloadingCache(Duration.ofSeconds(10L), |  | ||||||
|             new CacheLoader<Integer, List<AppCombinationActivityRespVO>>() { |  | ||||||
|  |  | ||||||
|                 @Override |  | ||||||
|                 public List<AppCombinationActivityRespVO> load(Integer count) { |  | ||||||
|                     return getCombinationActivityList0(count); |  | ||||||
|                 } |  | ||||||
|  |  | ||||||
|             }); |  | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private CombinationActivityService activityService; |     private CombinationActivityService activityService; | ||||||
|  |  | ||||||
|     @Resource |     @Resource | ||||||
|     private ProductSpuApi spuApi; |     private ProductSpuApi spuApi; | ||||||
|  |  | ||||||
|     @GetMapping("/list") |  | ||||||
|     @Operation(summary = "获得拼团活动列表", description = "用于小程序首页") |  | ||||||
|     @Parameter(name = "count", description = "需要展示的数量", example = "6") |  | ||||||
|     public CommonResult<List<AppCombinationActivityRespVO>> getCombinationActivityList( |  | ||||||
|             @RequestParam(name = "count", defaultValue = "6") Integer count) { |  | ||||||
|         return success(combinationActivityListCache.getUnchecked(count)); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     private List<AppCombinationActivityRespVO> getCombinationActivityList0(Integer count) { |  | ||||||
|         List<CombinationActivityDO> activityList = activityService.getCombinationActivityListByCount(count); |  | ||||||
|         if (CollUtil.isEmpty(activityList)) { |  | ||||||
|             return Collections.emptyList(); |  | ||||||
|         } |  | ||||||
|         // 拼接返回 |  | ||||||
|         List<CombinationProductDO> productList = activityService.getCombinationProductListByActivityIds( |  | ||||||
|                 convertList(activityList, CombinationActivityDO::getId)); |  | ||||||
|         List<ProductSpuRespDTO> spuList = spuApi.getSpuList(convertList(activityList, CombinationActivityDO::getSpuId)); |  | ||||||
|         return CombinationActivityConvert.INSTANCE.convertAppList(activityList, productList, spuList); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @GetMapping("/page") |     @GetMapping("/page") | ||||||
|     @Operation(summary = "获得拼团活动分页") |     @Operation(summary = "获得拼团活动分页") | ||||||
|     public CommonResult<PageResult<AppCombinationActivityRespVO>> getCombinationActivityPage(PageParam pageParam) { |     public CommonResult<PageResult<AppCombinationActivityRespVO>> getCombinationActivityPage(PageParam pageParam) { | ||||||
| @ -98,6 +56,23 @@ public class AppCombinationActivityController { | |||||||
|         return success(CombinationActivityConvert.INSTANCE.convertAppPage(pageResult, productList, spuList)); |         return success(CombinationActivityConvert.INSTANCE.convertAppPage(pageResult, productList, spuList)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @GetMapping("/list-by-ids") | ||||||
|  |     @Operation(summary = "获得拼团活动列表,基于活动编号数组") | ||||||
|  |     @Parameter(name = "ids", description = "活动编号数组", required = true, example = "[1024, 1025]") | ||||||
|  |     public CommonResult<List<AppCombinationActivityRespVO>> getCombinationActivityListByIds(@RequestParam("ids") List<Long> ids) { | ||||||
|  |         // 1. 获得开启的活动列表 | ||||||
|  |         List<CombinationActivityDO> activityList = activityService.getCombinationActivityListByIds(ids); | ||||||
|  |         activityList.removeIf(activity -> CommonStatusEnum.isDisable(activity.getStatus())); | ||||||
|  |         if (CollUtil.isEmpty(activityList)) { | ||||||
|  |             return success(Collections.emptyList()); | ||||||
|  |         } | ||||||
|  |         // 2. 拼接返回 | ||||||
|  |         List<CombinationProductDO> productList = activityService.getCombinationProductListByActivityIds( | ||||||
|  |                 convertList(activityList, CombinationActivityDO::getId)); | ||||||
|  |         List<ProductSpuRespDTO> spuList = spuApi.getSpuList(convertList(activityList, CombinationActivityDO::getSpuId)); | ||||||
|  |         return success(CombinationActivityConvert.INSTANCE.convertAppList(activityList, productList, spuList)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @GetMapping("/get-detail") |     @GetMapping("/get-detail") | ||||||
|     @Operation(summary = "获得拼团活动明细") |     @Operation(summary = "获得拼团活动明细") | ||||||
|     @Parameter(name = "id", description = "活动编号", required = true, example = "1024") |     @Parameter(name = "id", description = "活动编号", required = true, example = "1024") | ||||||
| @ -114,38 +89,4 @@ public class AppCombinationActivityController { | |||||||
|         return success(CombinationActivityConvert.INSTANCE.convert3(activity, products)); |         return success(CombinationActivityConvert.INSTANCE.convert3(activity, products)); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @GetMapping("/detail-list") |  | ||||||
|     @Operation(summary = "获得拼团活动明细") |  | ||||||
|     @Parameter(name = "ids", description = "活动编号列表", required = true, example = "[1024, 1025]") |  | ||||||
|     public CommonResult<List<AppCombinationActivityDetailRespVO>> getCombinationActivityDetailList(@RequestParam("ids") Collection<Long> ids) { |  | ||||||
|         // 1. 获取活动 |  | ||||||
|         List<CombinationActivityDO> combinationActivityDOList = activityService.getCombinationActivityListByIds(ids); |  | ||||||
|  |  | ||||||
|         // 过滤掉无效的活动 |  | ||||||
|         List<CombinationActivityDO> validActivities = combinationActivityDOList.stream() |  | ||||||
|                 .filter(combinationActivityDO -> combinationActivityDO != null && |  | ||||||
|                         !ObjectUtil.equal(combinationActivityDO.getStatus(), CommonStatusEnum.DISABLE.getStatus())) |  | ||||||
|                 .toList(); |  | ||||||
|  |  | ||||||
|         // 如果没有有效的活动,返回空列表 |  | ||||||
|         if (validActivities.isEmpty()) { |  | ||||||
|             return success(ListUtil.empty()); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // 2. 构建结果列表 |  | ||||||
|         List<AppCombinationActivityDetailRespVO> detailRespVOList = new ArrayList<>(); |  | ||||||
|         for (CombinationActivityDO activity : validActivities) { |  | ||||||
|             // 获取活动商品 |  | ||||||
|             List<CombinationProductDO> products = activityService.getCombinationProductsByActivityId(activity.getId()); |  | ||||||
|  |  | ||||||
|             // 调用转换方法并添加到结果列表 |  | ||||||
|             AppCombinationActivityDetailRespVO detailRespVO = CombinationActivityConvert.INSTANCE.convert3(activity, products); |  | ||||||
|             detailRespVOList.add(detailRespVO); |  | ||||||
|         } |  | ||||||
|  |  | ||||||
|         // 3. 返回转换后的结果 |  | ||||||
|         return success(detailRespVOList); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -19,15 +19,14 @@ public class AppCombinationActivityRespVO { | |||||||
|     @Schema(description = "商品 SPU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") |     @Schema(description = "商品 SPU 编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "2048") | ||||||
|     private Long spuId; |     private Long spuId; | ||||||
|  |  | ||||||
|  |     @Schema(description = "商品 SPU 名字", requiredMode = Schema.RequiredMode.REQUIRED, example = "一个白菜") | ||||||
|  |     private String spuName; // 从 SPU 的 name 读取 | ||||||
|     @Schema(description = "商品图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096") |     @Schema(description = "商品图片", requiredMode = Schema.RequiredMode.REQUIRED, example = "4096") | ||||||
|     // 从 SPU 的 picUrl 读取 |     private String picUrl; // 从 SPU 的 picUrl 读取 | ||||||
|     private String picUrl; |  | ||||||
|  |  | ||||||
|     @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "50") |     @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "50") | ||||||
|     // 从 SPU 的 marketPrice 读取 |     private Integer marketPrice; // 从 SPU 的 marketPrice 读取 | ||||||
|     private Integer marketPrice; |  | ||||||
|  |  | ||||||
|     @Schema(description = "拼团金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") |     @Schema(description = "拼团金额,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, example = "100") | ||||||
|     private Integer combinationPrice; |     private Integer combinationPrice; // 从 products 获取最小 price 读取 | ||||||
|  |  | ||||||
| } | } | ||||||
|  | |||||||
| @ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil; | |||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
| import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | ||||||
| import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | import cn.iocoder.yudao.framework.common.util.collection.MapUtils; | ||||||
|  | import cn.iocoder.yudao.framework.common.util.object.BeanUtils; | ||||||
| import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; | import cn.iocoder.yudao.module.member.api.user.dto.MemberUserRespDTO; | ||||||
| import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO; | import cn.iocoder.yudao.module.product.api.sku.dto.ProductSkuRespDTO; | ||||||
| import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO; | import cn.iocoder.yudao.module.product.api.spu.dto.ProductSpuRespDTO; | ||||||
| @ -127,40 +128,42 @@ public interface CombinationActivityConvert { | |||||||
|                 .setSpuName(spu.getName()).setPicUrl(sku.getPicUrl()); |                 .setSpuName(spu.getName()).setPicUrl(sku.getPicUrl()); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     List<AppCombinationActivityRespVO> convertAppList(List<CombinationActivityDO> list); |     default List<CombinationActivityRespVO> convertList(List<CombinationActivityDO> list, | ||||||
|  |                                                         List<CombinationProductDO> productList, | ||||||
|     default List<AppCombinationActivityRespVO> convertAppList(List<CombinationActivityDO> list, |                                                         List<ProductSpuRespDTO> spuList) { | ||||||
|                                                               List<CombinationProductDO> productList, |         List<CombinationActivityRespVO> activityList = BeanUtils.toBean(list, CombinationActivityRespVO.class); | ||||||
|                                                               List<ProductSpuRespDTO> spuList) { |  | ||||||
|         List<AppCombinationActivityRespVO> activityList = convertAppList(list); |  | ||||||
|         Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId); |         Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId); | ||||||
|         Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId); |         Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId); | ||||||
|         return CollectionUtils.convertList(activityList, item -> { |         return CollectionUtils.convertList(activityList, item -> { | ||||||
|             // 设置 product 信息 |             // 设置 product 信息 | ||||||
|             item.setCombinationPrice(getMinValue(productMap.get(item.getId()), CombinationProductDO::getCombinationPrice)); |             item.setCombinationPrice(getMinValue(productMap.get(item.getId()), CombinationProductDO::getCombinationPrice)); | ||||||
|             // 设置 SPU 信息 |             // 设置 SPU 信息 | ||||||
|             findAndThen(spuMap, item.getSpuId(), spu -> item.setPicUrl(spu.getPicUrl()).setMarketPrice(spu.getMarketPrice())); |             findAndThen(spuMap, item.getSpuId(), spu -> item.setSpuName(spu.getName()) | ||||||
|  |                     .setPicUrl(spu.getPicUrl()).setMarketPrice(spu.getMarketPrice())); | ||||||
|             return item; |             return item; | ||||||
|         }); |         }); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     PageResult<AppCombinationActivityRespVO> convertAppPage(PageResult<CombinationActivityDO> result); |     default List<AppCombinationActivityRespVO> convertAppList(List<CombinationActivityDO> list, | ||||||
|  |                                                               List<CombinationProductDO> productList, | ||||||
|  |                                                               List<ProductSpuRespDTO> spuList) { | ||||||
|  |         List<AppCombinationActivityRespVO> activityList = BeanUtils.toBean(list, AppCombinationActivityRespVO.class); | ||||||
|  |         Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId); | ||||||
|  |         Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId); | ||||||
|  |         return CollectionUtils.convertList(activityList, item -> { | ||||||
|  |             // 设置 product 信息 | ||||||
|  |             item.setCombinationPrice(getMinValue(productMap.get(item.getId()), CombinationProductDO::getCombinationPrice)); | ||||||
|  |             // 设置 SPU 信息 | ||||||
|  |             findAndThen(spuMap, item.getSpuId(), spu -> item.setSpuName(spu.getName()) | ||||||
|  |                     .setPicUrl(spu.getPicUrl()).setMarketPrice(spu.getMarketPrice())); | ||||||
|  |             return item; | ||||||
|  |         }); | ||||||
|  |     } | ||||||
|  |  | ||||||
|     default PageResult<AppCombinationActivityRespVO> convertAppPage(PageResult<CombinationActivityDO> result, |     default PageResult<AppCombinationActivityRespVO> convertAppPage(PageResult<CombinationActivityDO> result, | ||||||
|                                                                     List<CombinationProductDO> productList, |                                                                     List<CombinationProductDO> productList, | ||||||
|                                                                     List<ProductSpuRespDTO> spuList) { |                                                                     List<ProductSpuRespDTO> spuList) { | ||||||
|         PageResult<AppCombinationActivityRespVO> appPage = convertAppPage(result); |         return new PageResult<>(convertAppList(result.getList(), productList, spuList), result.getTotal()); | ||||||
|         Map<Long, ProductSpuRespDTO> spuMap = convertMap(spuList, ProductSpuRespDTO::getId); |  | ||||||
|         Map<Long, List<CombinationProductDO>> productMap = convertMultiMap(productList, CombinationProductDO::getActivityId); |  | ||||||
|         List<AppCombinationActivityRespVO> list = CollectionUtils.convertList(appPage.getList(), item -> { |  | ||||||
|             // 设置 product 信息 |  | ||||||
|             item.setCombinationPrice(getMinValue(productMap.get(item.getId()), CombinationProductDO::getCombinationPrice)); |  | ||||||
|             // 设置 SPU 信息 |  | ||||||
|             findAndThen(spuMap, item.getSpuId(), spu -> item.setPicUrl(spu.getPicUrl()).setMarketPrice(spu.getMarketPrice())); |  | ||||||
|             return item; |  | ||||||
|         }); |  | ||||||
|         appPage.setList(list); |  | ||||||
|         return appPage; |  | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     AppCombinationActivityDetailRespVO convert2(CombinationActivityDO combinationActivity); |     AppCombinationActivityDetailRespVO convert2(CombinationActivityDO combinationActivity); | ||||||
|  | |||||||
| @ -100,14 +100,6 @@ public interface CombinationActivityService { | |||||||
|      */ |      */ | ||||||
|     List<CombinationActivityDO> getCombinationActivityListByIds(Collection<Long> ids); |     List<CombinationActivityDO> getCombinationActivityListByIds(Collection<Long> ids); | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * 获取正在进行的活动分页数据 |  | ||||||
|      * |  | ||||||
|      * @param count 需要的数量 |  | ||||||
|      * @return 拼团活动分页 |  | ||||||
|      */ |  | ||||||
|     List<CombinationActivityDO> getCombinationActivityListByCount(Integer count); |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 获取正在进行的活动分页数据 |      * 获取正在进行的活动分页数据 | ||||||
|      * |      * | ||||||
|  | |||||||
| @ -225,11 +225,6 @@ public class CombinationActivityServiceImpl implements CombinationActivityServic | |||||||
|         return combinationActivityMapper.selectList(CombinationActivityDO::getId, ids); |         return combinationActivityMapper.selectList(CombinationActivityDO::getId, ids); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |  | ||||||
|     public List<CombinationActivityDO> getCombinationActivityListByCount(Integer count) { |  | ||||||
|         return combinationActivityMapper.selectListByStatus(CommonStatusEnum.ENABLE.getStatus(), count); |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public PageResult<CombinationActivityDO> getCombinationActivityPage(PageParam pageParam) { |     public PageResult<CombinationActivityDO> getCombinationActivityPage(PageParam pageParam) { | ||||||
|         return combinationActivityMapper.selectPage(pageParam, CommonStatusEnum.ENABLE.getStatus()); |         return combinationActivityMapper.selectPage(pageParam, CommonStatusEnum.ENABLE.getStatus()); | ||||||
|  | |||||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV