|  | @ -7,7 +7,7 @@ let RedisModel = require('./../redis.model.js');
 | 
	
		
			
				|  |  | let ModelUtil = require('../../util/model.util');
 | 
	
		
			
				|  |  | let RedisClient = require('../../repository/redis/redis.client.js');
 | 
	
		
			
				|  |  | let ParticipantRepo = require('../../repository/mysql/participant.repo');
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | let SessionRepo = require('../../repository/mysql/session.repo');
 | 
	
		
			
				|  |  | let log = require('../../util/log.js');
 | 
	
		
			
				|  |  | let redis = RedisClient.redisClient().connection;
 | 
	
		
			
				|  |  | 
 | 
	
	
		
			
				|  | @ -126,6 +126,7 @@ class Participants extends RedisModel {
 | 
	
		
			
				|  |  |                 handler(true);
 | 
	
		
			
				|  |  |             })
 | 
	
		
			
				|  |  |             .catch(function (ex) {
 | 
	
		
			
				|  |  |                 handler(false);
 | 
	
		
			
				|  |  |                 log.error("Save participants to redis failed: ", ex);
 | 
	
		
			
				|  |  |             });
 | 
	
		
			
				|  |  |     }
 | 
	
	
		
			
				|  | @ -147,7 +148,7 @@ class Participants extends RedisModel {
 | 
	
		
			
				|  |  |      * @param sessionId
 | 
	
		
			
				|  |  |      * @param userId
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     removeUser(sessionId, userId) {
 | 
	
		
			
				|  |  |     removeUser(sessionId, userId,handler) {
 | 
	
		
			
				|  |  |         let self = this;
 | 
	
		
			
				|  |  |         let participants_key = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipants, sessionId);
 | 
	
		
			
				|  |  |         let user_session_key = RedisModel.makeRedisKey(REDIS_KEYS.UsersSessions, userId);
 | 
	
	
		
			
				|  | @ -159,9 +160,15 @@ class Participants extends RedisModel {
 | 
	
		
			
				|  |  |             .execAsync()
 | 
	
		
			
				|  |  |             .then(function (res) {
 | 
	
		
			
				|  |  |                 self.deleteUserFromMysql(sessionId, userId);
 | 
	
		
			
				|  |  |                 if(handler){
 | 
	
		
			
				|  |  |                     handler(null,true);return;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 ModelUtil.emitOK(self.eventEmitter, {status:200,message:"成员删除成功!"});
 | 
	
		
			
				|  |  |             })
 | 
	
		
			
				|  |  |             .catch(function (err) {
 | 
	
		
			
				|  |  |                 if(handler){
 | 
	
		
			
				|  |  |                     handler(err,false);return;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 log.error("成员删除失败: ", err);
 | 
	
		
			
				|  |  |                 ModelUtil.emitError(self.eventEmitter, {status:-1,message: "成员删除失败: " + err});
 | 
	
		
			
				|  |  |             });
 | 
	
	
		
			
				|  | @ -187,19 +194,28 @@ class Participants extends RedisModel {
 | 
	
		
			
				|  |  |      * @param sessionId
 | 
	
		
			
				|  |  |      * @param user
 | 
	
		
			
				|  |  |      */
 | 
	
		
			
				|  |  |     addUser(sessionId, user) {
 | 
	
		
			
				|  |  |     addUser(sessionId, user,role,handler) {
 | 
	
		
			
				|  |  |         let self = this;
 | 
	
		
			
				|  |  |         let users = [user+":"+0];
 | 
	
		
			
				|  |  |         let users = [user+":"+role||0];
 | 
	
		
			
				|  |  |         Participants.saveParticipantsToRedis(sessionId, users, new Date(), function (res) {
 | 
	
		
			
				|  |  |             if (res) {
 | 
	
		
			
				|  |  |                 Participants.saveParticipantsToMysql(sessionId, users,function(err,res){
 | 
	
		
			
				|  |  |                     if(err){
 | 
	
		
			
				|  |  |                         if(handler){
 | 
	
		
			
				|  |  |                             handler(err,false);return;
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         ModelUtil.emitOK(self.eventEmitter, {status:-1,message: "成员添加失败"});
 | 
	
		
			
				|  |  |                     }else{
 | 
	
		
			
				|  |  |                         if(handler){
 | 
	
		
			
				|  |  |                             handler(null,true);return;
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                          ModelUtil.emitOK(self.eventEmitter, {status:200,message: "成员添加成功!"});
 | 
	
		
			
				|  |  |                     }
 | 
	
		
			
				|  |  |                 });
 | 
	
		
			
				|  |  |             } else {
 | 
	
		
			
				|  |  |                 if(handler){
 | 
	
		
			
				|  |  |                     handler(null,true);return;
 | 
	
		
			
				|  |  |                 }
 | 
	
		
			
				|  |  |                 ModelUtil.emitOK(self.eventEmitter, {status:-1,message: "成员添加失败"});
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         })
 | 
	
	
		
			
				|  | @ -213,6 +229,39 @@ class Participants extends RedisModel {
 | 
	
		
			
				|  |  |     deleteUserFromMysql(sessionId, user) {
 | 
	
		
			
				|  |  |         ParticipantRepo.deleteUserFromMysql(sessionId, user);
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  |     updateSessionUser(userId,oldUserId,sessionId){
 | 
	
		
			
				|  |  |         let self = this;
 | 
	
		
			
				|  |  |         let participantsRoleKey = RedisModel.makeRedisKey(REDIS_KEYS.SessionParticipantsRole, sessionId);
 | 
	
		
			
				|  |  |         SessionRepo.findOne(sessionId,function(err,res){
 | 
	
		
			
				|  |  |             if(err){
 | 
	
		
			
				|  |  |                 ModelUtil.emitOK(self.eventEmitter, {status:-1,message: "会话查询失败!"});
 | 
	
		
			
				|  |  |                 return;
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |             if(res.length!=1){
 | 
	
		
			
				|  |  |                 ModelUtil.emitOK(self.eventEmitter, {status:200,message: "用户未创建咨询!"});
 | 
	
		
			
				|  |  |                 return;
 | 
	
		
			
				|  |  |             }else{
 | 
	
		
			
				|  |  |                 let session = res[0];
 | 
	
		
			
				|  |  |                 redis.hgetAsync(oldUserId).then(function(role){
 | 
	
		
			
				|  |  |                     self.addUser(sessionId.userId,role,function(err,addResult){
 | 
	
		
			
				|  |  |                         if(err){
 | 
	
		
			
				|  |  |                             ModelUtil.emitOK(self.eventEmitter, {status:-1,message: "会话成员添加失败!"});
 | 
	
		
			
				|  |  |                             return;
 | 
	
		
			
				|  |  |                         }
 | 
	
		
			
				|  |  |                         self.removeUser(sessionId,oldUserId,function(err,res){
 | 
	
		
			
				|  |  |                             if(err){
 | 
	
		
			
				|  |  |                                 ModelUtil.emitOK(self.eventEmitter, {status:-1,message: "会话成员移除失败!"});
 | 
	
		
			
				|  |  |                                 return;
 | 
	
		
			
				|  |  |                             }else{
 | 
	
		
			
				|  |  |                                 ModelUtil.emitOK(self.eventEmitter, {status:200,message: "成员变更成功!"});
 | 
	
		
			
				|  |  |                             }
 | 
	
		
			
				|  |  |                         })
 | 
	
		
			
				|  |  |                     });
 | 
	
		
			
				|  |  |                 })
 | 
	
		
			
				|  |  |             }
 | 
	
		
			
				|  |  |         })
 | 
	
		
			
				|  |  |     }
 | 
	
		
			
				|  |  | }
 | 
	
		
			
				|  |  | 
 | 
	
		
			
				|  |  | // Expose class
 |