search.js 2.45 KB
/**
 * search controller
 * @author: wsl<shuiling.wang@yoho.cn>
 * @date: 2016/7/21
 */

'use strict';
const mRoot = '../models';
const headerModel = require('../../../doraemon/models/header');
const searchModel = require(`${mRoot}/search`);
const _ = require('lodash');
const helpers = global.yoho.helpers;


const list = (req, res) => {
    let params = Object.assign({}, req.query);
    let title = '';
    let query = req.query.query;
    let isQueryFirstClass = false; // 标识用户搜的是不是一级品类
    let isQuerySecondClass = false; // 标识用户搜的是不是二级品类
    let domain = null;

    params = _.assign({
        isSearch: true,
        cartUrl: helpers.urlFormat('/cart/index/index')
    }, params);

    // 品类 品牌
    if (query) {
        domain = searchModel.getAllBrandNames(query);

        // 跳转到品牌商品列表页
        //if (domain !== null && !params.shop_id) {
        //    $url = Helpers::url('', array(
        //        'from' => 'search',
        //        'query' => $query
        //), $domain);
        //    $this->go($url);
        //}

    } else {
        params.query = '';
    }

    // 搜索是一级品类
    if (isQueryFirstClass) {
        title = '全部' + query;
    } // 搜索是二级品类
    else if (isQuerySecondClass) {
        title = query;
    } // 搜索其它内容
    else {
        if (query) {
            params.search = {
                default: query === '' ? false : query,
                url: ''
            };
        }
        title = '搜索';
    }

    res.render('search/list', {
        module: 'product',
        page: 'search-list',
        pageHeader: headerModel.setNav({
            navTitle: title
        }),
        goodList: params,
        pageFooter: true
    });
};

const search = (req, res, next) => {
    let params = Object.assign({}, req.query);

    searchModel.getSearchData(params).then((result) => {
        res.render('search/page', {
            layout: false,
            new: result
        });
    }).catch(next);
};

/**
 * 筛选
 * @param  {[object]} req
 * @param  {[object]} res
 * @return {[type]}
 */
let filter = (req, res, next) => {
    let params = Object.assign({}, req.query);

    searchModel.getFilterData(params).then((result) => {
        res.render('search/filter', {
            layout: false,
            params: params,
            filter: result
        });
    }).catch(next);
};

module.exports = {
    list,
    filter,
    search
};