cate.js 2.5 KB
/**
 * 分类页面 model
 * @author: Bi Kai<kai.bi@yoho.cn>
 * @date: 2016/07/06
 */
'use strict';
const _ = require('lodash');
const api = global.yoho.API;
const helpers = global.yoho.helpers;

const genderMap = {
    boys: '1,3',
    girls: '2,3',
    kids: '1,2,3',
    lifestyle: '1,2,3'
};

let _processCateData = (list, channel) => {
    let nav = ['boys', 'girls', 'kids', 'lifestyle'];

    nav = _.map(nav, function(item) {
        return {
            name: _.capitalize(item),
            channel: item,
            focus: item === channel
        };
    });

    _.map(list, function(item, key) {
        item.focus = key === channel;

        _.map(item, function(firstItem) {
            // 如果有二级菜单,二级菜单跳转,否则一级菜单跳转
            if (firstItem.sub && firstItem.sub.length) {
                _.map(firstItem.sub, function(secondItem) {
                    secondItem.url = helpers.urlFormat('/', {
                        sort: _.get(secondItem, 'relation_parameter.sort'),
                        sort_name: secondItem.category_name,
                        gender: genderMap[key] || ''
                    }, 'list');
                });

                firstItem.sub.unshift({
                    category_name: `全部${firstItem.category_name}`,
                    url: helpers.urlFormat('/', {
                        sort: _.get(firstItem, 'relation_parameter.sort'),
                        sort_name: firstItem.category_name,
                        gender: genderMap[key] || ''
                    }, 'list')
                });
            } else {
                firstItem.url = helpers.urlFormat('/', {
                    sort: _.get(firstItem, 'relation_parameter.sort'),
                    sort_name: firstItem.category_name,
                    gender: genderMap[key] || ''
                }, 'list');
            }
        });
    });

    return {
        nav,
        list
    };
};

let getCateData = (channel) => {
    return api.get('', {
        method: 'app.sort.get'
    }, {
        cache: true
    }).then((result) => {
        if (!result.code || result.code !== 200 || !result.data) {
            return [];
        }

        // 统一频道名称
        result.data.boys = result.data.boy;
        result.data.girls = result.data.girl;
        _.unset(result.data, 'boy');
        _.unset(result.data, 'girl');

        return result.data;
    }).then((list) => {
        return _processCateData(list, channel);
    });
};

module.exports = {
    getCateData
};