chat.js 3.38 KB
'use strict';
const orderModel = require('../../home/models/order');
const crypto = global.yoho.crypto;
const imApi = require('../../serverAPI/im');
const imModel = require('../models/im');
const helpers = global.yoho.helpers;
const sign = global.yoho.sign;

exports.appAdapter = (req, res, next) => {
    if (req.yoho.isApp) {
        req.query.client_secret = req.yoho.client_secret;

        if (sign.checkSign(req.query)) {
            let uid = (req.query.uid || '').trim();

            req.user.uid = uid;
        }
    }

    next();
};

exports.page = (req, res) => {
    res.render('chat/index', {
        module: 'service',
        page: 'chat',
        pageStyle: 'service-chat',
        width750: true,
        localCss: true,
        imServer: global.yoho.config.domains.imServer,
        imSocket: global.yoho.config.domains.imSocket,
        userData: {
            uid: req.user.uid,
            encrypteduid: req.user.ENCRYPTION_UID || (crypto.encryption(null, req.user.uid + '' || '0')),
            avatar: helpers.image(req.user.AVATAR, 100, 100),
            uname: req.user.NAME
        }
    });
};

exports.getOrders = (req, res, next) => {
    orderModel.getOrders({
        type: req.query.type || 1,
        page: req.query.page || 1,
        gender: req.query.gender || '1,3',
        yh_channel: req.query.channel || 1,
        uid: req.user.uid
    }).then(result => {
        res.render('chat/chat-order', {
            layout: false,
            orders: result
        });
    }).catch(next);
};

/**
 *  获取历史消息
 *  Request:
 *
 */
exports.fetchHistory = (req, res) => {
    const uid = req.user.uid;
    const endTime = req.query.endTime;

    imApi.fetchImHistory(uid, endTime).then(result => {
        res.json(result);
    });
};


exports.msghistory = (req, res) => {
    const uid = req.user.uid;

    imApi.fetchImHistory(uid).then(result => {
        res.json(result);
    });
};

/**
 *  Request: 发表留言
 *  type: POST
 *  params:
 *      conversationId  会话id
 *      content    留言内容
 */
exports.saveMSG = (req, res) => {
    const uid = req.user.uid;
    const conversationId = req.body.conversationId;
    const content = req.body.content;

    imApi.saveMessage(uid, conversationId, content)
        .then(result => {
            res.json(result);
        });
};

/**
 *  Request:    获取订单
 *  type:   GET
 *
 *  TODO:
 *      1.  分页, 目前接口不支持
 *      2.  失败情况
 */
exports.fetchOrders = (req, res) => {
    const uid = req.user.uid;

    imApi.fetchOrderList(uid)
        .then(result => {
            imModel.handleOrderList(result.data);
            res.json(result);
        });
};

exports.saveEvalute = (req, res) => {
    const uid = req.user.uid;

    const conversationId = req.body.conversationId;
    const promoter = req.body.promoter;
    const stars = req.body.stars;

    imApi.saveEvalute(uid, conversationId, promoter, stars)
        .then(result => {
            return res.json(result);
        }, () => {
            return res.json({
                code: 500,
                message: '评价失败'
            });
        });
};


exports.queryGlobalOrder = (req, res) => {
    const uid = req.user.uid;

    let emptyOrder = {
        code: 200,
        data: []
    };

    imApi.queryGlobalOrder(uid)
        .then(result=> {
            res.json(result);
        }, () => {
            res.json(emptyOrder);
        });
};