admin.js 6.27 KB
/**
 * 文章controller
 * @author: leo <qi.li@yoho.cn>
 * @date: 23/06/2017
 */
const _ = require('lodash');
const moment = require('moment');
const AdminModel = require('../models/admin');

const POST_SUCCESS = '操作成功';
const INVALID_PARAMS = '参数错误';

const article = {
    /**
     * 首页
     * @param req
     * @param res
     */
    homePage(req, res) {
        res.render('home', {
            page: 'login',
            module: 'admin',
            bodyClass: 'nav-md'
        });
    },

    /**
     * 登录页
     * @param req
     * @param res
     */
    loginPage(req, res) {
        res.render('login', {
            layout: false,
            page: 'login',
            module: 'admin',
            bodyClass: 'login'
        });
    },

    login(req, res) {
        const userName = req.body.userName || '';
        const password = req.body.password || '';

        if (!userName || !password) {
            return res.json({
                code: 400,
                message: '请检查账号和密码'
            });
        }

        _.set(req.session, 'user.isAdmin', true);
        res.json({
            code: 200,
            message: '登录成功'
        });
    },

    /**
     * 登出
     * @param req
     * @param res
     */
    logout(req, res) {
        res.clearCookie('yoho_activity');
        res.clearCookie('yoho_activity.sig');
        res.json({
            code: 200,
            message: '登出成功'
        });
    },

    /**
     * 活动列表
     * @param req
     * @param res
     * @param next
     */
    activityList(req, res, next) {
        const title = req.body.title;
        const startTime = req.body.startTime;
        const endTime = req.body.endTime;

        if (!title || !startTime || !endTime) {
            return res.json({
                code: 400,
                message: INVALID_PARAMS
            });
        }

        const params = {
            title,
            startTime,
            endTime
        };

        req.ctx(AdminModel).createActivity(params)
            .then(() => {
                return res.json({
                    code: 200,
                    message: POST_SUCCESS
                });
            })
            .catch(next);
    },

    /**
     * 活动列表页
     * @param req
     * @param res
     * @param next
     */
    activityListPage(req, res, next) {
        const _timeFormat = (time) => {
            if (_.isNumber(time)) {
                time = moment.unix(time);
            }

            return moment(time).format('YYYY-MM-DD HH:mm:ss');
        };

        req.ctx(AdminModel).activityList()
            .then(result => {
                _.each(result, item => {
                    item.endTime = _timeFormat(item.endTime);
                    item.startTime = _timeFormat(item.startTime);
                    item.createTime = _timeFormat(item.createTime);
                });

                res.render('activity/list', {
                    bodyClass: 'nav-md',
                    activityList: result,
                    module: 'admin',
                    page: 'activity'
                });
            })
            .catch(next);
    },

    /**
     * 新建活动
     * @param req
     * @param res
     * @param next
     */
    createActivity(req, res, next) {
        const title = req.body.title;
        const startTime = req.body.startTime;
        const endTime = req.body.endTime;

        if (!title || !startTime || !endTime) {
            return res.json({
                code: 400,
                message: INVALID_PARAMS
            });
        }

        const params = {
            title,
            startTime,
            endTime
        };

        req.ctx(AdminModel).createActivity(params)
            .then(() => {
                return res.json({
                    code: 200,
                    message: POST_SUCCESS
                });
            })
            .catch(next);
    },

    /**
     * 新建活动页
     * @param req
     * @param res
     */
    createActivityPage(req, res) {
        res.render('activity/create', {
            bodyClass: 'nav-md',
            module: 'admin',
            page: 'activity'
        });
    },

    /**
     * 活动删除
     * @param req
     * @param res
     * @param next
     */
    deleteActivity(req, res, next) {
        const id = req.body.id;

        if (!id) {
            return res.json({
                code: 400,
                message: INVALID_PARAMS
            });
        }

        req.ctx(AdminModel).deleteActivity(id)
            .then(() => {
                return res.json({
                    code: 200,
                    message: POST_SUCCESS
                });
            })
            .catch(next);
    },

    /**
     * 活动文章列表
     * @param req
     * @param res
     * @param next
     */
    actArticleListPage(req, res, next) {
        const actId = req.query.actId;

        req.ctx(AdminModel).actArticleList(actId)
            .then(result => {
                res.render('activity/article-list', {
                    bodyClass: 'nav-md',
                    articleList: result,
                    module: 'admin',
                    page: 'activity'
                });
            })
            .catch(next);
    },

    /**
     * 删除文章
     * @param req
     * @param res
     * @param next
     */
    deleteArticle(req, res, next) {
        const id = req.body.id;

        if (!id) {
            return res.json({
                code: 400,
                message: INVALID_PARAMS
            });
        }

        req.ctx(AdminModel).deleteArticle(id)
            .then(() => {
                return res.json({
                    code: 200,
                    message: POST_SUCCESS
                });
            })
            .catch(next);
    },

    /**
     * 活动参与用户列表
     * @param req
     * @param res
     * @param next
     */
    activityUserListPage(req, res, next) {
        req.ctx(AdminModel).activityList()
            .then(result => {
                res.render('activity/user-list', {
                    bodyClass: 'nav-md',
                    activityList: result,
                    module: 'admin',
                    page: 'activity'
                });
            })
            .catch(next);
    }
};


module.exports = article;