favorite.js 3.65 KB
/**
 * Created by TaoHuang on 2016/6/13.
 */
'use strict';

const helpers = global.yoho.helpers;
const brandService = require('../models/favorite-brand-service');
const productService = require('../models/favorite-product-service');
const fav = require('../models/favorite');

/**
 * 收藏品牌ajax请求
 */
const changeFavoriteBrand = (req, res, next) => {
    let uid = req.user.uid || '';
    let brandId = req.body.brandId;

    if (uid && brandId) {
        brandService.changeAsync(uid, brandId).then(result => {
            return res.json(result);
        }).catch(next);
    } else if (!uid) {
        return res.json({
            code: 403,
            message: '用户ID不存在',
            data: {
                url: helpers.urlFormat('/signin.html')
            }
        });
    } else {
        return res.json({
            code: 400,
            message: '操作失败'
        });
    }
};

const isFavoriteBrand = (req, res, next) => {
    let uid = req.user.uid || '';
    let brandId = req.query.brandId;

    if (uid && brandId) {
        brandService.isFavoriteAsync(uid, brandId).then(result => {
            return res.json(result);
        }).catch(next);
    } else {
        return res.json({
            code: 400,
            message: '状态失败'
        });
    }
};

const collectProduct = (req, res, next) => {
    let uid = req.user.uid || '';
    let pid = req.body.productId;
    let type = req.body.type || 'add';

    if (uid && pid) {
        switch (type) {
            case 'add':
                productService.createAsync(uid, pid)
                    .then(result => {
                        if (result.code === 413) {
                            result.message = '该商品已经收藏';
                        }

                        res.json(result);
                    })
                    .catch(next);
                break;
            case 'cancel':
                productService.deleteAsync(uid, pid)
                    .then(result => res.json(result))
                    .catch(next);
                break;
            default:
                res.json({
                    code: 400,
                    message: '错误类型'
                });
        }
    } else if (!uid) {
        res.json({
            code: 403,
            message: '用户没有登录',
            data: {
                url: helpers.urlFormat('/signin.html')
            }
        });
    } else {
        res.json({
            code: 400,
            message: '收藏失败'
        });
    }
};

const collectShop = (req, res, next) => {
    let uid = req.user.uid || '';
    let shopId = req.body.shopId;
    let isadd = req.body.isFavorite * 1 ? true : false;

    // needColloect 说明刚登录状态 是cookie传的值
    if (req.body.needColloect * 1 === 1) {
        isadd = true;
    }

    if (!uid) {
        res.json({
            code: 401,
            message: '用户没有登录',
            data: {url: helpers.urlFormat('/signin.html')}
        });
    } else if (!shopId) {
        res.json({
            code: 400,
            message: '收藏失败'
        });
    } else {
        fav.toggleFavShop(shopId, uid, isadd).then(result => {
            res.json(result);
        }).catch(next);
    }
};

const isFavShop = (req, res, next) => {
    let uid = req.user.uid;
    let shopId = req.body.shopId;

    if (!uid || !shopId) {
        res.json({
            code: 400,
            message: '未收藏'
        });
    }

    fav.getFavStatus(uid, shopId, 'shop').then(result => {
        res.json(result);
    }).catch(next);
};

module.exports = {
    changeFavoriteBrand,
    collectProduct,
    collectShop,
    isFavShop,
    isFavoriteBrand
};