|  | @ -316,40 +316,57 @@ class Sessions extends RedisModel {
 | 
	
		
			
				|  |  |                     let sessionKey = RedisModel.makeRedisKey(REDIS_KEYS.Session, sessionId);
 | 
	
		
			
				|  |  |                     let participantsRoleKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipantsRole, sessionId);
 | 
	
		
			
				|  |  |                     let sessionParticipantsKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants, sessionId);
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                     let participantsKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants,sessionId);
 | 
	
		
			
				|  |  |                     redis.multi()
 | 
	
		
			
				|  |  |                         .hgetall(sessionKey)                       // 会话实体
 | 
	
		
			
				|  |  |                         .hget(participantsRoleKey, userId)         // 用户在此会话中的角色
 | 
	
		
			
				|  |  |                         .zscore(sessionParticipantsKey, userId)    // 用户在此会话中最后一次获取未读消息的时间
 | 
	
		
			
				|  |  |                         .zrange(participantsKey,0,-1)
 | 
	
		
			
				|  |  |                         .execAsync()
 | 
	
		
			
				|  |  |                         .then(function (res) {
 | 
	
		
			
				|  |  |                             let session = res[0];
 | 
	
		
			
				|  |  |                             let role = res[1];
 | 
	
		
			
				|  |  |                             let lastFetchTime = res[2];
 | 
	
		
			
				|  |  |                             let users = res[3];
 | 
	
		
			
				|  |  |                             let sessionName="";
 | 
	
		
			
				|  |  |                             let otheruserId ="";
 | 
	
		
			
				|  |  |                             if(session.type==SESSION_TYPES.P2P){
 | 
	
		
			
				|  |  |                                 for(var j in users){
 | 
	
		
			
				|  |  |                                     if(users[j]!=userId){
 | 
	
		
			
				|  |  |                                         otheruserId = users[j];
 | 
	
		
			
				|  |  |                                     }
 | 
	
		
			
				|  |  |                                 }
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                             if(!role)role =0;
 | 
	
		
			
				|  |  |                             if(!lastFetchTime)lastFetchTime=new Date().getTime();
 | 
	
		
			
				|  |  |                             console.log(lastFetchTime+":"+sessionId);
 | 
	
		
			
				|  |  |                                 // 计算未读消息数
 | 
	
		
			
				|  |  |                                 let messagesByTimestampKey = RedisModel.makeRedisKey(REDIS_KEYS.MessagesByTimestamp, sessionId);
 | 
	
		
			
				|  |  |                                 redis.zcountAsync(messagesByTimestampKey, lastFetchTime, new Date().getTime())
 | 
	
		
			
				|  |  |                                     .then(function (count) {
 | 
	
		
			
				|  |  |                                         sessionList.push({
 | 
	
		
			
				|  |  |                                             id: sessionId,
 | 
	
		
			
				|  |  |                                             name: session.name,
 | 
	
		
			
				|  |  |                                             create_date: session.create_date,
 | 
	
		
			
				|  |  |                                             last_content_type: session.last_content_type,
 | 
	
		
			
				|  |  |                                             last_content: session.last_content,
 | 
	
		
			
				|  |  |                                             sender_id: session.sender_id,
 | 
	
		
			
				|  |  |                                             type: session.type,
 | 
	
		
			
				|  |  |                                             sender_name: session.sender_name,
 | 
	
		
			
				|  |  |                                             unread_count: count,
 | 
	
		
			
				|  |  |                                             business_type: session.business_type,
 | 
	
		
			
				|  |  |                                             my_role: role
 | 
	
		
			
				|  |  |                                         });
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |                                         if (sessionId === sessionIds[sessionIds.length - 1]) {
 | 
	
		
			
				|  |  |                                             ModelUtil.emitOK(self.eventEmitter, sessionList);
 | 
	
		
			
				|  |  |                                         }
 | 
	
		
			
				|  |  |                                         if(!otheruserId)otheruserId=userId;
 | 
	
		
			
				|  |  |                                         ParticipantRepo.findNameById(otheruserId, function (err, res) {
 | 
	
		
			
				|  |  |                                             if((res&&res.length==0)||session.type!=SESSION_TYPES.P2P){
 | 
	
		
			
				|  |  |                                                 sessionName = session.name;
 | 
	
		
			
				|  |  |                                             }else{
 | 
	
		
			
				|  |  |                                                 sessionName = res[0].name;
 | 
	
		
			
				|  |  |                                             }
 | 
	
		
			
				|  |  |                                             sessionList.push({
 | 
	
		
			
				|  |  |                                                 id: sessionId,
 | 
	
		
			
				|  |  |                                                 name: sessionName,
 | 
	
		
			
				|  |  |                                                 create_date: session.create_date,
 | 
	
		
			
				|  |  |                                                 last_content_type: session.last_content_type,
 | 
	
		
			
				|  |  |                                                 last_content: session.last_content,
 | 
	
		
			
				|  |  |                                                 sender_id: session.sender_id,
 | 
	
		
			
				|  |  |                                                 type: session.type,
 | 
	
		
			
				|  |  |                                                 sender_name: session.sender_name,
 | 
	
		
			
				|  |  |                                                 unread_count: count,
 | 
	
		
			
				|  |  |                                                 business_type: session.business_type,
 | 
	
		
			
				|  |  |                                                 my_role: role
 | 
	
		
			
				|  |  |                                             });
 | 
	
		
			
				|  |  |                                             if (sessionId === sessionIds[sessionIds.length - 1]) {
 | 
	
		
			
				|  |  |                                                 ModelUtil.emitOK(self.eventEmitter, sessionList);
 | 
	
		
			
				|  |  |                                             }
 | 
	
		
			
				|  |  |                                         })
 | 
	
		
			
				|  |  |                                     })
 | 
	
		
			
				|  |  |                                 }).catch(function (err) {
 | 
	
		
			
				|  |  |                                     logger.error("Get sessions failed: ", ex);
 |