|
@ -51,7 +51,6 @@ class Sessions extends RedisModel {
|
|
|
calllist(res[j],j,res.length);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
function calllist(session,j,_len){
|
|
|
let session_key =_super(RedisKeys.Session,session);
|
|
|
redis.hgetallAsync(session_key).then(function(res){
|
|
@ -113,33 +112,40 @@ class Sessions extends RedisModel {
|
|
|
let self = this;
|
|
|
let message_timestamp_key = super.makeRedisKey(RedisKeys.MessagesTimestamp,sessionId);
|
|
|
let message_key = super.makeRedisKey(RedisKeys.Messages,sessionId);
|
|
|
let participants = super.makeRedisKey(RedisKeys.Participants,sessionId);
|
|
|
let participants_key = super.makeRedisKey(RedisKeys.Participants,sessionId);
|
|
|
if(page>0){
|
|
|
page = page*pagesize;
|
|
|
pagesize = pagesize+page;
|
|
|
}
|
|
|
//倒序取出最后N条消息
|
|
|
redis.zrevrangeAsync(message_timestamp_key,page,pagesize).then(function(res){
|
|
|
//取出消息实体
|
|
|
if(res.length==0){
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":200,"data":[]});
|
|
|
return;
|
|
|
}
|
|
|
redis.hmgetAsync(message_key,res).then(function(messages) {
|
|
|
console.log(messages)
|
|
|
//将取到的消息返回给前端
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":200,"data":messages});
|
|
|
}).then(function(){
|
|
|
//更新患者最后一次获取消息的日期
|
|
|
redis.zaddAsync(participants, (new Date().getTime()),user).then(function(res){
|
|
|
console.log(res);
|
|
|
let participants = new Participants();
|
|
|
participants.existsUser(sessionId,user,function(res){
|
|
|
if(!res){
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":-1,"msg":"用户不在此会话中!"});
|
|
|
}else{
|
|
|
//倒序取出最后N条消息
|
|
|
redis.zrevrangeAsync(message_timestamp_key,page,pagesize).then(function(res){
|
|
|
//取出消息实体
|
|
|
if(res.length==0){
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":200,"data":[]});
|
|
|
return;
|
|
|
}
|
|
|
redis.hmgetAsync(message_key,res).then(function(messages) {
|
|
|
console.log(messages)
|
|
|
//将取到的消息返回给前端
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":200,"data":messages});
|
|
|
}).then(function(){
|
|
|
//更新患者最后一次获取消息的日期
|
|
|
redis.zaddAsync(participants_key, (new Date().getTime()),user).then(function(res){
|
|
|
console.log(res);
|
|
|
}).catch(function(res){
|
|
|
throw res;
|
|
|
})
|
|
|
})
|
|
|
}).catch(function(res){
|
|
|
throw res;
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":-1,"msg":res});
|
|
|
})
|
|
|
})
|
|
|
}).catch(function(res){
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":-1,"msg":res});
|
|
|
})
|
|
|
}
|
|
|
})
|
|
|
}
|
|
|
/**
|
|
|
* 更新最后一条消息
|
|
@ -169,32 +175,40 @@ class Sessions extends RedisModel {
|
|
|
|
|
|
saveMessageBySession(message,sessionId) {
|
|
|
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 = "";
|
|
|
let messages = new Messages();
|
|
|
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";
|
|
|
participants.existsUser(sessionId,messages.senderId,function(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.saveMessageForMysql(message,session_type,message_id,sessionId);
|
|
|
//返回数据给前端。
|
|
|
modelUtil.emitData(self.eventEmitter, {"status":200,"msg":"发送成功!"});
|
|
|
//消息推送
|
|
|
}).catch(function (res) {
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":-1,"msg":res});
|
|
|
})
|
|
|
}else{
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":-1,"msg":"用户不在此会话当中!"});
|
|
|
}
|
|
|
}).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.saveMessageForMysql(message,session_type,message_id,sessionId);
|
|
|
//返回数据给前端。
|
|
|
modelUtil.emitData(self.eventEmitter, {"status":200,"msg":"发送成功!"});
|
|
|
//消息推送
|
|
|
}).catch(function (res) {
|
|
|
modelUtil.emitData(self.eventEmitter,{"status":-1,"msg":res});
|
|
|
})
|
|
|
}
|
|
|
|