Browse Source

移除系统会话相关的消息统计和不在权限内的消息统计

8 years ago
parent
commit
c5505209e1
1 changed files with 38 additions and 18 deletions
  1. 38 18
      src/server/models/sessions/sessions.js

+ 38 - 18
src/server/models/sessions/sessions.js

@ -496,7 +496,7 @@ class Sessions extends RedisModel {
                    return;
                }
                start_msg_id = res[0];
                self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, isoffset, function (err, res) {
                self.getMessagesByPage(sessionId, user, start_msg_id,end_msg_id , page, pagesize, isoffset, function (err, res) {
                    if (err) {
                        if (handler) {
                            handler(err, null);
@ -520,7 +520,7 @@ class Sessions extends RedisModel {
                    return;
                }
                end_msg_id = res[0];
                self.getMessagesByPage(sessionId, user, start_msg_id, end_msg_id, page, pagesize, isoffset, function (err, res) {
                self.getMessagesByPage(sessionId, user, end_msg_id,start_msg_id, page, pagesize, isoffset, function (err, res) {
                    if (err) {
                        if (handler) {
                            handler(err, null);
@ -596,26 +596,46 @@ class Sessions extends RedisModel {
                            handler(null, []);
                            return;
                        }
                        if(endMsgScore>startMsgScore){
                            redis.zrangebyscoreAsync(messagesTimestampKey, startMsgScore, endMsgScore, "limit", offset, count)
                                .then(function (res) {
                                    if (res.length == 0) {
                                        handler(null, []);
                                        return;
                                    }
                        // 从消息时间表中过滤出要获取的消息ID列表,倒序取出消息
                        redis.zrevrangebyscoreAsync(messagesTimestampKey, startMsgScore, endMsgScore, "limit", offset, count)
                            .then(function (res) {
                                if (res.length == 0) {
                                    handler(null, []);
                                    return;
                                }
                                    redis.hmgetAsync(messagesKey, res).then(function (messages) {
                                        handler(null, messages);
                                    }).then(function () {
                                        Sessions.updateParticipantLastFetchTime(sessionId, userId, new Date().getTime());
                                    })
                                })
                                .catch(function (err) {
                                    logger.error("Get message by page failed: ", err);
                                redis.hmgetAsync(messagesKey, res).then(function (messages) {
                                    handler(null, messages);
                                }).then(function () {
                                    Sessions.updateParticipantLastFetchTime(sessionId, userId, new Date().getTime());
                                    handler(err, false);
                                })
                            })
                            .catch(function (err) {
                                logger.error("Get message by page failed: ", err);
                        }else{
                            // 从消息时间表中过滤出要获取的消息ID列表,倒序取出消息
                            redis.zrevrangebyscoreAsync(messagesTimestampKey, startMsgScore, endMsgScore, "limit", offset, count)
                                .then(function (res) {
                                    if (res.length == 0) {
                                        handler(null, []);
                                        return;
                                    }
                                handler(err, false);
                            })
                                    redis.hmgetAsync(messagesKey, res).then(function (messages) {
                                        handler(null, messages);
                                    }).then(function () {
                                        Sessions.updateParticipantLastFetchTime(sessionId, userId, new Date().getTime());
                                    })
                                })
                                .catch(function (err) {
                                    logger.error("Get message by page failed: ", err);
                                    handler(err, false);
                                })
                        }
                    })
            }
        })