cart.js 3.48 KB
/**
 * Created by TaoHuang on 2016/10/19.
 */

'use strict';

const service = require('../models/cart-service');
const helper = require('../models/cart-helper');
const simpleHeaderModel = require('../../../doraemon/models/simple-header');

const getProductInfo = (req, res, next) => {
    let pid = req.query.productId || '';

    service.getProductInfoAsync(pid).then((result) => {
        return res.render('goods-detail', Object.assign({
            layout: false
        }, result));
    }).catch(next);
};


/**
 * 设置购物车COOKIE信息
 */
const setShoppingCookie = (req) => {

    let uid = req.user.uid || true;
    let shoppingKey = helper.getShoppingKeyByCookie(req);

    return service.getCartCount(uid, shoppingKey).then(ret => {
        if (ret && ret.data && ret.data.cart_goods_count) {
            req.cookies('_g', {
                _k: shoppingKey,
                _nac: ret.data.cart_goods_count,
                _ac: 0,
                _r: 1
            });
        }
    });
};

/**
 * 我的购物车
 */
const cart = (req, res, next) => {

    let uid = req.user.uid;
    let shoppingKey = helper.getShoppingKeyByCookie(req);
    let cartDelList = req.cookies['cart-del-list'];

    if (cartDelList) {
        req.cookies['cart-del-list'] = '';
    }

    service.getCartData(uid, shoppingKey, cartDelList)
        .then(ret => {
            console.log(JSON.stringify(ret));
            return res.render('cart', {
                module: 'cart',
                page: 'cart',
                simpleHeader: simpleHeaderModel.setSimpleHeaderData(),
                uid: uid,
                cartEnsure: {
                    loginUrl: ''
                }
            });
        })
        .catch(next);
};

/**
 * 加入购物车
 */
const cartAdd = () => {

};

/**
 * 获取购物车商品总数
 */
const cartTotal = () => {

};

/**
 * 购物车商品选择与取消
 */
const selectProduct = (req, res) => {

    let uid = req.user.uid;
    let productId = req.body.skuList;
    let hasPromotion = req.body.hasPromotion || false;
    let shoppingKey = helper.getShoppingKeyByCookie(req);

    service.selectGoods(uid, productId, shoppingKey, hasPromotion)
        .then(ret => {
            res.send(ret);
        }).catch(() => {
            res.send({
                code: 400
            });
        });
};

/**
 * 修改购物车商品数量
 */
const modifyProduct = (req, res) => {

    let uid = req.user.uid;
    let shoppingKey = helper.getShoppingKeyByCookie(req);
    let sku = req.body.sku;
    let increaseNum = req.body.increaseNum || null;
    let decreaseNum = req.body.decreaseNum || null;

    return service.modifyProductNum(uid, sku, increaseNum, decreaseNum, shoppingKey)
        .then(ret => {
            if (ret && ret.code === 200) {
                return setShoppingCookie().then(() => {
                    return res.send(ret);
                });
            }
        });
};

/**
 * 移出购物车
 */
const removeProduct = () => {

};

/**
 * 移入收藏夹
 * 支持批量移入收藏夹
 */
const moveToFav = () => {

};

/**
 * 检查是否收藏
 */
const checkFav = () => {

};

/**
 * 凑单商品异步请求
 */
const getTogetherProduct = () => {

};

/**
 * 为你优选商品异步请求
 */
const getRecommendProductAction = () => {

};

module.exports = {
    getProductInfo,
    cart,
    cartAdd,
    cartTotal,
    setShoppingCookie,
    selectProduct,
    modifyProduct,
    removeProduct,
    moveToFav,
    checkFav,
    getTogetherProduct,
    getRecommendProductAction
};