Commit 2382ddfb372c2ac94d086396c3d294c4c527ce37
1 parent
c118d819
spu sku review调整一波
Showing
10 changed files
with
18 additions
and
24 deletions
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/sku/ProductSkuController.java
| @@ -25,8 +25,7 @@ import java.util.List; | @@ -25,8 +25,7 @@ import java.util.List; | ||
| 25 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; | 25 | import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; |
| 26 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | 26 | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; |
| 27 | 27 | ||
| 28 | -// TODO @franky:中英文之间要有空格哈。商品 sku | ||
| 29 | -@Api(tags = "管理后台 - 商品sku") | 28 | +@Api(tags = "管理后台-商品 sku") |
| 30 | @RestController | 29 | @RestController |
| 31 | @RequestMapping("/product/sku") | 30 | @RequestMapping("/product/sku") |
| 32 | @Validated | 31 | @Validated |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/controller/admin/spu/vo/ProductSpuCreateReqVO.java
| @@ -16,9 +16,8 @@ import java.util.List; | @@ -16,9 +16,8 @@ import java.util.List; | ||
| 16 | @ToString(callSuper = true) | 16 | @ToString(callSuper = true) |
| 17 | public class ProductSpuCreateReqVO extends ProductSpuBaseVO { | 17 | public class ProductSpuCreateReqVO extends ProductSpuBaseVO { |
| 18 | 18 | ||
| 19 | - // TODO @franky:这种可以缩写下,skus | ||
| 20 | @ApiModelProperty(value = "sku组合") | 19 | @ApiModelProperty(value = "sku组合") |
| 21 | @Valid | 20 | @Valid |
| 22 | - List<ProductSkuCreateReqVO> productSkuCreateReqVOS; | 21 | + List<ProductSkuCreateReqVO> skus; |
| 23 | 22 | ||
| 24 | } | 23 | } |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/convert/propertyvalue/ProductPropertyValueConvert.java
| @@ -4,7 +4,7 @@ import java.util.*; | @@ -4,7 +4,7 @@ import java.util.*; | ||
| 4 | 4 | ||
| 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; | 5 | import cn.iocoder.yudao.framework.common.pojo.PageResult; |
| 6 | 6 | ||
| 7 | -import cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue.ProductPropertyValueDO; | 7 | +import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO; |
| 8 | import org.mapstruct.Mapper; | 8 | import org.mapstruct.Mapper; |
| 9 | import org.mapstruct.factory.Mappers; | 9 | import org.mapstruct.factory.Mappers; |
| 10 | import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.*; | 10 | import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.*; |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/propertyvalue/ProductPropertyValueDO.java renamed to yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/property/ProductPropertyValueDO.java
| 1 | -package cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue; | 1 | +package cn.iocoder.yudao.module.product.dal.dataobject.property; |
| 2 | 2 | ||
| 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | 3 | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; |
| 4 | -import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; | ||
| 5 | import com.baomidou.mybatisplus.annotation.KeySequence; | 4 | import com.baomidou.mybatisplus.annotation.KeySequence; |
| 6 | import com.baomidou.mybatisplus.annotation.TableId; | 5 | import com.baomidou.mybatisplus.annotation.TableId; |
| 7 | import com.baomidou.mybatisplus.annotation.TableName; | 6 | import com.baomidou.mybatisplus.annotation.TableName; |
| 8 | import lombok.*; | 7 | import lombok.*; |
| 9 | 8 | ||
| 10 | -// TODO @franky:包放到 property 中 | 9 | + |
| 11 | /** | 10 | /** |
| 12 | * 规格值 DO | 11 | * 规格值 DO |
| 13 | * | 12 | * |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/dataobject/sku/ProductSkuDO.java
| @@ -35,7 +35,6 @@ public class ProductSkuDO extends BaseDO { | @@ -35,7 +35,6 @@ public class ProductSkuDO extends BaseDO { | ||
| 35 | /** | 35 | /** |
| 36 | * 规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }] | 36 | * 规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }] |
| 37 | */ | 37 | */ |
| 38 | - // TODO franky:可以定义一个内部的 Property 类,然后 List<Property> | ||
| 39 | private String properties; | 38 | private String properties; |
| 40 | /** | 39 | /** |
| 41 | * 销售价格,单位:分 | 40 | * 销售价格,单位:分 |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/dal/mysql/propertyvalue/ProductPropertyValueMapper.java
| @@ -4,7 +4,7 @@ import java.util.*; | @@ -4,7 +4,7 @@ import java.util.*; | ||
| 4 | 4 | ||
| 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | 5 | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; |
| 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | 6 | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; |
| 7 | -import cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue.ProductPropertyValueDO; | 7 | +import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO; |
| 8 | import org.apache.ibatis.annotations.Mapper; | 8 | import org.apache.ibatis.annotations.Mapper; |
| 9 | 9 | ||
| 10 | /** | 10 | /** |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/property/ProductPropertyServiceImpl.java
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.Product | @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.Product | ||
| 7 | import cn.iocoder.yudao.module.product.convert.property.ProductPropertyConvert; | 7 | import cn.iocoder.yudao.module.product.convert.property.ProductPropertyConvert; |
| 8 | import cn.iocoder.yudao.module.product.convert.propertyvalue.ProductPropertyValueConvert; | 8 | import cn.iocoder.yudao.module.product.convert.propertyvalue.ProductPropertyValueConvert; |
| 9 | import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; | 9 | import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; |
| 10 | -import cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue.ProductPropertyValueDO; | 10 | +import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO; |
| 11 | import cn.iocoder.yudao.module.product.dal.mysql.property.ProductPropertyMapper; | 11 | import cn.iocoder.yudao.module.product.dal.mysql.property.ProductPropertyMapper; |
| 12 | import cn.iocoder.yudao.module.product.dal.mysql.propertyvalue.ProductPropertyValueMapper; | 12 | import cn.iocoder.yudao.module.product.dal.mysql.propertyvalue.ProductPropertyValueMapper; |
| 13 | import org.springframework.stereotype.Service; | 13 | import org.springframework.stereotype.Service; |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuService.java
| @@ -72,20 +72,18 @@ public interface ProductSkuService { | @@ -72,20 +72,18 @@ public interface ProductSkuService { | ||
| 72 | */ | 72 | */ |
| 73 | List<ProductSkuDO> getSkuList(ProductSkuExportReqVO exportReqVO); | 73 | List<ProductSkuDO> getSkuList(ProductSkuExportReqVO exportReqVO); |
| 74 | 74 | ||
| 75 | - // TODO @franky:validateSkus;skuCreateReqList => list | ||
| 76 | /** | 75 | /** |
| 77 | * 对 sku 的组合的属性等进行合法性校验 | 76 | * 对 sku 的组合的属性等进行合法性校验 |
| 78 | * | 77 | * |
| 79 | - * @param skuCreateReqList sku组合的集合 | 78 | + * @param list sku组合的集合 |
| 80 | */ | 79 | */ |
| 81 | - void validatedSkuReq(List<ProductSkuCreateReqVO> skuCreateReqList); | 80 | + void validateSkus(List<ProductSkuCreateReqVO> list); |
| 82 | 81 | ||
| 83 | /** | 82 | /** |
| 84 | * 批量保存sku | 83 | * 批量保存sku |
| 85 | - * @param skuDOList sku对象集合 | ||
| 86 | - * @return // TODO @franky:这里的 return 可以去掉;方法名可以改成 createSkus(list) | 84 | + * @param list sku对象集合 |
| 87 | */ | 85 | */ |
| 88 | - void batchSave(List<ProductSkuDO> skuDOList); | 86 | + void createSkus(List<ProductSkuDO> list); |
| 89 | 87 | ||
| 90 | /** | 88 | /** |
| 91 | * 获得商品sku 集合 | 89 | * 获得商品sku 集合 |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/sku/ProductSkuServiceImpl.java
| @@ -90,8 +90,8 @@ public class ProductSkuServiceImpl implements ProductSkuService { | @@ -90,8 +90,8 @@ public class ProductSkuServiceImpl implements ProductSkuService { | ||
| 90 | 90 | ||
| 91 | // TODO @franky:这个方法,貌似实现的还是有点问题哈。例如说,throw 异常,后面还执行逻辑~ | 91 | // TODO @franky:这个方法,貌似实现的还是有点问题哈。例如说,throw 异常,后面还执行逻辑~ |
| 92 | @Override | 92 | @Override |
| 93 | - public void validatedSkuReq(List<ProductSkuCreateReqVO> skuCreateReqList) { | ||
| 94 | - List<ProductSkuBaseVO.Property> skuPropertyList = skuCreateReqList.stream().flatMap(p -> p.getProperties().stream()).collect(Collectors.toList()); | 93 | + public void validateSkus(List<ProductSkuCreateReqVO> list) { |
| 94 | + List<ProductSkuBaseVO.Property> skuPropertyList = list.stream().flatMap(p -> p.getProperties().stream()).collect(Collectors.toList()); | ||
| 95 | // 校验规格属性以及规格值是否存在 | 95 | // 校验规格属性以及规格值是否存在 |
| 96 | List<Long> propertyIds = skuPropertyList.stream().map(ProductSkuBaseVO.Property::getPropertyId).collect(Collectors.toList()); | 96 | List<Long> propertyIds = skuPropertyList.stream().map(ProductSkuBaseVO.Property::getPropertyId).collect(Collectors.toList()); |
| 97 | List<ProductPropertyRespVO> propertyAndValueList = productPropertyService.selectByIds(propertyIds); | 97 | List<ProductPropertyRespVO> propertyAndValueList = productPropertyService.selectByIds(propertyIds); |
| @@ -109,7 +109,7 @@ public class ProductSkuServiceImpl implements ProductSkuService { | @@ -109,7 +109,7 @@ public class ProductSkuServiceImpl implements ProductSkuService { | ||
| 109 | } | 109 | } |
| 110 | }); | 110 | }); |
| 111 | // 校验是否有重复的sku组合 | 111 | // 校验是否有重复的sku组合 |
| 112 | - List<List<ProductSkuBaseVO.Property>> skuProperties = skuCreateReqList.stream().map(ProductSkuBaseVO::getProperties).collect(Collectors.toList()); | 112 | + List<List<ProductSkuBaseVO.Property>> skuProperties = list.stream().map(ProductSkuBaseVO::getProperties).collect(Collectors.toList()); |
| 113 | Set<String> skuPropertiesConvertSet = new HashSet<>(); | 113 | Set<String> skuPropertiesConvertSet = new HashSet<>(); |
| 114 | skuProperties.forEach(p -> { | 114 | skuProperties.forEach(p -> { |
| 115 | // 组合属性值id为 1~2~3.... 形式的字符串,通过set的特性判断是否有重复的组合 | 115 | // 组合属性值id为 1~2~3.... 形式的字符串,通过set的特性判断是否有重复的组合 |
| @@ -120,7 +120,7 @@ public class ProductSkuServiceImpl implements ProductSkuService { | @@ -120,7 +120,7 @@ public class ProductSkuServiceImpl implements ProductSkuService { | ||
| 120 | } | 120 | } |
| 121 | 121 | ||
| 122 | @Override | 122 | @Override |
| 123 | - public void batchSave(List<ProductSkuDO> skuDOList) { | 123 | + public void createSkus(List<ProductSkuDO> skuDOList) { |
| 124 | productSkuMapper.insertBatch(skuDOList); | 124 | productSkuMapper.insertBatch(skuDOList); |
| 125 | } | 125 | } |
| 126 | 126 |
yudao-module-mall/yudao-module-product-biz/src/main/java/cn/iocoder/yudao/module/product/service/spu/ProductSpuServiceImpl.java
| @@ -50,8 +50,8 @@ public class ProductSpuServiceImpl implements ProductSpuService { | @@ -50,8 +50,8 @@ public class ProductSpuServiceImpl implements ProductSpuService { | ||
| 50 | // 校验分类 | 50 | // 校验分类 |
| 51 | categoryService.validatedCategoryById(createReqVO.getCategoryId()); | 51 | categoryService.validatedCategoryById(createReqVO.getCategoryId()); |
| 52 | // 校验SKU | 52 | // 校验SKU |
| 53 | - List<ProductSkuCreateReqVO> skuCreateReqList = createReqVO.getProductSkuCreateReqVOS(); | ||
| 54 | - productSkuService.validatedSkuReq(skuCreateReqList); | 53 | + List<ProductSkuCreateReqVO> skuCreateReqList = createReqVO.getSkus(); |
| 54 | + productSkuService.validateSkus(skuCreateReqList); | ||
| 55 | // 插入SPU | 55 | // 插入SPU |
| 56 | ProductSpuDO spu = ProductSpuConvert.INSTANCE.convert(createReqVO); | 56 | ProductSpuDO spu = ProductSpuConvert.INSTANCE.convert(createReqVO); |
| 57 | ProductSpuMapper.insert(spu); | 57 | ProductSpuMapper.insert(spu); |
| @@ -61,7 +61,7 @@ public class ProductSpuServiceImpl implements ProductSpuService { | @@ -61,7 +61,7 @@ public class ProductSpuServiceImpl implements ProductSpuService { | ||
| 61 | }); | 61 | }); |
| 62 | List<ProductSkuDO> skuDOList = ProductSkuConvert.INSTANCE.convertSkuDOList(skuCreateReqList); | 62 | List<ProductSkuDO> skuDOList = ProductSkuConvert.INSTANCE.convertSkuDOList(skuCreateReqList); |
| 63 | // 批量插入sku | 63 | // 批量插入sku |
| 64 | - productSkuService.batchSave(skuDOList); | 64 | + productSkuService.createSkus(skuDOList); |
| 65 | // 返回 | 65 | // 返回 |
| 66 | return spu.getId(); | 66 | return spu.getId(); |
| 67 | } | 67 | } |