一、SPU與SKU概念
1.1 SPU
SPU(Standard Product Unit)標(biāo)準(zhǔn)產(chǎn)品單位,是商品信息聚合的最小單位少欺,是一組可復(fù)用、易檢索的標(biāo)準(zhǔn)化信息的集合馋贤,該集合描述了一個產(chǎn)品的特性赞别。通俗點講,屬性值掸掸、特性相同的商品就可以稱為一個SPU氯庆。例如:華為P20 pro就是一個SPU,與商家扰付,與顏色堤撵、款式、套餐都無關(guān)羽莺。
1.2 SKU
SKU(Stock Keeping Unit)庫存量單位实昨,可以是以件、盒盐固、托盤等為單位荒给。SKU是物理上不可分割的最小存貨單元。在使用時要根據(jù)不同業(yè)態(tài)刁卜,不同管理模式來處理志电。在服裝、鞋類商品中使用最多最普遍蛔趴。例如:
- 華為P20 pro 寶石藍(lán) 64G
- 華為P20 pro 亮黑色 64G
- 華為P20 pro 寶石藍(lán) 128G
- 華為P20 pro 亮黑色 128G
二挑辆、功能設(shè)計示意圖
注:商品分類表里有個有個模板id,關(guān)聯(lián)模板孝情。商品選擇分類后就將該分類對應(yīng)的模板內(nèi)容帶過來
三鱼蝉、數(shù)據(jù)表設(shè)計
四、數(shù)據(jù)格式截圖
四箫荡、使用JAVA8新特性實現(xiàn)笛卡爾積
以前實現(xiàn)笛卡爾積比較繁瑣魁亦,使用java8的新特性提高了代碼的簡潔度,也更容易實現(xiàn)
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("國產(chǎn)", "進(jìn)口");
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;
}
}
運行結(jié)果
紅色 32G 國產(chǎn)
紅色 32G 進(jìn)口
紅色 64G 國產(chǎn)
紅色 64G 進(jìn)口
黑色 32G 國產(chǎn)
黑色 32G 進(jìn)口
黑色 64G 國產(chǎn)
黑色 64G 進(jìn)口
金色 32G 國產(chǎn)
金色 32G 進(jìn)口
金色 64G 國產(chǎn)
金色 64G 進(jìn)口