detail.js 3.82 KB
/**
 * 商品详情controller
 * @author: xuqi<qi.xu@yoho.cn>
 * @date: 2016/5/6
 */

'use strict';

const mRoot = '../models';
const headerModel = require('../../../doraemon/models/header'); // 头部model
const detailModel = require(`${mRoot}/detail`); // 商品详情 model
const introModel = require(`${mRoot}/intro`); // 商品尺码信息 model
const preference = require(`${mRoot}/preference`); // 商品偏好 model
const detailRelated = require(`${mRoot}/consult-comment`); // 商品评论咨询 model

/**
 * 商品基本信息
 * @param  {[type]} req [description]
 * @param  {[type]} res [description]
 * @return {[type]}     [description]
 */
exports.index = (req, res, next) => {
    if (!req.params[0] || !req.params[1]) {
        return next();
    }
    let uid = req.user.uid || 0;
    let headerData = headerModel.setNav({
        navTitle: '商品详情'
    });

    detailModel.getProductData({
        id: req.params[0],
        goodsId: req.params[1],
        uid: uid,
        ua: req.get('user-agent') || ''
    }).then((result) => {
        res.render('detail/detail', {
            pageHeader: headerData,
            result: result,
            page: 'detail',
            title: result.goodsName,
            pageFooter: true
        });
    }).catch(next);
};

/**
 * 商品尺码信息详情
 * @param  {[type]} req [description]
 * @param  {[type]} res [description]
 * @return {[type]}     [description]
 */
exports.intro = (req, res, next) => {
    if (!req.params.productskn) {
        return next();
    }

    introModel.getintroData({
        productskn: req.params.productskn
    }, req).then((result) => {
        res.render('detail/intro', {
            result: result,
            layout: false
        });
    }).catch(next);
};

/**
 * 为你优选
 * @param  {[type]} req [description]
 * @param  {[type]} res [description]
 * @return {[type]}     [description]
 */
exports.preference = (req, res) => {
    preference({
        productskn: req.query.productSkn,
        yhchannel: req.yoho.channel,
        brandId: req.query.brandId
    }).then((result) => {
        res.render('detail/preference', Object.assign({
            layout: false
        }, result));
    });
};

/**
 * 购买评价页
 */
exports.comments = (req, res, next) => {
    let headerData = headerModel.setNav({
        navTitle: '购买评价'
    });

    detailRelated.comments(req.query).then((result) => {
        res.render('detail/comments', Object.assign({
            pageHeader: headerData,
            pageFooter: true
        }, result));
    }).catch(next);
};

/**
 * 购买咨询
 */
exports.consults = (req, res, next) => {
    let headerData = headerModel.setNav({
        navTitle: '购买咨询'
    });

    detailRelated.consults(req.query).then((result) => {
        res.render('detail/consults', Object.assign({
            pageHeader: headerData,
            pageFooter: true
        }, result));
    }).catch(next);
};

/**
 * 咨询表单页
 */
exports.consultform = (req, res, next) => {
    let headerData = headerModel.setNav({
        navTitle: '我要咨询'
    });

    if (!req.query.product_id) {
        return next();
    }
    res.render('detail/consult-form', {
        pageHeader: headerData,
        productId: req.query.product_id,
        formUrl: '/product/detail/consultsubmit',
        pageFooter: true
    });
};

/**
 * 咨询提交接口
 */
exports.consultsubmit = (req, res, next) => {
    let data = {
        code: 400,
        message: '请输入咨询内容',
        data: ''
    };

    // 判断参数是否存在
    if (!req.body.product_id || !req.body.content) {
        return res.json(data);
    }

    detailRelated.addConsult(req.user.uid, req.body.product_id, req.body.content).then((result) => {

        if (result) {
            Object.assign(data, result);
        }
        return res.json(data);
    }).catch(next);
};