detail.js 3.67 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 detail = require(`${mRoot}/detail`); // 商品详情 model
const intro = require(`${mRoot}/intro`); // 商品尺码信息 model
const preference = require(`${mRoot}/preference`); // 商品偏好 model
const detailRelated = require(`${mRoot}/consult-comment`); // 商品评论咨询 model
const _ = require('lodash');

/**
 * 商品基本信息
 * @param  {[type]} req [description]
 * @param  {[type]} res [description]
 * @return {[type]}     [description]
 */
exports.index = (req, res, next) => {
    let vipLevel = 0; // 用户等级 待处理
    let uid = _.isEmpty(req.user.uid) ? null : req.user.uid;

    let headerData = headerModel.setNav({
        navTitle: '商品详情'
    });

    detail({
        id: req.params[0],
        goodsId: req.params[1],
        uid: uid,
        vipLevel: vipLevel,
        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) => {
    intro({
        productskn: req.params.productskn
    }).then((result) => {
        res.render('detail/intro', {
            result: result,
            layout: false
        });
    });
};

/**
 * 为你优选
 * @param  {[type]} req [description]
 * @param  {[type]} res [description]
 * @return {[type]}     [description]
 */
exports.preference = (req, res) => {
    preference({
        productskn: req.query.productSkn,
        yhchannel: 1,
        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) => {
    let headerData = headerModel.setNav({
        navTitle: '我要咨询'
    });

    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);
};