|
@ -36,11 +36,11 @@ class Sessions extends RedisModel {
|
|
|
* @param type 会话类型
|
|
|
* @param users 会话成员
|
|
|
*/
|
|
|
createSession(sessionId, name, type, users) {
|
|
|
createSession(sessionId, name, type, users,handler) {
|
|
|
let self = this;
|
|
|
let _super = super.makeRedisKey;
|
|
|
users = eval("["+users+"]")[0];
|
|
|
if (type == 2) {//P2P消息用hash校验
|
|
|
if (type == config.sessionConfig.P2P) {//P2P消息用hash校验
|
|
|
var userArray=[];
|
|
|
for(var key in users){
|
|
|
userArray.push(key);
|
|
@ -73,7 +73,11 @@ class Sessions extends RedisModel {
|
|
|
messages.content = "";
|
|
|
messages.contentType = "1";
|
|
|
self.updateLastContent(session_key, type, name, messages);
|
|
|
ModelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"});
|
|
|
if(config.sessionConfig.MUC==type){
|
|
|
handler(true);
|
|
|
}else {
|
|
|
modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"});
|
|
|
}
|
|
|
self.saveSessionToMysql(sessionId, name, type, createDate);
|
|
|
participants.saveParticipantsToMysql(sessionId, users); //创建session成员到数据库
|
|
|
}
|
|
@ -322,7 +326,50 @@ class Sessions extends RedisModel {
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 保存消息
|
|
|
*
|
|
|
* @param message
|
|
|
* @param sessionId
|
|
|
*/
|
|
|
saveMessageByTopic(message, sessionId,handler) {
|
|
|
let self = this;
|
|
|
let messages = new Messages();
|
|
|
let participants = new Participants();
|
|
|
let session_key = super.makeRedisKey(RedisKeys.Session, sessionId);
|
|
|
let message_id = mongoose.Types.ObjectId().toString();
|
|
|
let session_type = 0;
|
|
|
let name = "";
|
|
|
participants.existsParticipant(sessionId, message.senderId, function (err,res) {
|
|
|
//校验发送成员是都在讨论组
|
|
|
if (res) {
|
|
|
redis.hmgetAsync(session_key, ["type", "name"]).then(function (res) {
|
|
|
session_type = res[0];
|
|
|
name = res[1];
|
|
|
if (!session_type || !name) {
|
|
|
log.error("session is error for key " + session_key);
|
|
|
throw "session is not found";
|
|
|
}
|
|
|
}).then(function (res) {
|
|
|
//更新消息相关
|
|
|
return messages.saveMessageForRedis(message_id, sessionId, message);
|
|
|
}).then(function (res) {
|
|
|
//更新session的最后一条聊天记录
|
|
|
return self.updateLastContent(session_key, session_type, name, message);
|
|
|
}).then(function (res) {
|
|
|
//操作mysql数据库
|
|
|
messages.saveMessageToMysql(message, session_type, message_id, sessionId);
|
|
|
//返回数据给前端。
|
|
|
handler(null,message_id)
|
|
|
//消息推送
|
|
|
}).catch(function (res) {
|
|
|
handler(res,message_id)
|
|
|
})
|
|
|
} else {
|
|
|
handler( "用户不在此会话当中!",message_id);
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
/**
|
|
|
* 置顶操作
|
|
|
*/
|