2023-06-06 11:12:07 +00:00
|
|
|
|
// ========== 商品相关的 Util ==========
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 从商品 SKU 数组中,转换出商品属性的数组
|
|
|
|
|
*
|
|
|
|
|
* 类似结构:[{
|
|
|
|
|
* id: // 属性的编号
|
|
|
|
|
* name: // 属性的名字
|
|
|
|
|
* values: [{
|
|
|
|
|
* id: // 属性值的编号
|
|
|
|
|
* name: // 属性值的名字
|
|
|
|
|
* }]
|
|
|
|
|
* }]
|
|
|
|
|
*
|
|
|
|
|
* @param skus 商品 SKU 数组
|
|
|
|
|
*/
|
|
|
|
|
export function convertProductPropertyList(skus) {
|
|
|
|
|
let result = [];
|
|
|
|
|
for (const sku of skus) {
|
|
|
|
|
if (!sku.properties) {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
for (const property of sku.properties) {
|
|
|
|
|
// ① 先处理属性
|
|
|
|
|
let resultProperty = result.find(item => item.id === property.propertyId)
|
|
|
|
|
if (!resultProperty) {
|
|
|
|
|
resultProperty = {
|
|
|
|
|
id: property.propertyId,
|
|
|
|
|
name: property.propertyName,
|
|
|
|
|
values: []
|
|
|
|
|
}
|
|
|
|
|
result.push(resultProperty)
|
|
|
|
|
}
|
|
|
|
|
// ② 再处理属性值
|
|
|
|
|
let resultValue = resultProperty.values.find(item => item.id === property.valueId)
|
|
|
|
|
if (!resultValue) {
|
|
|
|
|
resultProperty.values.push({
|
|
|
|
|
id: property.valueId,
|
|
|
|
|
name: property.valueName
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 从商品 SKU 数组中,转换出商品 SKU Map
|
|
|
|
|
*
|
|
|
|
|
* key: 属性值的拼接,使用 , 间隔,例如说 黑色,CH510
|
|
|
|
|
*
|
|
|
|
|
* @param skus 商品 SKU Map
|
|
|
|
|
*/
|
|
|
|
|
export function convertProductSkuMap(skus) {
|
|
|
|
|
let result = {};
|
|
|
|
|
for (const sku of skus) {
|
|
|
|
|
let key = '';
|
|
|
|
|
if (!sku.properties) {
|
|
|
|
|
continue
|
|
|
|
|
}
|
|
|
|
|
for (const property of sku.properties) {
|
|
|
|
|
if (key !== '') {
|
|
|
|
|
key += ','
|
|
|
|
|
}
|
|
|
|
|
key += property.valueName
|
|
|
|
|
}
|
|
|
|
|
result[key] = sku
|
|
|
|
|
}
|
|
|
|
|
return result
|
|
|
|
|
}
|
2023-06-10 06:47:22 +00:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 根据 SPU 的活动展示顺序,排序活动列表
|
|
|
|
|
*
|
|
|
|
|
* @param activityList 原始的活动列表
|
|
|
|
|
* @param spu
|
|
|
|
|
* @return 新的活动列表
|
|
|
|
|
*/
|
|
|
|
|
export function sortActivityList(activityList, spu) {
|
|
|
|
|
if (!spu || !spu.activityOrders) {
|
|
|
|
|
return activityList;
|
|
|
|
|
}
|
|
|
|
|
const result = [];
|
|
|
|
|
for (const activityOrder of spu.activityOrders) {
|
|
|
|
|
for (const activity of activityList) {
|
|
|
|
|
if (activity.type === activityOrder) {
|
|
|
|
|
result.push(activity)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return result;
|
|
|
|
|
}
|
2023-06-10 09:51:02 +00:00
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 将营销活动,设置到 SPU 中
|
|
|
|
|
*
|
|
|
|
|
* @param spuList SPU 数组
|
|
|
|
|
* @param activityListMap 营销活动 Map,key 为 SPU ID,value 为营销活动数组
|
|
|
|
|
*/
|
|
|
|
|
export function setActivityList(spuList, activityListMap) {
|
|
|
|
|
if (!spuList || spuList.length === 0) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
for (const spu of spuList) {
|
|
|
|
|
spu.activityList = activityListMap[spu.id + ''] || [];
|
|
|
|
|
spu.activityList = sortActivityList(spu.activityList, spu);
|
|
|
|
|
}
|
|
|
|
|
}
|