package cn.iocoder.yudao.module.product.convert.spu; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; import cn.iocoder.yudao.framework.common.util.object.BeanUtils; import cn.iocoder.yudao.module.product.controller.admin.spu.vo.ProductSkuRespVO; import cn.iocoder.yudao.module.product.controller.admin.spu.vo.ProductSpuPageReqVO; import cn.iocoder.yudao.module.product.controller.admin.spu.vo.ProductSpuRespVO; import cn.iocoder.yudao.module.product.controller.app.spu.vo.AppProductSpuPageReqVO; import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO; import cn.iocoder.yudao.module.product.dal.dataobject.spu.ProductSpuDO; import org.mapstruct.Mapper; import org.mapstruct.factory.Mappers; import java.util.List; import java.util.Map; import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertMultiMap; /** * 商品 SPU Convert * * @author 芋道源码 */ @Mapper public interface ProductSpuConvert { ProductSpuConvert INSTANCE = Mappers.getMapper(ProductSpuConvert.class); ProductSpuPageReqVO convert(AppProductSpuPageReqVO bean); default ProductSpuRespVO convert(ProductSpuDO spu, List skus) { ProductSpuRespVO spuVO = BeanUtils.toBean(spu, ProductSpuRespVO.class); spuVO.setSkus(BeanUtils.toBean(skus, ProductSkuRespVO.class)); return spuVO; } default List convertForSpuDetailRespListVO(List spus, List skus) { Map> skuMultiMap = convertMultiMap(skus, ProductSkuDO::getSpuId); return CollectionUtils.convertList(spus, spu -> convert(spu, skuMultiMap.get(spu.getId()))); } }