mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +08:00 
			
		
		
		
	spu sku review调整一波
This commit is contained in:
		| @@ -25,8 +25,7 @@ import java.util.List; | |||||||
| 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.operatelog.core.enums.OperateTypeEnum.EXPORT; | import static cn.iocoder.yudao.framework.operatelog.core.enums.OperateTypeEnum.EXPORT; | ||||||
|  |  | ||||||
| // TODO @franky:中英文之间要有空格哈。商品 sku | @Api(tags = "管理后台-商品 sku") | ||||||
| @Api(tags = "管理后台 - 商品sku") |  | ||||||
| @RestController | @RestController | ||||||
| @RequestMapping("/product/sku") | @RequestMapping("/product/sku") | ||||||
| @Validated | @Validated | ||||||
|   | |||||||
| @@ -16,9 +16,8 @@ import java.util.List; | |||||||
| @ToString(callSuper = true) | @ToString(callSuper = true) | ||||||
| public class ProductSpuCreateReqVO extends ProductSpuBaseVO { | public class ProductSpuCreateReqVO extends ProductSpuBaseVO { | ||||||
|  |  | ||||||
|     // TODO @franky:这种可以缩写下,skus |  | ||||||
|     @ApiModelProperty(value = "sku组合") |     @ApiModelProperty(value = "sku组合") | ||||||
|     @Valid |     @Valid | ||||||
|     List<ProductSkuCreateReqVO> productSkuCreateReqVOS; |     List<ProductSkuCreateReqVO> skus; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ import java.util.*; | |||||||
|  |  | ||||||
| import cn.iocoder.yudao.framework.common.pojo.PageResult; | import cn.iocoder.yudao.framework.common.pojo.PageResult; | ||||||
|  |  | ||||||
| import cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue.ProductPropertyValueDO; | import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO; | ||||||
| import org.mapstruct.Mapper; | import org.mapstruct.Mapper; | ||||||
| import org.mapstruct.factory.Mappers; | import org.mapstruct.factory.Mappers; | ||||||
| import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.*; | import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.*; | ||||||
|   | |||||||
| @@ -1,13 +1,12 @@ | |||||||
| package cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue; | package cn.iocoder.yudao.module.product.dal.dataobject.property; | ||||||
| 
 | 
 | ||||||
| import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | import cn.iocoder.yudao.framework.mybatis.core.dataobject.BaseDO; | ||||||
| import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; |  | ||||||
| import com.baomidou.mybatisplus.annotation.KeySequence; | import com.baomidou.mybatisplus.annotation.KeySequence; | ||||||
| import com.baomidou.mybatisplus.annotation.TableId; | import com.baomidou.mybatisplus.annotation.TableId; | ||||||
| import com.baomidou.mybatisplus.annotation.TableName; | import com.baomidou.mybatisplus.annotation.TableName; | ||||||
| import lombok.*; | import lombok.*; | ||||||
| 
 | 
 | ||||||
| // TODO @franky:包放到 property 中 | 
 | ||||||
| /** | /** | ||||||
|  * 规格值 DO |  * 规格值 DO | ||||||
|  * |  * | ||||||
| @@ -35,7 +35,6 @@ public class ProductSkuDO extends BaseDO { | |||||||
|     /** |     /** | ||||||
|      * 规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }] |      * 规格值数组-json格式, [{propertId: , valueId: }, {propertId: , valueId: }] | ||||||
|      */ |      */ | ||||||
|     // TODO franky:可以定义一个内部的 Property 类,然后 List<Property> |  | ||||||
|     private String properties; |     private String properties; | ||||||
|     /** |     /** | ||||||
|      * 销售价格,单位:分 |      * 销售价格,单位:分 | ||||||
|   | |||||||
| @@ -4,7 +4,7 @@ import java.util.*; | |||||||
|  |  | ||||||
| import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | import cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX; | ||||||
| import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | import cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX; | ||||||
| import cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue.ProductPropertyValueDO; | import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO; | ||||||
| import org.apache.ibatis.annotations.Mapper; | import org.apache.ibatis.annotations.Mapper; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|   | |||||||
| @@ -7,7 +7,7 @@ import cn.iocoder.yudao.module.product.controller.admin.propertyvalue.vo.Product | |||||||
| import cn.iocoder.yudao.module.product.convert.property.ProductPropertyConvert; | import cn.iocoder.yudao.module.product.convert.property.ProductPropertyConvert; | ||||||
| import cn.iocoder.yudao.module.product.convert.propertyvalue.ProductPropertyValueConvert; | import cn.iocoder.yudao.module.product.convert.propertyvalue.ProductPropertyValueConvert; | ||||||
| import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; | import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyDO; | ||||||
| import cn.iocoder.yudao.module.product.dal.dataobject.propertyvalue.ProductPropertyValueDO; | import cn.iocoder.yudao.module.product.dal.dataobject.property.ProductPropertyValueDO; | ||||||
| import cn.iocoder.yudao.module.product.dal.mysql.property.ProductPropertyMapper; | import cn.iocoder.yudao.module.product.dal.mysql.property.ProductPropertyMapper; | ||||||
| import cn.iocoder.yudao.module.product.dal.mysql.propertyvalue.ProductPropertyValueMapper; | import cn.iocoder.yudao.module.product.dal.mysql.propertyvalue.ProductPropertyValueMapper; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
|   | |||||||
| @@ -72,20 +72,18 @@ public interface ProductSkuService { | |||||||
|      */ |      */ | ||||||
|     List<ProductSkuDO> getSkuList(ProductSkuExportReqVO exportReqVO); |     List<ProductSkuDO> getSkuList(ProductSkuExportReqVO exportReqVO); | ||||||
|  |  | ||||||
|     // TODO @franky:validateSkus;skuCreateReqList => list |  | ||||||
|     /** |     /** | ||||||
|      * 对 sku 的组合的属性等进行合法性校验 |      * 对 sku 的组合的属性等进行合法性校验 | ||||||
|      * |      * | ||||||
|      * @param skuCreateReqList sku组合的集合 |      * @param list sku组合的集合 | ||||||
|      */ |      */ | ||||||
|     void validatedSkuReq(List<ProductSkuCreateReqVO> skuCreateReqList); |     void validateSkus(List<ProductSkuCreateReqVO> list); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 批量保存sku |      * 批量保存sku | ||||||
|      * @param skuDOList sku对象集合 |      * @param list sku对象集合 | ||||||
|      * @return // TODO @franky:这里的 return 可以去掉;方法名可以改成 createSkus(list) |  | ||||||
|      */ |      */ | ||||||
|     void batchSave(List<ProductSkuDO> skuDOList); |     void createSkus(List<ProductSkuDO> list); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 获得商品sku 集合 |      * 获得商品sku 集合 | ||||||
|   | |||||||
| @@ -90,8 +90,8 @@ public class ProductSkuServiceImpl implements ProductSkuService { | |||||||
|  |  | ||||||
|     // TODO @franky:这个方法,貌似实现的还是有点问题哈。例如说,throw 异常,后面还执行逻辑~ |     // TODO @franky:这个方法,貌似实现的还是有点问题哈。例如说,throw 异常,后面还执行逻辑~ | ||||||
|     @Override |     @Override | ||||||
|     public void validatedSkuReq(List<ProductSkuCreateReqVO> skuCreateReqList) { |     public void validateSkus(List<ProductSkuCreateReqVO> list) { | ||||||
|         List<ProductSkuBaseVO.Property> skuPropertyList = skuCreateReqList.stream().flatMap(p -> p.getProperties().stream()).collect(Collectors.toList()); |         List<ProductSkuBaseVO.Property> skuPropertyList = list.stream().flatMap(p -> p.getProperties().stream()).collect(Collectors.toList()); | ||||||
|         // 校验规格属性以及规格值是否存在 |         // 校验规格属性以及规格值是否存在 | ||||||
|         List<Long> propertyIds = skuPropertyList.stream().map(ProductSkuBaseVO.Property::getPropertyId).collect(Collectors.toList()); |         List<Long> propertyIds = skuPropertyList.stream().map(ProductSkuBaseVO.Property::getPropertyId).collect(Collectors.toList()); | ||||||
|         List<ProductPropertyRespVO> propertyAndValueList = productPropertyService.selectByIds(propertyIds); |         List<ProductPropertyRespVO> propertyAndValueList = productPropertyService.selectByIds(propertyIds); | ||||||
| @@ -109,7 +109,7 @@ public class ProductSkuServiceImpl implements ProductSkuService { | |||||||
|             } |             } | ||||||
|         }); |         }); | ||||||
|         // 校验是否有重复的sku组合 |         // 校验是否有重复的sku组合 | ||||||
|         List<List<ProductSkuBaseVO.Property>> skuProperties = skuCreateReqList.stream().map(ProductSkuBaseVO::getProperties).collect(Collectors.toList()); |         List<List<ProductSkuBaseVO.Property>> skuProperties = list.stream().map(ProductSkuBaseVO::getProperties).collect(Collectors.toList()); | ||||||
|         Set<String> skuPropertiesConvertSet = new HashSet<>(); |         Set<String> skuPropertiesConvertSet = new HashSet<>(); | ||||||
|         skuProperties.forEach(p -> { |         skuProperties.forEach(p -> { | ||||||
|             // 组合属性值id为 1~2~3.... 形式的字符串,通过set的特性判断是否有重复的组合 |             // 组合属性值id为 1~2~3.... 形式的字符串,通过set的特性判断是否有重复的组合 | ||||||
| @@ -120,7 +120,7 @@ public class ProductSkuServiceImpl implements ProductSkuService { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Override |     @Override | ||||||
|     public void batchSave(List<ProductSkuDO> skuDOList) { |     public void createSkus(List<ProductSkuDO> skuDOList) { | ||||||
|         productSkuMapper.insertBatch(skuDOList); |         productSkuMapper.insertBatch(skuDOList); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -50,8 +50,8 @@ public class ProductSpuServiceImpl implements ProductSpuService { | |||||||
|         // 校验分类 |         // 校验分类 | ||||||
|         categoryService.validatedCategoryById(createReqVO.getCategoryId()); |         categoryService.validatedCategoryById(createReqVO.getCategoryId()); | ||||||
|         // 校验SKU |         // 校验SKU | ||||||
|         List<ProductSkuCreateReqVO> skuCreateReqList = createReqVO.getProductSkuCreateReqVOS(); |         List<ProductSkuCreateReqVO> skuCreateReqList = createReqVO.getSkus(); | ||||||
|         productSkuService.validatedSkuReq(skuCreateReqList); |         productSkuService.validateSkus(skuCreateReqList); | ||||||
|         // 插入SPU |         // 插入SPU | ||||||
|         ProductSpuDO spu = ProductSpuConvert.INSTANCE.convert(createReqVO); |         ProductSpuDO spu = ProductSpuConvert.INSTANCE.convert(createReqVO); | ||||||
|         ProductSpuMapper.insert(spu); |         ProductSpuMapper.insert(spu); | ||||||
| @@ -61,7 +61,7 @@ public class ProductSpuServiceImpl implements ProductSpuService { | |||||||
|         }); |         }); | ||||||
|         List<ProductSkuDO> skuDOList = ProductSkuConvert.INSTANCE.convertSkuDOList(skuCreateReqList); |         List<ProductSkuDO> skuDOList = ProductSkuConvert.INSTANCE.convertSkuDOList(skuCreateReqList); | ||||||
|         // 批量插入sku |         // 批量插入sku | ||||||
|         productSkuService.batchSave(skuDOList); |         productSkuService.createSkus(skuDOList); | ||||||
|         // 返回 |         // 返回 | ||||||
|         return spu.getId(); |         return spu.getId(); | ||||||
|     } |     } | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 franky-mgmg-pc
					franky-mgmg-pc