mirror of
https://gitee.com/huangge1199_admin/vue-pro.git
synced 2024-11-26 09:11:52 +08:00
spu sku review调整一波
This commit is contained in:
parent
c118d8198b
commit
2382ddfb37
@ -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();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user