cart.js 4.22 KB
/**
 * 购物车 controller
 * @author: jinhu.dong<jinhu.dong@yoho.cn>
 * @date: 2016/07/04
 */

'use strict';

const cartModel = require('../models/cart');
const _ = require('lodash');

exports.index = (req, res) => {

    // cartModel.getCartData('9f0ab721c2d47879e2a2126a1f284106').then((result) => {
    //     console.log('get cart data:', result);
    // }).catch((err) => {

    // });

    cartModel.getCartInfo().then((result) => {

        const mock = {
            loggedIn: true,
            prosNum: result[0].preSalePros.length && result[1].commonPros.length && result[2].invalidPros.length
        };

        if (result[0].preSalePros) {
            _.merge(mock, {
                preSalePros: _.groupBy(result[0].preSalePros, 'brandName')
            });
        }

        if (result[1].commonPros) {
            _.merge(mock, {
                commonPros: _.groupBy(result[1].commonPros, 'brandName')
            });
        }

        if (result[2].invalidPros) {
            console.log(result[2].invalidPros);
            _.merge(mock, {
                invalidPros: result[2].invalidPros
            });
        }

        res.display('cart', _.merge({
            module: 'shopping',
            page: 'cart'
        }, mock));

    }).catch((err) => {
        res.send(err);
    });
};

// 检查库存
exports.checkInventory = (req, res) => {
    let chkResult,
        invalidProIds = [],
        productId = req.query.productId,
        result = {};

    if (productId === 'ALL') {
        chkResult = false;
        invalidProIds.push('286143');
    } else {
        if (req.query.productId === '286143') {
            chkResult = false;
        } else {
            chkResult = true;
        }
    }

    if (invalidProIds.length) {
        _.merge(result, {
            invalidProIds: invalidProIds
        });
    }

    _.merge(result, {
        valid: chkResult
    });

    res.json(result);
};


// 修改数量
exports.changeProductNum = (req, res) => {
    const changeType = req.body.changeType;
    const changeTo = req.body.changeTo;

    if (changeType === 'INCREASE') {
        // TODO
        if (changeTo === '4') {
            res.json({
                code: '1000',
                num: parseInt(changeTo, 10) - 1,
                changed: false
            });
        } else {
            res.json({
                code: '0',
                num: changeTo,
                changed: true
            });
        }
    } else if (changeType === 'DECREASE') {
        // TODO
        res.json({
            code: '0',
            num: changeTo,
            changed: true
        });
    }
};

// 删除商品
exports.removeProduct = (req, res) => {
    // TODO
    res.json({
        code: '0'
    });
};

// 收藏商品
exports.sendToFavorite = (req, res) => {
    // TODO
    res.json({
        code: '0'
    });
};

// 编辑商品颜色和尺寸
exports.editProduct = (req, res) => {
    res.json({
        code: '0',
        defaultColor: '蓝',
        defaultSize: 'M',
        defaultImg: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/02/0128dc014524ccf208b4f6f7760c9b9cf2.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80',
        colors: [{
            color: '蓝',
            rgb: '#1b3c78',
            pic: 'http://img10.static.yhbimg.com/goodsimg/2015/10/21/02/0128dc014524ccf208b4f6f7760c9b9cf2.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80'
        }, {
            color: '黑',
            rgb: '#000',
            pic: 'http://img12.static.yhbimg.com/goodsimg/2015/10/21/05/024f60a070ab61981c139684f147d41f17.jpg?imageMogr2/thumbnail/{width}x{height}/extent/{width}x{height}/background/d2hpdGU=/position/center/quality/80'
        }],
        sizes: ['S', 'M', 'L', 'XL', 'XXL', 'XXXL']
    });
};

// 添加商品到购物车
// productSku:1329776
// buyNumber:1
exports.addToCart = (req, res) => {
    const productSku = req.body.productSku;
    const buyNumber = req.body.buyNumber;

    cartModel.addToCart({
        productSku: productSku,
        buyNumber: buyNumber,
        shoppingKey: req.cookies._SPK || null,
        uid: req.cookies.uid
    }).then((result) => {
        res.json(result);
    });
};