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

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

module.exports = class extends global.yoho.BaseModel {
    constructor(ctx) {
        super(ctx);
    }

    _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('/', utils.mapSort({
                            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('/', utils.mapSort({
                            sort: _.get(firstItem, 'relation_parameter.sort'),
                            sort_name: firstItem.category_name,
                            gender: genderMap[key] || ''
                        }), 'list')
                    });
                } else {
                    firstItem.url = helpers.urlFormat('/', utils.mapSort({
                        sort: _.get(firstItem, 'relation_parameter.sort'),
                        sort_name: firstItem.category_name,
                        gender: genderMap[key] || ''
                    }), 'list');
                }
            });
        });

        return {
            nav,
            list
        };
    }

    getCateData(channel) {
        return this.get({
            data: {method: 'app.sort.get'},
            api: global.yoho.API,
            param: {cache: true}
        }).then((result) => {

            if (!result || !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 this._processCateData(list, channel);
        });
    }
};