|
@ -245,7 +245,7 @@ class Sessions extends RedisModel {
|
|
|
* @param start_msg_id 消息会话最新的一条消息的ID
|
|
|
* @param end_msg_id 消息会话刚开始的消息ID
|
|
|
*/
|
|
|
getMessages(sessionId, user, start_msg_id, end_msg_id, page, pagesize) {
|
|
|
getMessages(sessionId, user, start_msg_id, end_msg_id, page, pagesize,isoffset) {
|
|
|
let self = this;
|
|
|
let message_timestamp_key = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId);
|
|
|
if (!start_msg_id && !end_msg_id) {
|
|
@ -261,7 +261,7 @@ class Sessions extends RedisModel {
|
|
|
return;
|
|
|
}
|
|
|
end_msg_id = res[0];
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, function (err, res) {
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize,isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
logger.error("getMessagesByPage error" + err);
|
|
|
ModelUtil.emitError(self.eventEmitter, err, err);
|
|
@ -278,7 +278,7 @@ class Sessions extends RedisModel {
|
|
|
return;
|
|
|
}
|
|
|
start_msg_id = res[0];
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, function (err, res) {
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize,isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
logger.error("getMessagesByPage error" + err);
|
|
|
ModelUtil.emitError(self.eventEmitter, err, err);
|
|
@ -294,7 +294,7 @@ class Sessions extends RedisModel {
|
|
|
return;
|
|
|
}
|
|
|
end_msg_id = res[0];
|
|
|
self.getMessagesByPage(sessionId, user, start_msg_id, end_msg_id, page, pagesize, function (err, res) {
|
|
|
self.getMessagesByPage(sessionId, user, start_msg_id, end_msg_id, page, pagesize,isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
logger.error("getMessagesByPage error" + err);
|
|
|
ModelUtil.emitError(self.eventEmitter, err, err);
|
|
@ -304,7 +304,7 @@ class Sessions extends RedisModel {
|
|
|
})
|
|
|
})
|
|
|
} else {
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, function (err, res) {
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize,isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
logger.error("getMessagesByPage error" + err);
|
|
|
ModelUtil.emitError(self.eventEmitter, err, err);
|
|
@ -326,17 +326,16 @@ class Sessions extends RedisModel {
|
|
|
* @param size 必选。页面大小
|
|
|
* @param handler 必选。回调
|
|
|
*/
|
|
|
getMessagesByPage(sessionId, userId, startMsgId, endMsgId, page, size, handler) {
|
|
|
getMessagesByPage(sessionId, userId, startMsgId, endMsgId, page, size,isoffset, handler) {
|
|
|
let messagesTimestampKey = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId);
|
|
|
let messagesKey = RedisModel.makeRedisKey(REDIS_KEYS.Messages, sessionId);
|
|
|
|
|
|
let participants = new Participants();
|
|
|
let offset = (page - 1 < 0 ? 0 : page - 1) * size;
|
|
|
let count = size;
|
|
|
if (page > 1 || startMsgId) {//翻页由于闭区间,需跳过本身数据
|
|
|
if (page > 1 ||isoffset==1) {//翻页由于闭区间,需跳过本身数据
|
|
|
offset += 1;
|
|
|
}
|
|
|
|
|
|
participants.existsParticipant(sessionId, userId, function (err, res) {
|
|
|
if (!res) {
|
|
|
handler(Error("User not found in session " + sessionId), null);
|
|
@ -453,7 +452,7 @@ class Sessions extends RedisModel {
|
|
|
|
|
|
let startMsgId = messageIds[0];
|
|
|
let endMsgId = messageIds[messageIds.length - 1];
|
|
|
self.getMessagesByPage(sessionId, userId, startMsgId, endMsgId, 0, messageIds.length, function (err, res) {
|
|
|
self.getMessagesByPage(sessionId, userId, startMsgId, endMsgId, 0, messageIds.length,0,function (err, res) {
|
|
|
if (err) {
|
|
|
ModelUtil.emitError(self.eventEmitter, err.message);
|
|
|
return;
|