star.js 5.64 KB
/**
 * 新潮教室
 * @author: wsl<shuiling.wang@yoho.cn>
 * @date: 2016/05/30
 */
'use strict';

const mRoot = '../models';
const _ = require('lodash');
const starModel = require(`${mRoot}/star`);

const headTab = [
    {
        url: '/guang/star',
        name: '全部'
    },
    {
        url: '/guang/star/special',
        name: '星专题'
    },
    {
        url: '/guang/star/collocation',
        name: '星搭配'
    }
];

let md5Str = '';

const _processPublicData = (req, title) => {
    let renderData = {
        module: 'guang',
        title: title
    };

    if (req.query.app_version || req.query.appVersion) {
        renderData.pageHeader = false;
    }

    return renderData;
};

/**
 * 星潮教室首页
 * @param  {[object]} req
 * @param  {[object]} res
 * @return {[type]}
 */
let index = (req, res, next) => {
    const pageHeadTab = _.cloneDeep(headTab);

    pageHeadTab[0].cur = true;

    starModel.getIndexData().then((result) => {
        md5Str = result.md5;
        res.render('star/index', _.assign({
            page: 'star',
            isStarIndexPage: true,
            headTab: pageHeadTab,
            content: {
                focus: true,
                data: result.ads
            },
            starAvatar: result.starAvatar ? result.starAvatar : '',
            articles: result.articles,
            md5: result.md5
        }, _processPublicData(req, '星潮教室')));
    }).catch(next);
};

let getIndexHtml = (req, res, next) => {
    starModel.getIndexData().then((result) => {
        if (md5Str !== result.md5) {
            md5Str = result.md5;

            res.render('star/index-html', _.assign({
                layout: false,
                content: {
                    focus: true,
                    data: result.ads
                },
                starAvatar: result.starAvatar ? result.starAvatar : '',
                articles: result.articles
            }));
        } else {
            res.json();
        }
    }).catch(next);
};

/**
 * 星专题
 * @param  {[object]} req
 * @param  {[object]} res
 * @return {[type]}
 */
let special = (req, res, next) => {
    starModel.getSpecialData().then((result) => {
        const pageHeadTab = _.cloneDeep(headTab);

        pageHeadTab[1].cur = true;
        res.render('star/special', _.assign({
            page: 'special'
        }, _processPublicData(req, '星潮教室'), {
            resources: result,
            headTab: pageHeadTab,
            notIndex: true
        }));
    }).catch(next);
};


/**
 * 星搭配
 * @param  {[object]} req
 * @param  {[object]} res
 * @return {[type]}
 */
let collocation = (req, res) => {
    const pageHeadTab = _.cloneDeep(headTab);

    pageHeadTab[2].cur = true;
    res.render('star/collocation', _.assign({
        isStarDetailPage: true,
        page: 'collocation'
    }, _processPublicData(req, '星潮教室'), {
        headTab: pageHeadTab,
        notIndex: true
    }));
};

/**
 * 星搭配文章请求
 * @param  {[object]} req
 * @param  {[object]} res
 * @return {[type]}
 */
let collocationList = (req, res, next) => {
    let params = req.query;
    let uid = req.cookies.guangStarUid || 0; // 客户端访问,不能使用 cookie

    starModel.getCollocationListData(params, uid).then((result) => {
        res.render('star/list', _.assign({
            layout: false,
            params: params,
            list: result,
            isApp: req.query.app_version || req.query.appVersion || false
        }));
    }).catch(next);
};

/**
 * 收藏文章
 * @param  {[type]} req [description]
 * @param  {[type]} res [description]
 * @return {[type]}
 */
let setFavorite = (req, res, next) => {
    let uid = req.cookies.guangStarUid || 0;
    let params = {
        articleId: req.body.articleId,
        type: req.body.type
    };

    starModel.setFavorite(params, uid).then((result) => {
        if (result.code === 400) {
            if (req.body.pageType === '1') {
                let urlEncode = '\/guang\/star\/collocation';
                let url = '/guang/star/collocation';

                result.data = `${url}?openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"http:\/\/m.yohobuy.com${urlEncode}","param":{"from":"app"}},"requesturl":{"url":"","param":{}},"priority":"N"}}`; // eslint-disable-line
            } else {
                let urlEncode = '\/guang\/star\/detail';
                let url = `/guang/star/detail?tag=${req.body.tag}`;

                result.data = `${url}&openby:yohobuy={"action":"go.weblogin","params":{"jumpurl":{"url":"http:\/\/m.yohobuy.com${urlEncode}","param":{"from":"app","tag":"${req.body.tag}"}},"requesturl":{"url":"","param":{}},"priority":"N"}}`; // eslint-disable-line
            }
        }
        res.json(result);
    }).catch(next);
};

/**
 * 明星文章专区
 * @param  {[object]} req
 * @param  {[object]} res
 * @return {[type]}
 */
let detail = (req, res) => {
    res.render('star/detail', _.assign({
        isStarDetailPage: true,
        page: 'detail-list'
    }, _processPublicData(req, req.query.tag, false)));
};

/**
 * 明星专题文章请求
 * @param  {[object]} req
 * @param  {[object]} res
 * @return {[type]}
 */
let detailList = (req, res, next) => {
    let params = req.query;
    let uid = req.cookies.guangStarUid || 0;

    starModel.getDetailData(params, uid).then((result) => {
        res.render('star/list', _.assign({
            layout: false,
            params: params,
            list: result,
            isApp: req.query.app_version || req.query.appVersion || false
        }));
    }).catch(next);
};

module.exports = {
    index,
    getIndexHtml,
    special,
    collocation,
    collocationList,
    setFavorite,
    detail,
    detailList
};