浏览代码

增加会话未读消息数接口

Sand 8 年之前
父节点
当前提交
e1fb3079e8

+ 88 - 56
src/server/endpoints/v2/session.endpoint.js

@ -86,62 +86,6 @@ router.get("/", function (req, res) {
    sessions.getUserSessions(userId, page, size);
});
/**
 * 发送消息
 *
 * 请求URL:
 *  /sessions/:session_id/messages
 *
 * 消息体:
 *  {
 *      sender_id: bea851fc,
 *      sender_name: 李毅,
 *      content_type: 1,
 *      content: 李医生,你好
 *  }
 */
router.post(APIv2.Sessions.Messages, function (req, res) {
    let payload = req.body;
    let testing = ObjectUtil.fieldsCheck(payload, "sender_id", "sender_name", "content_type", "content");
    if (!testing.pass) {
        throw {httpStatus: 406, message: testing.message}
    }
    let sessions = new Sessions();
    ControllerUtil.regModelEventHandler(sessions, res);
    payload.timestamp = new Date();
    sessions.saveMessageBySession(req.params.session_id, payload);
});
/**
 * 获取消息
 *
 * 请求URL:
 *  /sessions/:session_id/messages?session_id=blabla&user_id=abc&start_message_id=100&end_message_id=20
 */
router.get(APIv2.Sessions.Messages, function (req, res) {
    let page = req.query.page;
    let size = req.query.size;
    let user = req.query.user;
    let sessionId = req.query.sessionId;
    if (!page) {
        throw {httpStatus: 406, message: 'Missing page.'};
    }
    if (!size) {
        throw {httpStatus: 406, message: 'Missing size.'};
    }
    if (!user) {
        throw {httpStatus: 406, message: 'Missing user.'};
    }
    if (!sessionId) {
        throw {httpStatus: 406, message: 'Missing sessionId.'};
    }
    let sessions = new Sessions();
    ControllerUtil.regModelEventHandler(sessions, res);
    sessions.getMessages(sessionId, user, page, size);
});
/**
 * 某个聊天记录置顶操作
 *
@ -218,4 +162,92 @@ router.put(APIv2.Sessions.Participant, function (req, res) {
    participants.pushUser(sessionId, user);
});
/**
 * 发送消息
 *
 * 请求URL:
 *  /sessions/:session_id/messages
 *
 * 消息体:
 *  {
 *      sender_id: bea851fc,
 *      sender_name: 李毅,
 *      content_type: 1,
 *      content: 李医生,你好
 *  }
 */
router.post(APIv2.Sessions.Messages, function (req, res) {
    let payload = req.body;
    let testing = ObjectUtil.fieldsCheck(payload, "sender_id", "sender_name", "content_type", "content");
    if (!testing.pass) {
        throw {httpStatus: 406, message: testing.message}
    }
    let sessions = new Sessions();
    ControllerUtil.regModelEventHandler(sessions, res);
    payload.timestamp = new Date();
    sessions.saveMessageBySession(req.params.session_id, payload);
});
/**
 * 获取消息
 *
 * 请求URL:
 *  /sessions/:session_id/messages?session_id=blabla&user_id=abc&start_message_id=100&end_message_id=20
 */
router.get(APIv2.Sessions.Messages, function (req, res) {
    let page = req.query.page;
    let size = req.query.size;
    let user = req.query.user;
    let sessionId = req.query.sessionId;
    if (!page) {
        throw {httpStatus: 406, message: 'Missing page.'};
    }
    if (!size) {
        throw {httpStatus: 406, message: 'Missing size.'};
    }
    if (!user) {
        throw {httpStatus: 406, message: 'Missing user.'};
    }
    if (!sessionId) {
        throw {httpStatus: 406, message: 'Missing sessionId.'};
    }
    let sessions = new Sessions();
    ControllerUtil.regModelEventHandler(sessions, res);
    sessions.getMessages(sessionId, user, page, size);
});
/**
 * 获取所有会话未读消息数。
 *
 * 请求URL:/sessions/unread_message_count?user_id=xyz
 */
router.get(APIv2.Sessions.SessionsUnreadMessageCount, function (req, res) {
   let userId = req.query.user_id;
   let sessions = new Sessions();
   ControllerUtil.regModelEventHandler(sessions, res);
   sessions.getAllSessionsUnreadMessageCount();
});
/**
 * 获取指定会话未读消息数
 *
 * 请求URL
 * /sessions/:session_id/unread_message_count?user_id=xyz
 */
router.get(APIv2.Sessions.SessionUnreadMessageCount, function (req, res) {
    let sessionId = req.params.session_id;
    let userId = req.query.user_id;
    let sessions = new Sessions();
    ControllerUtil.regModelEventHandler(sessions, res);
    sessions.getSessionUnreadMessageCount(sessionId, userId);
});
module.exports = router;

+ 12 - 0
src/server/models/sessions/sessions.js

@ -287,6 +287,18 @@ class Sessions extends RedisModel {
        }
    }
    getAllSessionsUnreadMessageCount(){}
    /**
     * 获取会话的未读消息数。
     *
     * @param sessionId
     * @param userId
     */
    getSessionUnreadMessageCount(sessionId, userId){
    }
    /**
     * 保存消息。
     *

+ 4 - 2
test/client/im.client.session.p2p.Test.js

@ -129,12 +129,14 @@ describe("Session P2P", function () {
                    assert.ok(isPass, "Get sessions with doctor failed.");
                    // 读取未读消息数
                    imClient.Sessions.getSessionUnreadMessageCount(TD.SessionId, TD.P2P.DoctorB,
                    imClient.Sessions.getSessionUnreadMessageCount(TD.SessionId, TD.P2P.DoctorB.id,
                        function (data) {
                            assert.strictEqual(data.count, TD.UnreadMessageCount, "Get unread message count failed.");
                            done();
                        },
                        function (xhr, status, error) {
                            assert(false, xhr.responseJSON.message);
                            done();
                        });
                },
                function (xhr, status, error) {