comment.js 3.05 KB
/**
 *   comment controller
 *   @author 陈轩 <xuan.chen@yoho.cn>
 */

'use strict';

const logger = global.yoho.logger;
const commentModel = require('../models/comment');
const _ = require('lodash');
const moment = require('moment');
const uutils = require('../../common/models/utils');

// comment page
exports.index = (req, res, next) => {
    let uid = req.user.uid;
    let isComment = req.query.isComment;
    let page = req.query.page || 1;

    // 转string值为bool值
    isComment = isComment === 'Y';

    // uid = '20000318';
    // uid: 20000318  test1

    req.ctx(commentModel).getCommentList(uid, isComment, page)
        .then(data => {
            let localData = _.merge(data, {
                module: 'home',
                page: 'comment'
            });

            res.render('comment', localData);
        })
        .catch(next);
};

exports.commentList4Order = (req, res, next) => {
    let uid = req.user.uid;
    let orderId = req.query.orderId;

    // console.log(uid + '===' + orderId);
    req.ctx(commentModel).getCommentList4Order(uid, orderId)
        .then(data => {
            let result = _.merge({
                module: 'home',
                page: 'comment',
                isFromOrder: true
            }, data);

            res.render('comment', result);
        })
        .catch(next);
};

exports.saveComment = (req, res, next) => {
    // only ajax
    if (!req.xhr) {
        return;
    }

    // get post args
    let data = {
        uid: req.user.uid.toString(),
        orderCode: req.body.orderCode,
        productSkn: req.body.productSkn,
        productId: req.body.productId,
        content: req.body.content,
        goodsId: req.body.goodsId,
        orderId: req.body.orderId,
        erpSkuId: req.body.erpSkuId,
        anonymous: false, // 是否匿名评价
        satisfied: Number(req.body.satisfied),
        url: req.body.url,
        size: req.body.size,
        height: req.body.height ? Number(req.body.height) : '',
        weight: req.body.weight ? Number(req.body.weight) : ''
    };

    // console.log(JSON.stringify(data));

    req.ctx(commentModel).saveShareOrder(data)
        .then(result => {

            let ret = result;

            if (result && result.code === 200) {
                ret = {
                    code: 200,
                    comment: {
                        content: data.content,
                        createTime: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'),
                        satisfied: data.satisfied,
                        size: data.size,
                        sizeLabel: req.ctx(commentModel).sizeLabelMap[data.size],
                        url: uutils.getUploadImgAbsoluteUrl(data.url, 'sns'),
                        sourceUrl: uutils.getUploadImgAbsoluteUrl(data.url, 'sns'),
                        height: data.height,
                        weight: data.weight
                    }
                };
            }
            res.json(ret);
        })
        .catch(error => {
            logger.error(`home--comment: ${error}`);
            next();
        });
};