| 
					
				 | 
			
			
				@ -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}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 |