|
@ -10,6 +10,7 @@ let Messages = require('../messages/messages');
|
|
|
let Users = require('../user/users');
|
|
|
let Participants = require('./Participants');
|
|
|
let SessionRepo = require('../../repository/mysql/session.repo');
|
|
|
let TopicRepo = require('../../repository/mysql/topics.repo');
|
|
|
let ParticipantRepo = require('../../repository/mysql/participant.repo');
|
|
|
let MessageRepo = require('../../repository/mysql/message.repo');
|
|
|
|
|
@ -62,10 +63,10 @@ class Sessions extends RedisModel {
|
|
|
self.createSessionToRedis(sessionId, name, type, participantArray,messageId, function(err,res){
|
|
|
if(err){
|
|
|
if(handler){handler(err,null);return;};
|
|
|
ModelUtil.emitError(self.eventEmitter, {message:err}, null);
|
|
|
ModelUtil.emitError(self.eventEmitter, {message:err,status:-1}, null);
|
|
|
}else{
|
|
|
if(handler){handler(null,res);return;};
|
|
|
ModelUtil.emitOK(self.eventEmitter,res);
|
|
|
ModelUtil.emitOK(self.eventEmitter,{status:200,data:res});
|
|
|
}
|
|
|
});
|
|
|
}
|
|
@ -120,7 +121,7 @@ class Sessions extends RedisModel {
|
|
|
let message = {
|
|
|
sender_id: "system",
|
|
|
sender_name: "system",
|
|
|
content_type: 6,
|
|
|
content_type: 11,
|
|
|
content: "会话创建成功",
|
|
|
timestamp: createDate,
|
|
|
id:messageId
|
|
@ -140,7 +141,7 @@ class Sessions extends RedisModel {
|
|
|
redis.hmsetAsync(sessionKey, session).then(function(){
|
|
|
Participants.saveParticipantsToRedis(sessionId, participantArray, createDate, function (res) {
|
|
|
handler(null, session);
|
|
|
messages.saveMessageToRedisFromCreateSession(sessionId, messageId, message);
|
|
|
//messages.saveMessageToRedisFromCreateSession(sessionId, messageId, message);
|
|
|
});
|
|
|
})
|
|
|
}
|
|
@ -238,18 +239,15 @@ class Sessions extends RedisModel {
|
|
|
session.last_content = message.content;
|
|
|
|
|
|
session.last_content_type = message.content_type;
|
|
|
|
|
|
MessageRepo.save(message,type,messageId,sessionId,function(err,res){
|
|
|
SessionRepo.updateSessionLastStatus(message.sender_id,
|
|
|
message.sender_name,
|
|
|
message.timestamp,
|
|
|
message.content,
|
|
|
message.content_type,
|
|
|
sessionId, function (err, res) {
|
|
|
if (err) {handler(err,null);return;};
|
|
|
handler(null,session);
|
|
|
});
|
|
|
})
|
|
|
SessionRepo.updateSessionLastStatus(message.sender_id,
|
|
|
message.sender_name,
|
|
|
message.timestamp,
|
|
|
message.content,
|
|
|
message.content_type,
|
|
|
sessionId, function (err, res) {
|
|
|
if (err) {handler(err,null);return;};
|
|
|
handler(null,session);
|
|
|
});
|
|
|
}
|
|
|
}
|
|
|
|
|
@ -375,27 +373,43 @@ 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, isoffset) {
|
|
|
getMessages(sessionId, user, start_msg_id, end_msg_id, page, pagesize, isoffset,handler) {
|
|
|
let self = this;
|
|
|
let message_timestamp_key = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId);
|
|
|
if (!start_msg_id && !end_msg_id) {
|
|
|
redis.zrevrangeAsync(message_timestamp_key, 0, 0).then(function (res) {
|
|
|
if (res.length == 0) {
|
|
|
if(handler){
|
|
|
handler(null,res);
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, res);
|
|
|
return;
|
|
|
}
|
|
|
start_msg_id = res[0];
|
|
|
redis.zrangeAsync(message_timestamp_key, 0, 0).then(function (res) {
|
|
|
if (res.length == 0) {
|
|
|
if(handler){
|
|
|
handler(null,res);
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, res);
|
|
|
return;
|
|
|
}
|
|
|
end_msg_id = res[0];
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
if(handler){
|
|
|
handler(err,null);
|
|
|
return;
|
|
|
}
|
|
|
logger.error("getMessagesByPage error" + err);
|
|
|
ModelUtil.emitError(self.eventEmitter, err, err);
|
|
|
} else {
|
|
|
if(handler){
|
|
|
handler(null,res);
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, res);
|
|
|
}
|
|
|
})
|
|
@ -404,15 +418,27 @@ class Sessions extends RedisModel {
|
|
|
} else if (!start_msg_id) {
|
|
|
redis.zrevrangeAsync(message_timestamp_key, 0, 0).then(function (res) {
|
|
|
if (res.length == 0) {
|
|
|
if(handler){
|
|
|
handler(null,res);
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, res);
|
|
|
return;
|
|
|
}
|
|
|
start_msg_id = res[0];
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
if(handler){
|
|
|
handler(err,null);
|
|
|
return;
|
|
|
}
|
|
|
logger.error("getMessagesByPage error" + err);
|
|
|
ModelUtil.emitError(self.eventEmitter, err, err);
|
|
|
} else {
|
|
|
if(handler){
|
|
|
handler(null,res);
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, res);
|
|
|
}
|
|
|
})
|
|
@ -426,9 +452,17 @@ class Sessions extends RedisModel {
|
|
|
end_msg_id = res[0];
|
|
|
self.getMessagesByPage(sessionId, user, start_msg_id, end_msg_id, page, pagesize, isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
if(handler){
|
|
|
handler(err,null);
|
|
|
return;
|
|
|
}
|
|
|
logger.error("getMessagesByPage error" + err);
|
|
|
ModelUtil.emitError(self.eventEmitter, err, err);
|
|
|
} else {
|
|
|
if(handler){
|
|
|
handler(null,res);
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, res);
|
|
|
}
|
|
|
})
|
|
@ -436,9 +470,17 @@ class Sessions extends RedisModel {
|
|
|
} else {
|
|
|
self.getMessagesByPage(sessionId, user, end_msg_id, start_msg_id, page, pagesize, isoffset, function (err, res) {
|
|
|
if (err) {
|
|
|
if(handler){
|
|
|
handler(err,null);
|
|
|
return;
|
|
|
}
|
|
|
logger.error("getMessagesByPage error" + err);
|
|
|
ModelUtil.emitError(self.eventEmitter, err, err);
|
|
|
} else {
|
|
|
if(handler){
|
|
|
handler(null,res);
|
|
|
return;
|
|
|
}
|
|
|
ModelUtil.emitOK(self.eventEmitter, res);
|
|
|
}
|
|
|
})
|
|
@ -685,10 +727,20 @@ class Sessions extends RedisModel {
|
|
|
|
|
|
sendTopicMessages(topicId,message){
|
|
|
let self = this;
|
|
|
let topicKey = RedisModel.makeRedisKey(REDIS_KEYS.Topic, topicId);
|
|
|
redis.hgetallAsync(topicKey).then(function (topic) {
|
|
|
self.saveMessageBySession(topic.session_id,message);
|
|
|
})
|
|
|
TopicRepo.findAllByTopicId(topicId,function(err,res){
|
|
|
if(err||res.length==0){
|
|
|
ModelUtil.emitOK(self.eventEmitter, {status:-1,"message": "议题获取失败"});
|
|
|
return;
|
|
|
}
|
|
|
self.saveMessageByTopic(message,res[0].session_id,function(err,messageId){
|
|
|
if(err){
|
|
|
ModelUtil.emitOK(self.eventEmitter, {status:-1,"message":err});
|
|
|
}else{
|
|
|
message.id = messageId;
|
|
|
ModelUtil.emitOK(self.eventEmitter, {status:200,"message":"发送成功",data:message});
|
|
|
}
|
|
|
});
|
|
|
});
|
|
|
}
|
|
|
|
|
|
/**
|