spu sku review调整一波

This commit is contained in:
franky-mgmg-pc 2022-06-07 18:04:21 +08:00
parent c118d8198b
commit 2382ddfb37
10 changed files with 18 additions and 24 deletions

View File

@ -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

View File

@ -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;
} }

View File

@ -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.*;

View File

@ -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
* *

View File

@ -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;
/** /**
* 销售价格单位 * 销售价格单位

View File

@ -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;
/** /**

View File

@ -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;

View File

@ -72,20 +72,18 @@ public interface ProductSkuService {
*/ */
List<ProductSkuDO> getSkuList(ProductSkuExportReqVO exportReqVO); List<ProductSkuDO> getSkuList(ProductSkuExportReqVO exportReqVO);
// TODO @frankyvalidateSkus;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 集合

View File

@ -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);
} }

View File

@ -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();
} }