index.js
3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
/**
* 频道页 model
* @author: 赵彪<bill.zhao@yoho.cn>
* @date: 2016/07/26
*/
'use strict';
const channelApi = require('./channel-api');
const floorDataHandler = require('./floor-data-handler');
const camelCase = global.yoho.camelCase;
const _ = require('lodash');
/**
* 获取模板名为single_image的数据
* @param {Object} d 接口返回的楼层数据
* @return {Object} 处理之后的数据
*/
const _processSingleImage = (d) => {
return floorDataHandler.getAdBanner(d);
};
/**
* 获取模板名为focus的数据
* @param {Object} d 接口返回的楼层数据
* @return {Object} 处理之后的数据
*/
const _processFocus = (d) => {
return floorDataHandler.getSliderData(d);
};
/**
* 获取模板名为blk_brand的数据
* @param {Object} d 接口返回的楼层数据
* @return {Object} 处理之后的数据
*/
const _processBlkBrand = (d) => {
let len;
if (!d.list) {
return false;
}
len = d.list.length;
if (len === 2) {
return floorDataHandler.getBrandAdFloor(d);
} else if (len === 4) {
return floorDataHandler.getStyleIcon(d);
}
};
/**
* 获取模板名为image_list的数据
* @param {Object} d 接口返回的楼层数据
* @return {Object} 处理之后的数据
*/
const _processImageList = (d) => {
let len;
if (!d.list) {
return false;
}
len = d.list.length;
if (len === 4) {
return floorDataHandler.getNewArrivals(d);
} else if (len === 5) {
return floorDataHandler.getEditorial(d);
}
};
/**
* 获取模板名为recommend_content_five的数据
* @param {Object} d 接口返回的楼层数据
* @return {Object} 处理之后的数据
*/
const _processRecommendContentFive = (d) => {
return floorDataHandler.getClassicBrands(d);
};
// 根据templete_name字段找到不同的处理方法
const templateMap = {
single_image: _processSingleImage,
blkBrand: _processBlkBrand,
image_list: _processImageList,
focus: _processFocus,
recommend_content_five: _processRecommendContentFive
};
/**
* 获取用于渲染模板的数据
* @param {Object} d 接口返回的数据
* @return {Array} 模板数据数组
*/
const _processFloorData = d => {
let floorList = [];
_.forEach(d, data => {
let floorData;
if (!data.data) {
return false;
}
if (templateMap[data.templateName]) {
floorData = templateMap[data.templateName](data.data);
}
floorList.push(floorData);
});
return floorList;
};
/**
* 获取楼层数据
* @param {String} type 当前的频道
* @return {Object} 完整的楼层数据
*/
const getContent = type => {
return channelApi.getChannelDataAsync(type).then(result => {
if (result.data && result.data.list) {
const l = camelCase(result.data.list);
const floor = {
content: _processFloorData(l)
};
return floor;
}
});
};
module.exports = {
getContent: getContent
};