article.js 2.99 KB
/**
 * 文章controller
 * @author: leo <qi.li@yoho.cn>
 * @date: 23/06/2017
 */
const ArticleModel = require('../models/article');

const ADD_ARTICLE_SUCCESS = '文章发表成功';
const GET_ARTICLES_SUCCESS = '获取文章列表成功';
const GET_ARTICLE_SUCCESS = '获取文章详情成功';
const INVALID_ACTIVITY_ID = '活动ID[actId]不能为空';
const INVALID_IMG = '图片[imgUrl]不能为空';
const INVALID_CONTENT = '内容[content]都不能为空';
const MISS_PARAMS = '缺少参数';

const article = {
    /**
     * 文章列表
     * @param req
     * @param res
     */
    list(req, res) {
        const query = req.query;
        const pageNo = query.pageNo || 1;
        const pageSize = query.pageSize || 10;
        const isPopular = query.isPopular || false;
        const order = query.order || 'desc';
        const orderBy = query.orderBy || 'create_time';

        req.ctx(ArticleModel).articleList({
            order,
            orderBy,
            pageNo,
            pageSize,
            isPopular
        })
        .then(result => {
            res.json({
                code: 200,
                data: result,
                message: GET_ARTICLES_SUCCESS
            });
        });

    },

    /**
     * 发布文章
     * @param req
     * @param res
     */
    publish(req, res) {
        let errorMsg = '';
        const actId = req.body.actId;
        const imgUrl = req.body.imgUrl;
        const content = req.body.content;

        !imgUrl && (errorMsg = INVALID_IMG);
        !content && (errorMsg = INVALID_CONTENT);
        !actId && (errorMsg = INVALID_ACTIVITY_ID);

        if (errorMsg) {
            return res.json({
                code: 400,
                message: errorMsg
            });
        }

        const params = {
            actId,
            imgUrl,
            content
        };

        req.ctx(ArticleModel).createArticle(params)
            .then((id) => {

                req.ctx(ArticleModel).insertArticleImg(id, imgUrl)
                    .then(() => {
                        res.json({
                            code: 200,
                            data: {id},
                            message: ADD_ARTICLE_SUCCESS
                        });
                    });
            });
    },

    /**
     * 查询单个article详情
     * @param req
     * @param res
     */
    querySingle(req, res) {
        let errorMsg = '';
        const actId = req.query.actId;
        const articleId = req.query.articleId;

        !actId && (errorMsg = MISS_PARAMS);
        !articleId && (errorMsg = MISS_PARAMS);

        if (errorMsg) {
            return res.json({
                code: 400,
                message: errorMsg
            });
        }

        req.ctx(ArticleModel).getSingleArticle(actId, articleId)
            .then(ret => {
                res.json({
                    code: 200,
                    data: ret,
                    message: GET_ARTICLE_SUCCESS
                });
            });
    }
};


module.exports = article;