Commit 4bcc6c374ecd419ece438b033c40f5de117763e6

Authored by franky-mgmg-pc
1 parent f07bf8b0

spu 保存,propertyValue合并到productProperty中

Showing 16 changed files with 60 additions and 187 deletions
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/propertyvalue/vo/ProductPropertyValueRespVO.java
... ... @@ -11,7 +11,7 @@ import io.swagger.annotations.*;
11 11 public class ProductPropertyValueRespVO extends ProductPropertyValueBaseVO {
12 12  
13 13 @ApiModelProperty(value = "主键", required = true)
14   - private Integer id;
  14 + private Long id;
15 15  
16 16 @ApiModelProperty(value = "创建时间")
17 17 private Date createTime;
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuBaseVO.java
... ... @@ -12,8 +12,7 @@ import javax.validation.constraints.*;
12 12 @Data
13 13 public class ProductSkuBaseVO {
14 14  
15   - @ApiModelProperty(value = "spu编号", required = true)
16   - @NotNull(message = "spu编号不能为空")
  15 + @ApiModelProperty(value = "spu编号")
17 16 private Long spuId;
18 17  
19 18 @ApiModelProperty(value = "规格值数组-json格式, [{propertyId: , valueId: }, {propertyId: , valueId: }]", required = true)
... ... @@ -46,9 +45,9 @@ public class ProductSkuBaseVO {
46 45 @Data
47 46 public static class Property {
48 47 @NotNull(message = "规格属性名id不能为空")
49   - private Integer propertyId;
  48 + private Long propertyId;
50 49 @NotNull(message = "规格属性值id不能为空")
51   - private Integer valueId;
  50 + private Long valueId;
52 51 }
53 52  
54 53 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuExcelVO.java
... ... @@ -15,7 +15,7 @@ import com.alibaba.excel.annotation.ExcelProperty;
15 15 public class ProductSkuExcelVO {
16 16  
17 17 @ExcelProperty("主键")
18   - private Integer id;
  18 + private Long id;
19 19  
20 20 @ExcelProperty("spu编号")
21 21 private Long spuId;
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/vo/ProductSkuRespVO.java
... ... @@ -11,7 +11,7 @@ import io.swagger.annotations.*;
11 11 public class ProductSkuRespVO extends ProductSkuBaseVO {
12 12  
13 13 @ApiModelProperty(value = "主键", required = true)
14   - private Integer id;
  14 + private Long id;
15 15  
16 16 @ApiModelProperty(value = "创建时间")
17 17 private Date createTime;
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/ProductSpuController.java
... ... @@ -65,8 +65,7 @@ public class ProductSpuController {
65 65 @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
66 66 @PreAuthorize("@ss.hasPermission('product:spu:query')")
67 67 public CommonResult<SpuRespVO> getSpu(@RequestParam("id") Long id) {
68   - ProductSpuDO spu = spuService.getSpu(id);
69   - return success(ProductSpuConvert.INSTANCE.convert(spu));
  68 + return success(spuService.getSpu(id));
70 69 }
71 70  
72 71 @GetMapping("/list")
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/SpuRespVO.java
1 1 package cn.iocoder.yudao.module.product.controller.admin.spu.vo;
2 2  
  3 +import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuRespVO;
3 4 import lombok.*;
4 5 import java.util.*;
5 6 import io.swagger.annotations.*;
... ... @@ -16,4 +17,6 @@ public class SpuRespVO extends ProductSpuBaseVO {
16 17 @ApiModelProperty(value = "创建时间")
17 18 private Date createTime;
18 19  
  20 + List<ProductSkuRespVO> productSkuRespVOS;
  21 +
19 22 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/propertyvalue/ProductPropertyValueDO.java
... ... @@ -27,7 +27,7 @@ public class ProductPropertyValueDO extends BaseDO {
27 27 * 主键
28 28 */
29 29 @TableId
30   - private Integer id;
  30 + private Long id;
31 31 /**
32 32 * 规格键 id
33 33 *
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/sku/ProductSkuMapper.java
... ... @@ -5,6 +5,7 @@ import java.util.*;
5 5 import cn.iocoder.yudao.framework.common.pojo.PageResult;
6 6 import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX;
7 7 import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX;
  8 +import cn.iocoder.yudao.module.product.convert.sku.ProductSkuConvert;
8 9 import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
9 10 import org.apache.ibatis.annotations.Mapper;
10 11 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.*;
... ... @@ -45,4 +46,9 @@ public interface ProductSkuMapper extends BaseMapperX&lt;ProductSkuDO&gt; {
45 46 .orderByDesc(ProductSkuDO::getId));
46 47 }
47 48  
  49 + default List<ProductSkuDO> selectBySpuId(Long spuId) {
  50 + return selectList(new LambdaQueryWrapperX<ProductSkuDO>()
  51 + .eqIfPresent(ProductSkuDO::getSpuId, spuId)
  52 + );
  53 + }
48 54 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyService.java
... ... @@ -81,5 +81,5 @@ public interface ProductPropertyService {
81 81 * @param propertyIds 属性名id集合
82 82 * @return
83 83 */
84   - List<ProductPropertyRespVO> selectByIds(List<Integer> propertyIds);
  84 + List<ProductPropertyRespVO> selectByIds(List<Long> propertyIds);
85 85 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyServiceImpl.java
1 1 package cn.iocoder.yudao.module.product.service.property;
2 2  
3   -import cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil;
4 3 import cn.iocoder.yudao.framework.common.pojo.PageResult;
5 4 import cn.iocoder.yudao.module.product.controller.admin.property.vo.*;
6   -import cn.iocoder.yudao.module.product.controller.admin.property.vo.ProductPropertyCreateReqVO;
7   -import cn.iocoder.yudao.module.product.controller.admin.property.vo.ProductPropertyUpdateReqVO;
8 5 import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueCreateReqVO;
9 6 import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.ProductPropertyValueRespVO;
10 7 import cn.iocoder.yudao.module.product.convert.property.ProductPropertyConvert;
... ... @@ -12,7 +9,7 @@ import cn.iocoder.yudao.module.product.convert.propertyvalue.ProductPropertyValu
12 9 import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO;
13 10 import cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue.ProductPropertyValueDO;
14 11 import cn.iocoder.yudao.module.product.dal.mysql.property.ProductPropertyMapper;
15   -import cn.iocoder.yudao.module.product.service.propertyvalue.ProductPropertyValueService;
  12 +import cn.iocoder.yudao.module.product.dal.mysql.propertyvalue.ProductPropertyValueMapper;
16 13 import org.springframework.stereotype.Service;
17 14 import org.springframework.transaction.annotation.Transactional;
18 15 import org.springframework.validation.annotation.Validated;
... ... @@ -21,6 +18,7 @@ import javax.annotation.Resource;
21 18 import java.util.Arrays;
22 19 import java.util.Collection;
23 20 import java.util.List;
  21 +import java.util.Map;
24 22 import java.util.stream.Collectors;
25 23  
26 24 import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
... ... @@ -39,7 +37,7 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
39 37 private ProductPropertyMapper productPropertyMapper;
40 38  
41 39 @Resource
42   - private ProductPropertyValueService productPropertyValueService;
  40 + private ProductPropertyValueMapper productPropertyValueMapper;
43 41  
44 42 @Override
45 43 @Transactional(rollbackFor = Exception.class)
... ... @@ -52,7 +50,7 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
52 50 List<ProductPropertyValueCreateReqVO> propertyValueList = createReqVO.getPropertyValueList();
53 51 List<ProductPropertyValueDO> productPropertyValueDOList = ProductPropertyValueConvert.INSTANCE.convertList03(propertyValueList);
54 52 productPropertyValueDOList.stream().forEach(x-> x.setPropertyId(property.getId()));
55   - productPropertyValueService.batchInsert(productPropertyValueDOList);
  53 + productPropertyValueMapper.insertBatch(productPropertyValueDOList);
56 54 // 返回
57 55 return property.getId();
58 56 }
... ... @@ -66,11 +64,11 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
66 64 ProductPropertyDO updateObj = ProductPropertyConvert.INSTANCE.convert(updateReqVO);
67 65 productPropertyMapper.updateById(updateObj);
68 66 //更新属性值,先删后加
69   - productPropertyValueService.deletePropertyValueByPropertyId(updateReqVO.getId());
  67 + productPropertyValueMapper.deletePropertyValueByPropertyId(updateReqVO.getId());
70 68 List<ProductPropertyValueCreateReqVO> propertyValueList = updateReqVO.getPropertyValueList();
71 69 List<ProductPropertyValueDO> productPropertyValueDOList = ProductPropertyValueConvert.INSTANCE.convertList03(propertyValueList);
72 70 productPropertyValueDOList.stream().forEach(x-> x.setPropertyId(updateReqVO.getId()));
73   - productPropertyValueService.batchInsert(productPropertyValueDOList);
  71 + productPropertyValueMapper.insertBatch(productPropertyValueDOList);
74 72 }
75 73  
76 74 @Override
... ... @@ -80,7 +78,7 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
80 78 // 删除
81 79 productPropertyMapper.deleteById(id);
82 80 //同步删除属性值
83   - productPropertyValueService.deletePropertyValueByPropertyId(id);
  81 + productPropertyValueMapper.deletePropertyValueByPropertyId(id);
84 82 }
85 83  
86 84 private void validatePropertyExists(Long id) {
... ... @@ -117,7 +115,7 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
117 115 List<Long> propertyIds = propertyRespVOPageResult.getList().stream().map(ProductPropertyRespVO::getId).collect(Collectors.toList());
118 116  
119 117 //获取属性值列表
120   - List<ProductPropertyValueDO> productPropertyValueDOList = productPropertyValueService.getPropertyValueListByPropertyId(propertyIds);
  118 + List<ProductPropertyValueDO> productPropertyValueDOList = productPropertyValueMapper.getPropertyValueListByPropertyId(propertyIds);
121 119 List<ProductPropertyValueRespVO> propertyValueRespVOList = ProductPropertyValueConvert.INSTANCE.convertList(productPropertyValueDOList);
122 120 //组装一对多
123 121 propertyRespVOPageResult.getList().forEach(x->{
... ... @@ -128,13 +126,17 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
128 126 return propertyRespVOPageResult;
129 127 }
130 128  
  129 + private List<ProductPropertyValueDO> getPropertyValueListByPropertyId(List<Long> propertyIds) {
  130 + return productPropertyValueMapper.getPropertyValueListByPropertyId(propertyIds);
  131 + }
  132 +
131 133 @Override
132 134 public ProductPropertyRespVO getPropertyResp(Long id) {
133 135 //查询规格
134 136 ProductPropertyDO property = getProperty(id);
135 137 ProductPropertyRespVO propertyRespVO = ProductPropertyConvert.INSTANCE.convert(property);
136 138 //查询属性值
137   - List<ProductPropertyValueDO> valueDOList = productPropertyValueService.getPropertyValueListByPropertyId(Arrays.asList(id));
  139 + List<ProductPropertyValueDO> valueDOList = productPropertyValueMapper.getPropertyValueListByPropertyId(Arrays.asList(id));
138 140 List<ProductPropertyValueRespVO> propertyValueRespVOS = ProductPropertyValueConvert.INSTANCE.convertList(valueDOList);
139 141 //组装
140 142 propertyRespVO.setPropertyValueList(propertyValueRespVOS);
... ... @@ -142,7 +144,12 @@ public class ProductPropertyServiceImpl implements ProductPropertyService {
142 144 }
143 145  
144 146 @Override
145   - public List<ProductPropertyRespVO> selectByIds(List<Integer> propertyIds) {
146   - return ProductPropertyConvert.INSTANCE.convertList(productPropertyMapper.selectBatchIds(propertyIds));
  147 + public List<ProductPropertyRespVO> selectByIds(List<Long> propertyIds) {
  148 + List<ProductPropertyRespVO> productPropertyRespVO = ProductPropertyConvert.INSTANCE.convertList(productPropertyMapper.selectBatchIds(propertyIds));
  149 + //查询属性值
  150 + List<ProductPropertyValueDO> valueDOList = productPropertyValueMapper.getPropertyValueListByPropertyId(propertyIds);
  151 + Map<Long, List<ProductPropertyValueDO>> propertyValuesMap = valueDOList.stream().collect(Collectors.groupingBy(ProductPropertyValueDO::getPropertyId));
  152 + productPropertyRespVO.forEach(p -> p.setPropertyValueList(ProductPropertyValueConvert.INSTANCE.convertList(propertyValuesMap.get(p.getId()))));
  153 + return productPropertyRespVO;
147 154 }
148 155 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/propertyvalue/ProductProductPropertyValueServiceImpl.java deleted
1   -package cn.iocoder.yudao.module.product.service.propertyvalue;
2   -
3   -import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.*;
4   -import cn.iocoder.yudao.module.product.convert.propertyvalue.ProductPropertyValueConvert;
5   -import cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue.ProductPropertyValueDO;
6   -import cn.iocoder.yudao.module.product.dal.mysql.propertyvalue.ProductPropertyValueMapper;
7   -import org.springframework.stereotype.Service;
8   -import org.springframework.validation.annotation.Validated;
9   -
10   -import javax.annotation.Resource;
11   -import java.util.Collection;
12   -import java.util.List;
13   -
14   -import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception;
15   -import static cn.iocoder.yudao.module.product.enums.ErrorCodeConstants.PROPERTY_VALUE_NOT_EXISTS;
16   -
17   -/**
18   - * 规格值 Service 实现类
19   - *
20   - * @author 芋道源码
21   - */
22   -@Service
23   -@Validated
24   -public class ProductProductPropertyValueServiceImpl implements ProductPropertyValueService {
25   -
26   - @Resource
27   - private ProductPropertyValueMapper productPropertyValueMapper;
28   -
29   - // TODO @franky:这个合并到 property 中。他们本身是在一起的哈。基本不存在只查询规格,而不查询规格值。
30   -
31   - @Override
32   - public Integer createPropertyValue(ProductPropertyValueCreateReqVO createReqVO) {
33   - // 插入
34   - ProductPropertyValueDO propertyValue = ProductPropertyValueConvert.INSTANCE.convert(createReqVO);
35   - productPropertyValueMapper.insert(propertyValue);
36   - // 返回
37   - return propertyValue.getId();
38   - }
39   -
40   - @Override
41   - public void updatePropertyValue(ProductPropertyValueUpdateReqVO updateReqVO) {
42   - // 校验存在
43   - this.validatePropertyValueExists(updateReqVO.getId());
44   - // 更新
45   - ProductPropertyValueDO updateObj = ProductPropertyValueConvert.INSTANCE.convert(updateReqVO);
46   - productPropertyValueMapper.updateById(updateObj);
47   - }
48   -
49   - @Override
50   - public void deletePropertyValue(Integer id) {
51   - // 校验存在
52   - this.validatePropertyValueExists(id);
53   - // 删除
54   - productPropertyValueMapper.deleteById(id);
55   - }
56   -
57   - private void validatePropertyValueExists(Integer id) {
58   - if (productPropertyValueMapper.selectById(id) == null) {
59   - throw exception(PROPERTY_VALUE_NOT_EXISTS);
60   - }
61   - }
62   -
63   - @Override
64   - public ProductPropertyValueDO getPropertyValue(Integer id) {
65   - return productPropertyValueMapper.selectById(id);
66   - }
67   -
68   - @Override
69   - public List<ProductPropertyValueDO> getPropertyValueList(Collection<Integer> ids) {
70   - return productPropertyValueMapper.selectBatchIds(ids);
71   - }
72   -
73   - @Override
74   - public void batchInsert(List<ProductPropertyValueDO> propertyValues) {
75   - productPropertyValueMapper.insertBatch(propertyValues);
76   - }
77   -
78   - @Override
79   - public List<ProductPropertyValueDO> getPropertyValueListByPropertyId(List<Long> propertyIds) {
80   - return productPropertyValueMapper.getPropertyValueListByPropertyId(propertyIds);
81   - }
82   -
83   - @Override
84   - public void deletePropertyValueByPropertyId(Long propertyId) {
85   - productPropertyValueMapper.deletePropertyValueByPropertyId(propertyId);
86   - }
87   -
88   -}
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/propertyvalue/ProductPropertyValueService.java deleted
1   -package cn.iocoder.yudao.module.product.service.propertyvalue;
2   -
3   -import java.util.*;
4   -import javax.validation.*;
5   -import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.*;
6   -import cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue.ProductPropertyValueDO;
7   -
8   -/**
9   - * 规格值 Service 接口
10   - *
11   - * @author 芋道源码
12   - */
13   -public interface ProductPropertyValueService {
14   -
15   - /**
16   - * 创建规格值
17   - *
18   - * @param createReqVO 创建信息
19   - * @return 编号
20   - */
21   - Integer createPropertyValue(@Valid ProductPropertyValueCreateReqVO createReqVO);
22   -
23   - /**
24   - * 更新规格值
25   - *
26   - * @param updateReqVO 更新信息
27   - */
28   - void updatePropertyValue(@Valid ProductPropertyValueUpdateReqVO updateReqVO);
29   -
30   - /**
31   - * 删除规格值
32   - *
33   - * @param id 编号
34   - */
35   - void deletePropertyValue(Integer id);
36   -
37   - /**
38   - * 获得规格值
39   - *
40   - * @param id 编号
41   - * @return 规格值
42   - */
43   - ProductPropertyValueDO getPropertyValue(Integer id);
44   -
45   - /**
46   - * 获得规格值列表
47   - *
48   - * @param ids 编号
49   - * @return 规格值列表
50   - */
51   - List<ProductPropertyValueDO> getPropertyValueList(Collection<Integer> ids);
52   -
53   - /**
54   - * 批量插入属性值
55   - * @param propertyValues
56   - */
57   - void batchInsert(List<ProductPropertyValueDO> propertyValues);
58   -
59   - /**
60   - * 根据属性id查询
61   - * @param propertyIds
62   - * @return
63   - */
64   - List<ProductPropertyValueDO> getPropertyValueListByPropertyId(List<Long> propertyIds);
65   -
66   - /**
67   - * 根据属性id 删除
68   - * @param propertyId
69   - */
70   - void deletePropertyValueByPropertyId(Long propertyId);
71   -}
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuService.java
... ... @@ -79,4 +79,12 @@ public interface ProductSkuService {
79 79 * @return
80 80 */
81 81 void batchSave(List<ProductSkuDO> skuDOList);
  82 +
  83 + /**
  84 + * 获得商品sku 集合
  85 + *
  86 + * @param spuId spu 编号
  87 + * @return 商品sku 集合
  88 + */
  89 + List<ProductSkuDO> getSkusBySpuId(Long spuId);
82 90 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuServiceImpl.java
... ... @@ -92,7 +92,7 @@ public class ProductSkuServiceImpl implements ProductSkuService {
92 92 public void validatedSkuReq(List<ProductSkuCreateReqVO> skuCreateReqList) {
93 93 List<ProductSkuBaseVO.Property> skuPropertyList = skuCreateReqList.stream().flatMap(p -> p.getProperties().stream()).collect(Collectors.toList());
94 94 // 校验规格属性以及规格值是否存在
95   - List<Integer> propertyIds = skuPropertyList.stream().map(ProductSkuBaseVO.Property::getPropertyId).collect(Collectors.toList());
  95 + List<Long> propertyIds = skuPropertyList.stream().map(ProductSkuBaseVO.Property::getPropertyId).collect(Collectors.toList());
96 96 List<ProductPropertyRespVO> propertyAndValueList = productPropertyService.selectByIds(propertyIds);
97 97 if (propertyAndValueList.isEmpty())
98 98 throw ServiceExceptionUtil.exception(PROPERTY_NOT_EXISTS);
... ... @@ -122,4 +122,9 @@ public class ProductSkuServiceImpl implements ProductSkuService {
122 122 public void batchSave(List<ProductSkuDO> skuDOList) {
123 123 productSkuMapper.insertBatch(skuDOList);
124 124 }
  125 +
  126 + @Override
  127 + public List<ProductSkuDO> getSkusBySpuId(Long spuId) {
  128 + return productSkuMapper.selectBySpuId(spuId);
  129 + }
125 130 }
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuService.java
... ... @@ -41,7 +41,7 @@ public interface ProductSpuService {
41 41 * @param id 编号
42 42 * @return 商品spu
43 43 */
44   - ProductSpuDO getSpu(Long id);
  44 + SpuRespVO getSpu(Long id);
45 45  
46 46 /**
47 47 * 获得商品spu列表
... ...
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java
1 1 package cn.iocoder.yudao.module.product.service.spu;
2 2  
3 3 import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuCreateReqVO;
  4 +import cn.iocoder.yudao.module.product.controller.admin.sku.vo.ProductSkuRespVO;
4 5 import cn.iocoder.yudao.module.product.convert.sku.ProductSkuConvert;
5 6 import cn.iocoder.yudao.module.product.dal.dataobject.sku.ProductSkuDO;
6 7 import cn.iocoder.yudao.module.product.service.category.CategoryService;
... ... @@ -89,8 +90,12 @@ public class ProductSpuServiceImpl implements ProductSpuService {
89 90 }
90 91  
91 92 @Override
92   - public ProductSpuDO getSpu(Long id) {
93   - return ProductSpuMapper.selectById(id);
  93 + public SpuRespVO getSpu(Long id) {
  94 + ProductSpuDO spu = ProductSpuMapper.selectById(id);
  95 + SpuRespVO spuVO = ProductSpuConvert.INSTANCE.convert(spu);
  96 + List<ProductSkuRespVO> skuReqs = ProductSkuConvert.INSTANCE.convertList( productSkuService.getSkusBySpuId(id));
  97 + spuVO.setProductSkuRespVOS(skuReqs);
  98 + return spuVO;
94 99 }
95 100  
96 101 @Override
... ...