mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 12:18:42 +08:00 
			
		
		
		
	【代码优化】拼团活动和SPU详情分开查询
This commit is contained in:
		@@ -100,32 +100,19 @@ public class CombinationActivityController {
 | 
				
			|||||||
        // 转换活动列表
 | 
					        // 转换活动列表
 | 
				
			||||||
        List<CombinationActivityRespVO> activityVOs = CombinationActivityConvert.INSTANCE.convertList(activities);
 | 
					        List<CombinationActivityRespVO> activityVOs = CombinationActivityConvert.INSTANCE.convertList(activities);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 获取商品SPU列表和拼团产品列表
 | 
					        // 获取拼团产品列表
 | 
				
			||||||
        Set<Long> spuIds = activities.stream().map(CombinationActivityDO::getSpuId).collect(Collectors.toSet());
 | 
					 | 
				
			||||||
        List<ProductSpuRespDTO> spuList = productSpuApi.getSpuList(spuIds);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        Set<Long> activityIds = activities.stream().map(CombinationActivityDO::getId).collect(Collectors.toSet());
 | 
					        Set<Long> activityIds = activities.stream().map(CombinationActivityDO::getId).collect(Collectors.toSet());
 | 
				
			||||||
        List<CombinationProductDO> productList = combinationActivityService.getCombinationProductListByActivityIds(activityIds);
 | 
					        List<CombinationProductDO> productList = combinationActivityService.getCombinationProductListByActivityIds(activityIds);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 创建SPU和产品的映射
 | 
					        // 创建SPU和产品的映射
 | 
				
			||||||
        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);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 更新VO列表
 | 
					        // 往活动VO赋值产品列表
 | 
				
			||||||
        activityVOs.forEach(vo -> {
 | 
					        activityVOs.forEach(vo -> vo.setProducts(CombinationActivityConvert.INSTANCE.convertList2(productMap.get(vo.getId()))));
 | 
				
			||||||
            ProductSpuRespDTO spu = spuMap.get(vo.getSpuId());
 | 
					 | 
				
			||||||
            if (spu != null) {
 | 
					 | 
				
			||||||
                vo.setSpuName(spu.getName())
 | 
					 | 
				
			||||||
                        .setPicUrl(spu.getPicUrl())
 | 
					 | 
				
			||||||
                        .setMarketPrice(spu.getMarketPrice());
 | 
					 | 
				
			||||||
            }
 | 
					 | 
				
			||||||
            vo.setProducts(CombinationActivityConvert.INSTANCE.convertList2(productMap.get(vo.getId())));
 | 
					 | 
				
			||||||
        });
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return success(activityVOs);
 | 
					        return success(activityVOs);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					 | 
				
			||||||
    @GetMapping("/page")
 | 
					    @GetMapping("/page")
 | 
				
			||||||
    @Operation(summary = "获得拼团活动分页")
 | 
					    @Operation(summary = "获得拼团活动分页")
 | 
				
			||||||
    @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')")
 | 
					    @PreAuthorize("@ss.hasPermission('promotion:combination-activity:query')")
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -27,16 +27,4 @@ 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 = "商品名称", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 name 读取
 | 
					 | 
				
			||||||
            example = "618大促")
 | 
					 | 
				
			||||||
    private String spuName;
 | 
					 | 
				
			||||||
    @Schema(description = "商品主图", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 picUrl 读取
 | 
					 | 
				
			||||||
            example = "https://www.iocoder.cn/xx.png")
 | 
					 | 
				
			||||||
    private String picUrl;
 | 
					 | 
				
			||||||
    @Schema(description = "商品市场价,单位:分", requiredMode = Schema.RequiredMode.REQUIRED, // 从 SPU 的 marketPrice 读取
 | 
					 | 
				
			||||||
            example = "50")
 | 
					 | 
				
			||||||
    private Integer marketPrice;
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,7 @@
 | 
				
			|||||||
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;
 | 
				
			||||||
@@ -126,9 +127,9 @@ public class AppCombinationActivityController {
 | 
				
			|||||||
                        !ObjectUtil.equal(combinationActivityDO.getStatus(), CommonStatusEnum.DISABLE.getStatus()))
 | 
					                        !ObjectUtil.equal(combinationActivityDO.getStatus(), CommonStatusEnum.DISABLE.getStatus()))
 | 
				
			||||||
                .toList();
 | 
					                .toList();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 如果没有有效的活动,返回 null 或者适当的错误信息
 | 
					        // 如果没有有效的活动,返回空列表
 | 
				
			||||||
        if (validActivities.isEmpty()) {
 | 
					        if (validActivities.isEmpty()) {
 | 
				
			||||||
            return success(null);
 | 
					            return success(ListUtil.empty());
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        // 2. 构建结果列表
 | 
					        // 2. 构建结果列表
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user