...
|
...
|
@@ -8,6 +8,60 @@ |
|
|
const _ = require('lodash');
|
|
|
const helpApi = require('./help-api');
|
|
|
|
|
|
/**
|
|
|
* 根据id获取当前所在位置,拼接面包屑
|
|
|
* @param id
|
|
|
* @param menuData
|
|
|
* @returns {*[]}
|
|
|
* @private
|
|
|
*/
|
|
|
const _getNav = (id, menuData)=> {
|
|
|
for (let i = 0; i < menuData.length; i++) {
|
|
|
if (menuData[i].subsets) {
|
|
|
for (let j = 0; j < menuData[i].subsets.length; j++) {
|
|
|
if (menuData[i].subsets[j].id === id) {
|
|
|
return [
|
|
|
{
|
|
|
link: ' ',
|
|
|
name: menuData[i].categoryName
|
|
|
}, {
|
|
|
name: menuData[i].subsets[j].categoryName
|
|
|
}
|
|
|
];
|
|
|
}
|
|
|
}
|
|
|
} else {
|
|
|
if (menuData[i].id === id) {
|
|
|
return [
|
|
|
{
|
|
|
name: menuData[i].categoryName
|
|
|
}
|
|
|
];
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
|
|
|
// 首页链接组装
|
|
|
const _processLink = (list, id) => {
|
|
|
let params = '';
|
|
|
|
|
|
list = list || [];
|
|
|
|
|
|
_.forEach(list, d => {
|
|
|
if (id) {
|
|
|
params = 'id=' + id + '&contId=' + d.id;
|
|
|
} else {
|
|
|
params = 'id=' + d.id;
|
|
|
}
|
|
|
|
|
|
d.jumpLink = global.yoho.config.siteUrl + '/help/detail?' + params;
|
|
|
});
|
|
|
|
|
|
return list;
|
|
|
};
|
|
|
|
|
|
// 首页模块内容处理
|
|
|
const _processHomeCategoryFaq = (list) => {
|
|
|
let result = {
|
|
|
other: []
|
...
|
...
|
@@ -18,11 +72,21 @@ const _processHomeCategoryFaq = (list) => { |
|
|
_.forEach(list.categorys, (item) => {
|
|
|
let newCont = [];
|
|
|
|
|
|
if (item.categoryItems) {
|
|
|
item.categoryItems = _processLink(item.categoryItems);
|
|
|
} else {
|
|
|
item.contentItems = _processLink(item.contentItems, item.id);
|
|
|
}
|
|
|
|
|
|
switch (item.categoryName) {
|
|
|
case '新手指南':
|
|
|
result.newGuide = item;
|
|
|
break;
|
|
|
case '公告':
|
|
|
_.forEach(item.contentItems, c => {
|
|
|
c.caption = c.caption.substring(0, 9);
|
|
|
});
|
|
|
|
|
|
_.chunk(item.contentItems, 2).forEach(data => {
|
|
|
newCont.push({
|
|
|
row: data
|
...
|
...
|
@@ -77,14 +141,28 @@ const _processCountLength = (c) => { |
|
|
}
|
|
|
};
|
|
|
|
|
|
const returnCont = (data, contKey) => {
|
|
|
|
|
|
|
|
|
const returnCont = (data, contId) => {
|
|
|
let curCont = {};
|
|
|
|
|
|
if (!data.contentItems) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
_.forEach(data.contentItems, c => {
|
|
|
if (c.id === contId) {
|
|
|
curCont = c;
|
|
|
}
|
|
|
});
|
|
|
|
|
|
return {
|
|
|
isShowMenu: _processCountLength(data),
|
|
|
id: data.id,
|
|
|
title: data.categoryName,
|
|
|
list: data.contentItems,
|
|
|
contKey: contKey !== '' ? contKey : 0,
|
|
|
cont: contKey !== '' ? data.contentItems[contKey] : data.contentItems[0]
|
|
|
contId: contId ? contId : data.contentItems[0].id,
|
|
|
cont: contId ? curCont : data.contentItems[0]
|
|
|
};
|
|
|
};
|
|
|
|
...
|
...
|
@@ -93,13 +171,13 @@ const _processDetailCont = (item, params) => { |
|
|
let cont = false;
|
|
|
|
|
|
if (item.contentItems && item.id === params.id) {
|
|
|
return returnCont(item, params.contKey);
|
|
|
return returnCont(item, params.contId);
|
|
|
}
|
|
|
|
|
|
if (item.categoryItems) {
|
|
|
_.forEach(item.categoryItems, c => {
|
|
|
if (c.id === params.id) {
|
|
|
cont = returnCont(c, params.contKey);
|
|
|
cont = returnCont(c, params.contId);
|
|
|
}
|
|
|
});
|
|
|
return cont;
|
...
|
...
|
@@ -107,10 +185,37 @@ const _processDetailCont = (item, params) => { |
|
|
return false;
|
|
|
};
|
|
|
|
|
|
// 分类数据
|
|
|
const _processDetailData = (data, params) => {
|
|
|
// 处理搜索结果内容
|
|
|
const _processSearch = (list, params) => {
|
|
|
list = list || [];
|
|
|
|
|
|
if (list.total === 0) {
|
|
|
return {
|
|
|
error: true
|
|
|
};
|
|
|
} else {
|
|
|
list = _.assign({
|
|
|
paginationData: {
|
|
|
page: list.page,
|
|
|
limit: list.page_size || 10,
|
|
|
total: list.total,
|
|
|
pageTotal: list.page_total,
|
|
|
queryParams: {
|
|
|
page: params.page,
|
|
|
helpQuery: params.keywords
|
|
|
}
|
|
|
}
|
|
|
}, list);
|
|
|
}
|
|
|
|
|
|
return list;
|
|
|
};
|
|
|
|
|
|
// 详情内容及分类数据
|
|
|
const _processDetailData = (result, params) => {
|
|
|
let menuData = [];
|
|
|
let contData = false;
|
|
|
let data = result[1].data;
|
|
|
|
|
|
// 常见问题
|
|
|
if (data.faqs) {
|
...
|
...
|
@@ -119,40 +224,46 @@ const _processDetailData = (data, params) => { |
|
|
categoryName: '常见问题'
|
|
|
});
|
|
|
|
|
|
if (params.id === 1) {
|
|
|
if (params.id === 1 && !params.keywords) {
|
|
|
contData = {
|
|
|
isShowMenu: _processCountLength(data.faqs),
|
|
|
id: 1,
|
|
|
commonProblem: true,
|
|
|
faqs: data.faqs
|
|
|
faqs: data.faqs,
|
|
|
allQa: result[2].data
|
|
|
};
|
|
|
}
|
|
|
}
|
|
|
|
|
|
// 其它分类数据处理
|
|
|
_.forEach(data.categorys, item => {
|
|
|
let result;
|
|
|
let resCont;
|
|
|
|
|
|
menuData.push(_processMenuType(item));
|
|
|
|
|
|
if (contData) {
|
|
|
if (contData || params.keywords) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
result = _processDetailCont(item, params);
|
|
|
resCont = _processDetailCont(item, params);
|
|
|
|
|
|
if (result) {
|
|
|
if (resCont) {
|
|
|
contData = _.assign({
|
|
|
helpDetail: true
|
|
|
}, result);
|
|
|
}, resCont);
|
|
|
}
|
|
|
});
|
|
|
|
|
|
return {
|
|
|
menuData: menuData,
|
|
|
contData: contData
|
|
|
nav: _getNav(params.id, menuData),
|
|
|
data: {
|
|
|
menuData: menuData,
|
|
|
contData: contData
|
|
|
}
|
|
|
};
|
|
|
};
|
|
|
|
|
|
// 首页
|
|
|
const helpData = () => {
|
|
|
return Promise.all([
|
|
|
helpApi.getHotSearch(),
|
...
|
...
|
@@ -169,24 +280,44 @@ const helpData = () => { |
|
|
});
|
|
|
};
|
|
|
|
|
|
const detailData = (keyword, params) => {
|
|
|
// 详情
|
|
|
const detailData = (params) => {
|
|
|
let promiseData = [
|
|
|
helpApi.getHotSearch(),
|
|
|
helpApi.gethomeCategoryFaq()
|
|
|
];
|
|
|
|
|
|
if (keyword) {
|
|
|
promiseData.push(helpApi.helpSearch(keyword));
|
|
|
if (params.id === 1) {
|
|
|
promiseData.push(helpApi.allQA());
|
|
|
}
|
|
|
|
|
|
return Promise.all(promiseData).then(result => {
|
|
|
let newData = _processDetailData(result, params);
|
|
|
|
|
|
newData.data.hotSearch = result[0].data;
|
|
|
return newData;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
// 搜索
|
|
|
const searchData = (params) => {
|
|
|
return helpApi.helpSearch(params).then(result => {
|
|
|
return _.assign({
|
|
|
hotSearch: result[0].data
|
|
|
}, _processDetailData(result[1].data, params));
|
|
|
keywords: params.keywords
|
|
|
}, _processSearch(result.data.data, params));
|
|
|
});
|
|
|
};
|
|
|
|
|
|
// 在线客服
|
|
|
const onlineService = () => {
|
|
|
return helpApi.onlineService().then(result => {
|
|
|
return result.data.url;
|
|
|
});
|
|
|
};
|
|
|
|
|
|
module.exports = {
|
|
|
helpData,
|
|
|
detailData
|
|
|
detailData,
|
|
|
searchData,
|
|
|
onlineService
|
|
|
}; |
...
|
...
|
|