new-detail.js 3.16 KB
/**
 * 新版商品详情页面
 */
'use strict';
const _ = require('lodash');

const detailModel = require('../models/detail');
const newDetailModel = require('../models/new-detail');
const headerModel = require('../../../doraemon/models/header'); // 头部model

const newDetail = {
    index(req, res, next) {
        let id;
        let goodsId;
        let productSkn;

        if (req.params[0] && req.params[1]) {
            id = req.params[0];
            goodsId = req.params[1];
        } else if (req.params[0]) {
            productSkn = req.params[0];
        } else {
            return next();
        }

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

        newDetailModel.getProductData({
            id: id,
            goodsId: goodsId,
            productSkn: productSkn,
            ua: req.get('user-agent') || ''
        }).then((result) => {
            if (_.isEmpty(result)) {
                return next();
            }

            // result.id = id;
            // result.goodsId = goodsId;

            let appParams = {product_skn: result.productSkn};
            let appPath = 'yohobuy://yohobuy.com/goapp?openby:yohobuy={"action":"go.productDetail","params":' +
                JSON.stringify(appParams) +
                '}';

            res.render('detail/new/detail', {
                pageHeader: headerData,
                result: result,
                page: 'new-detail',
                title: result.goodsName,
                pageFooter: true,
                localCss: true,
                appPath: appPath
            });
        }).catch(next);
    },


    /*
     *   商品基本信息 SKN 进入 pagecache重构
     */
    sknData(req, res, next) {
        let brandId = req.query.brandId;
        let productId = req.query.productId;
        let skn = req.query.skn;

        if ([brandId, productId].some(val => !val)) {
            return next();
        }

        newDetailModel.querySknData({
            skn,
            brandId,
            productId
        }).then(result => {
            if (_.isEmpty(result)) {
                return next();
            }

            res.json(result);
        });
    },

    indexData(req, res, next) {
        if (!req.xhr) {
            return next();
        }
        if (!req.body.id) {
            return next();
        }
        let uid = req.user.uid || 0;
        let shoppingKey = req.cookies._SPK || '';

        detailModel.getNewProductAsyncData(Object.assign({
            id: req.body.id,
            goodsId: req.body.goodsId,
            productSkn: req.body.productSkn,
            uid: uid,
            shoppingKey: shoppingKey,
            ua: req.get('user-agent') || ''
        }, req.__User__)).then((result) => {
            if (_.isEmpty(result)) {
                return res.json({
                    code: 400,
                    message: '数据错误'
                });
            }
            result.studentPrice = req.__User__.isStudent && result && result.goodsPrice && result.goodsPrice.studentPrice ? result.goodsPrice.studentPrice : false;
            return res.json(result);
        }).catch(next);
    }
};

module.exports = newDetail;