| 
					
				 | 
			
			
				@ -16,6 +16,7 @@ const Commons = require('../../include/commons'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let configFile = require('../../include/commons').CONFIG_FILE; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let config = require('../../resources/config/' + configFile); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let SessionRepo = require('../../repository/mysql/session.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let ParticipantRepo = require('../../repository/mysql/participant.repo'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				let mongoose = require('mongoose'); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				class Sessions extends RedisModel { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -26,39 +27,57 @@ class Sessions extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 创建会话 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * type = 1 sessionid = md5(patientId); MUC 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * type  = 2 sessionId = hash(user1,user2); P2P 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * type = 3 sessionId = groupid; 团队群聊 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param sessionId 会话ID 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param name 会话名称 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param type 会话类型 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     * @param users 会话成员 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     */ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    createSession(sessionId, name, type, users) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (type == 2) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let self = this; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let createDate = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let session_key = super.makeRedisKey(RedisKeys.Session, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let participants = new Participants(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        // 将session加入redis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        participants.saveParticipantsToRedis(sessionId, users.split(","), createDate, function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (!res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                let messages = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                messages.senderId = "system"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                messages.senderName = "系统消息"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                messages.timestamp = createDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                messages.content = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                messages.contentType = "1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                self.updateLastContent(session_key, type, name, messages); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                self.saveSessionToMysql(sessionId, name, type, createDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                participants.saveParticipantsToMysql(sessionId, users.split(",")); //创建session成员到数据库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let _super = super.makeRedisKey; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        users = eval("["+users+"]")[0]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        if (type == 2) {//P2P消息用hash校验 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            var userArray=[]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            for(var key in users){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                userArray.push(key); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if(userArray.length>2){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": "会话人数超过2个无法创建P2P会话!"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                return false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            ParticipantRepo.findSessionIdByParticipantIds(userArray[0],userArray[0],function(err,res){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                sessionId = res; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                callcreate(sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        }else{ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            callcreate(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        function  callcreate(){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            let createDate = new Date(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            let session_key = _super(RedisKeys.Session, sessionId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            let participants = new Participants(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            // 将session加入redis 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            participants.saveParticipantsToRedis(sessionId, users, createDate, function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                if (!res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    modelUtil.emitData(self.eventEmitter, {"status": -1, "msg": res}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    let messages = {}; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    messages.senderId = "system"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    messages.senderName = "系统消息"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    messages.timestamp = createDate; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    messages.content = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    messages.contentType = "1"; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    self.updateLastContent(session_key, type, name, messages); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    modelUtil.emitData(self.eventEmitter, {"status": 200, "msg": "session create success!"}); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    self.saveSessionToMysql(sessionId, name, type, createDate); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                    participants.saveParticipantsToMysql(sessionId, users); //创建session成员到数据库 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            }) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				    /** 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@ -273,7 +292,7 @@ class Sessions extends RedisModel { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let message_id = mongoose.Types.ObjectId().toString(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let session_type = 0; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        let name = ""; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        participants.existsParticipant(sessionId, messages.senderId, function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				        participants.existsParticipant(sessionId, message.senderId, function (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            //校验发送成员是都在讨论组 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				            if (res) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                redis.hmgetAsync(session_key, ["type", "name"]).then(function (res) { 
			 |