list.js 1.97 KB
/**
 * Created by YanQing.Yang on 2017/3/9.
 */

'use strict';

const _ = require('lodash');
const helpers = global.yoho.helpers;
const mapSort = require(`${global.utils}/map-sort`);
const TYPE = require('../type');

module.exports = [
    // 老版newURL
    {
        type: TYPE.redirect,
        origin: '/new?gender=1,3&order=s_t_desc&msort=1,3,4,6,7,8,308,360',
        target: helpers.urlFormat('/boys-new', {}, 'list')
    },
    {
        type: TYPE.redirect,
        origin: '/new?gender=2,3&order=s_t_desc&msort=1,3,4,6,7,8,308,360',
        target: helpers.urlFormat('/girls-new', {}, 'list')
    },
    {
        type: TYPE.redirect,
        origin: '/new?order=s_t_desc&msort=365',
        target: helpers.urlFormat('/kids-new', {}, 'list')
    },
    {
        type: TYPE.redirect,
        origin: '/new?order=s_t_desc&msort=10',
        target: helpers.urlFormat('/lifestyle-new', {}, 'list')
    },

    // 筛选参数排序匹配
    {
        type: TYPE.redirect,
        origin: req => {
            if (_.isEmpty(req.query)) {
                return false;
            }

            let sorts = mapSort(req.query);
            let queryKeys = _.keys(req.query);
            let index = 0;
            let matched = _.map(sorts, (val, key) => {
                return key === queryKeys[index++];
            });

            if (_.every(matched, match => match)) {
                return false;
            }

            return true;
        },
        target: req => helpers.urlFormat(req.path, mapSort(req.query), 'list')
    },
    {
        type: TYPE.rewrite,
        origin: req => {
            return !req.path || req.path === '/';
        },
        target: '/product/list/index'
    },
    {
        type: TYPE.rewrite,
        origin: /\/(.*)-new/,
        target: (req, match, channel) => {
            return `/product/list/${channel}-new`;
        }
    },
    {
        type: TYPE.rewrite,
        origin: req => req.path === '/new',
        target: '/product/list/new'
    }
];