index.js 7.13 KB
/**
 * 个人中心主页
 * @author: shenzm<zhimin.shen@yoho.cn>
 * @date: 2016/07/18
 */
'use strict';
const homeModel = require('../models/index');
const _ = require('lodash');
const helpers = global.yoho.helpers;

// const model_order = require('../models/order')

/**
 * 个人中心主页
 */
const component = {
    index: (req, res, next) => {
        let uid = req.user.uid;
        uid = 8050378; // 测试uid

        if (!uid && req.xhr) {
            return res.json({
                code: 400,
                message: '抱歉,您暂未登录!'
            });
        }

        homeModel.getUserHomeData(uid).then(data => {
            const proData = data[0];
            let result = {
                module: 'home',
                page: 'index',
                head_ico: proData.head_ico ? helpers.image(proData.head_ico, 200, 200) : '',
                profile_name: uid ? proData.profile_name : '登录/注册',
                userinfourl: uid ? '/home/mydetails' : helpers.urlFormat('/signin.html', {
                    refer: req.originalUrl
                }),
            };
            res.render('index', _.merge(result, data[1]));
        }).catch(next);
    },
    help: (req, res, next) => {
        homeModel.getHelpInfo().then(helpList => {
            res.render('help', {
                module: 'home',
                page: 'help',
                helpList: helpList
            });
        }).catch(next);
    },
    helpDetail: (req, res, next) => {
        let helpDetailPara = {
            code: req.query.code,
            caption: req.query.caption
        };

        homeModel.getHelpDetail(helpDetailPara).then(helpDetail => {
            res.render('help-detail', {
                module: 'home',
                page: 'help',
                helpDetail: helpDetail
            });
        }).catch(next);
    },
    feedback: (req, res, next) => {
        res.render('feedback', {
            module: 'home',
            page: 'feedback',
            suggestSub: true,
        }).catch(next);
    },
    saveFeedback: (req, res, next) => {
        let saveFeedbackPara = {
            uid: '13549737',
            content: req.body.content,
            suggest_type: 2
        };

        if (req.user && req.user.uid) {
            _.merge(saveFeedbackPara, {
                uid: req.user.uid
            });
        }

        if (req.user && req.user.udid && !req.user.uid) {
            _.merge(saveFeedbackPara, {
                udid: req.user.udid
            });
        }

        homeModel.saveFeedback(saveFeedbackPara).then(result => {
            console.log(result);

            if (result.code === 200) {
                return res.json({
                    code: 200,
                    message: '谢谢您的反馈'
                });
            } else {
                return res.json({
                    code: 400,
                    message: '保存出错'
                });
            }
        }).catch(next);
    },
    favorite: (req, res, next) => {
        if (req.query.tab === 'brand') {
            res.render('favorite-brand', {
                module: 'home',
                page: 'favorite-brand',
                brandUrl: helpers.urlFormat('/product/new')
            });
        } else {
            res.render('favorite', {
                module: 'home',
                page: 'favorite',
                productUrl: helpers.urlFormat('/product/new')
            });
        }
    },
    favpaging: (req, res, next) => {
        let uid = req.user.uid;
        uid = 20000134; // 测试uid

        const tab = req.query.tab;
        const page = req.query.page;
        const result = [];
        let isend = true;

        if (tab === 'brand') {
            const gender = '1,2,3'; // todo 获取频道的性别
            homeModel.getFavBrandData(uid, gender, page, 10).then(data => {
                if (data && page <= data.page_total) {
                    data.brand_list.forEach(function(d) {
                        result.push({
                            fav_id: d.brand_id,
                            link: '', // todo
                            imgUrl: d.brand_ico ? helpers.image(d.brand_ico, 160, 125) : '',
                            brandName: d.brand_name,
                            down: d.status == 0
                        });
                    });

                    if (page < data.page_total) {
                        isend = false;
                    }
                }
                return res.json({
                    isend: isend,
                    list: result
                });
            });
        } else {
            homeModel.getFavProductData(uid, page, 10).then(data => {
                if (data && page <= data.page_total) {
                    data.product_list.forEach(function(d) {
                        if (!d.product_skn) {
                            return;
                        }

                        let link = '';
                        if (d.goodsId && d.cnAlphabet) {
                            link = helpers.urlFormat(`/product/pro_${d.product_id}_${d.goodsId}/${d.cnAlphabet}.html`);
                        }

                        result.push({
                            fav_id: d.product_id,
                            link: link,
                            imgUrl: d.image ? helpers.image(d.image) : '',
                            title: d.product_name,
                            price: '¥' + Number(d.market_price).toFixed(2),
                            discountPrice: (Number(d.market_price) - Number(d.sales_price) > 0) ? '¥' + Number(d.sales_price).toFixed(2) : false,
                            sellOut: d.storage < 0,
                            invalidGoods: d.status == 0
                        });
                    });

                    if (page < data.page_total) {
                        isend = false;
                    }
                }
                return res.json({
                    isend: isend,
                    list: result
                });
            }).catch(next);
        }
    },
    favdel: (req, res, next) => {
        let uid = req.user.uid;
        uid = 20000134; // 测试uid

        const favId = req.body.favId;
        const type = req.body.type;
        homeModel.favoriteDelete(uid, favId, type).then(data => {
            return res.json(data);
        });
    },

    // 关于我们
    aboutUs: (req, res) => {
        res.render('about-us', {
            module: 'home',
            page: 'index'
        });
    },
    order: (req, res) => {
        let type = req.query.type;

        res.render('order', {
            module: 'home',
            page: 'order',
            type: type
        });
    },
    orderDetail: (req, res) => {
        let orderCode = req.query.ordercode;

        res.render('order-detail', {
            module: 'home',
            page: 'order',
            orderCode: orderCode
        });
    },
    getOrderData: (req, res) => {
        // let param = Object.assign({uid: req.user.uid}, req.query);
        res.json({});
    },
    coin: (req, res) => {
        res.render('coin', {
            module: 'home',
            page: 'order'
        });
    }
};

module.exports = component;