一、SPU与SKU概念
1.1 SPU
SPU(Standard Product Unit)标准产品单位,是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。通俗点讲,属性值、特性相同的商品就可以称为一个SPU。例如:华为P20 pro就是一个SPU,与商家,与颜色、款式、套餐都无关。
1.2 SKU
SKU(Stock Keeping Unit)库存量单位,可以是以件、盒、托盘等为单位。SKU是物理上不可分割的最小存货单元。在使用时要根据不同业态,不同管理模式来处理。在服装、鞋类商品中使用最多最普遍。例如:
- 华为P20 pro 宝石蓝 64G
- 华为P20 pro 亮黑色 64G
- 华为P20 pro 宝石蓝 128G
- 华为P20 pro 亮黑色 128G
二、功能设计示意图
功能设计示意图
注:商品分类表里有个有个模板id,关联模板。商品选择分类后就将该分类对应的模板内容带过来
三、数据表设计
数据表设计
四、数据格式截图
数据格式截图一
数据格式截图二
四、使用JAVA8新特性实现笛卡尔积
以前实现笛卡尔积比较繁琐,使用java8的新特性提高了代码的简洁度,也更容易实现
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
public class DescartesDemo {
public static void main(String[] args) {
List<String> colorList = Arrays.asList("红色", "黑色", "金色");
List<String> sizeList = Arrays.asList("32G", "64G");
List<String> placeList = Arrays.asList("国产", "进口");
List<String> descartesList = descartes(colorList, sizeList, placeList);
descartesList.forEach(System.out::println);
}
public static List<String> descartes(List<String>... lists) {
List<String> tempList = new ArrayList<>();
for (List<String> list : lists) {
if (tempList.isEmpty()) {
tempList = list;
} else {
//java8新特性,stream流
tempList = tempList.stream().flatMap(item -> list.stream().map(item2 -> item + " " + item2)).collect(Collectors.toList());
}
}
return tempList;
}
}
运行结果
红色 32G 国产
红色 32G 进口
红色 64G 国产
红色 64G 进口
黑色 32G 国产
黑色 32G 进口
黑色 64G 国产
黑色 64G 进口
金色 32G 国产
金色 32G 进口
金色 64G 国产
金色 64G 进口
最后给大家送波福利
阿里云折扣快速入口